Encoreは、TypeScriptやGoのSDKでデータベースやPub/Subなどのインフラをコードとして宣言し、CLIでローカル実行してからAWSやGCPへ自動デプロイするオープンソース基盤です。リポジトリにはCLI本体に加えてCLIデーモン、Rust製のTSパーサー、MCPツール群が含まれ、AIコーディングエージェントとの連携も前提に作られています。
SQLDatabaseやTopicやBucketなどのクラスをSDKからインポートし、宣言するだけでアプリケーショングラフのノードになります。`encore run`を叩くとcli/cmd/encoreのコマンドがcli/daemonのバックグラウンドデーモンへ指示を送ります。続いてdaemon/sqldb/docker.goはPostgresコンテナを起動し、daemon/pubsub/nsq.goはNSQを、daemon/redis.goはRedisを立ち上げます。TypeScriptのソース解析はswcベースのRust製tsparserが担い、Cargo.tomlのワークスペースにはruntimes/coreやsupervisorなどのRustクレートが含まれています。取得したグラフはcli/daemon/dashのローカルダッシュボードや、trace2/sqliteのトレース記録へ渡されます。デプロイ時はgit-remote-encore経由でpushすると、プラットフォーム側がグラフとクラウド環境を比較し、不足リソースをAWSやGCPに構築します。さらにcli/daemon/mcp以下にはapi_tools.goやdb_tools.goなどのMCPツールが実装され、AIエージェントがAPIやDBやトレースを操作できる窓口になっています。
- STEP 01
インストールスクリプトでencore CLIを導入し、`encore app create`を実行すると対話式のTUIが起動し、言語やテンプレートの選択とアプリ名の入力を求められます。
- STEP 02
`encore run`を実行すると、cli/daemonのバックグラウンドデーモンがDocker経由でPostgresコンテナを立ち上げ、起動ログに各サービスの状態が流れます。
- STEP 03
ブラウザでlocalhost:9400のローカルダッシュボードを開くと、サービス間呼び出しの依存グラフと分散トレーシングの画面が表示されます。
- STEP 04
コードを編集するとcli/daemon/run/watch.goのファイル監視でホットリロードがかかり、再実行のたびにトレースが新しく記録されます。
- STEP 05
クラウドへのデプロイを試すと`encore app create`時にEncore Cloudアカウントへのログインを促す画面が出て、未ログインだと先に進めません。
- STEP 06
MCPを有効にしたエディタからcli/daemon/mcp以下のツールを呼ぶと、APIやDBのスキーマやログをエージェントが直接取得できます。
手元で得られるのは、実物のPostgresやNSQやRedisが動くローカル開発環境と、サービス依存グラフとトレースを見せるダッシュボードです。コード上の宣言からインフラが自動構築される過程と、MCPツールでAIエージェントがAPIやDBを操作できる仕組みをソースから確認できます。ただしAWSやGCPへの実デプロイ結果はEncore Cloudアカウントとクラウド認証が必要なため、OSS部分だけでは最後まで到達できません。
本体はGoとRustの混成で、tsparserやruntimes/coreなどのRustクレートも含むため、ビルド環境の構築はdevcontainer前提でやや重めです。
本番相当のクラウド構築まで検証するにはEncore Cloudアカウントの作成とAWSまたはGCPの認証設定が必須で、CLI単体では完結しません。
ローカルのPub/SubはNSQ、キャッシュはRedisで代替しており、README記載の本番サービスであるSNS+SQSやElastiCacheとは挙動差が残る可能性があります。
バックエンドのインフラ定義をコードに統合し、ローカルで即検証してからクラウドへ出したいチームや、AIエージェントに実インフラを触らせたい開発者に向きます。cli/daemon/mcp以下のapi_tools.goやdb_tools.goなど実装済みのMCPツール群、sqldb/docker.goやpubsub/nsq.goといった具体的なローカルインフラ構築コードがソースから確認できるため、README記載の挙動は絵空事ではないと判断できます。一方でクラウド部分の最終結果はアカウントと認証が前提となり、この場では直接確認できていません。