crosscode-cli について
crosscode-cli は、コーディングエージェントを使うチーム向けに、同じブランチの Git 作業ツリー間で追跡対象ファイルを同期します。バックグラウンドデーモンが競合のない変更を自動適用し、競合はエージェントに渡します。
主な機能
- 01追跡対象ファイルのリアルタイム同期
- 02競合のない変更の自動適用
- 03マージ競合のエージェントへの引き渡し
- 04シークレットと未追跡ファイルの除外
- 05同期の一時停止と再開
活用シーン
- 01別々の作業ツリーで同じブランチを編集
- 02チームの作業ファイルを同期
- 03コーディングエージェントによる同一行編集の解決
- 04リベースや一括変更中の同期停止
MCP 対応
ステータス、競合の確認と解決、同期の一時停止・再開を行う標準 stdio MCP サーバーを備えています。`crosscode start` は作業ツリーへの設定とエージェント向けガイダンスの導入を行い、Claude Code と Codex には編集前フックも追加します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
crosscode
マルチプレイヤーのエージェント型コーディング。
エージェント型の時代に、他の人とのコーディングをリアルタイムで同期します。あなたがファイルを編集すると、相手のチェックアウトが数秒以内に更新されます。相手が編集すれば、あなたのチェックアウトも更新されます。誰もボタンを押す必要はなく、誰も見張る必要もありません。
abdullah sultan が開発
node 24 と git チェックアウトがあれば使えます。デプロイは不要です。
インストールプロンプトを、すでに開いているコーディングエージェントに貼り付ければ、あとは自動で設定されます。自分で入力する場合は、こちらをどうぞ。
npm install -g crosscode-cli
すでに使っているエージェントで動作
claude code · codex cli · opencode · cursor
gemini cli vs code amp cline zed windsurf + 任意の mcp クライアント
重要
crosscode-cliは npm からインストールでき、その基盤となる同期エンジン(シャドウ参照、三者間マージ、編集中ファイルの保留、オフライン後の追いつき処理)は実装・テスト済みです。実行するコマンドは編集前フックが登録し、デーモンは現在チェックアウトしているブランチでのコミットやプルを検知します。同期はチェックアウトごとにオプトインでき、共有しているブランチの追跡対象ファイルが対象です。これらのファイルはエンドツーエンドで暗号化されず、ホスト型サービスを経由して中継されます。詳しくはdocs/privacy.mdをご覧ください。PLAN.mdでは完了した作業を追跡しています。
動作の仕組み
双方が通常の git チェックアウトで作業します。各チェックアウトで動作する小さなバックグラウンドデーモンが、編集が落ち着いたことを検知すると、そのファイルだけを同じブランチにいる相手へ送り、相手の変更を同じ方法であなたの作業ツリーに適用します。コミット、ブランチ、プッシュは純粋な git のままです。crosscode が触れるのは未コミットの作業ツリーファイルだけで、あなたやエージェントが直近数秒以内に編集したファイルには触れません。
中断が発生するのは、本当に判断が必要な場合だけです。双方が同じファイルの同じ行を変更した場合、その変更箇所の三者分の内容とともに、あなた自身のコーディングエージェントに渡され、エージェントが修正します。crosscode が変更を評価したり、リスクを分類したり、コードをレビューしたりすることはありません。適切な情報を適切なタイミングで届け、作業はエージェントが行います。
ウェブアプリも、ダッシュボードも、UI もありません。CLI コマンドが5つ、MCP ツールが4つ、スキルが1つあり、どのエージェントを使っても読み込めるように2か所にインストールされます。
機能
|
### デフォルトでは通知なし
競合なく適用された編集は、プロンプトも差分も通知もなく、作業ツリーに書き込まれます。実際の使用の約95%はこれに当たります。 |
競合はエージェントに渡されます同じ行での衝突は、 |
基盤は純粋な Git最後に合意した状態は、1つの参照 |
1つのコマンドで取り消しcrosscode が書き込んだ内容はすべて、 |
MCP ネイティブ標準の stdio MCP サーバーなので、インストールが必要なエディター拡張機能はありません。claude code と codex には、編集前フックも提供されます。 |
シークレットは決して移動しませんGit で追跡されている場合でも、キャプチャ前に除外されます: |
ネットワークが切れても動作デーモンはオフラインでもキャプチャを続け、カーソル位置から追いつきます。履歴は約7日間保持され、それを過ぎるとレプリカは全コンテンツから再同期されます。 |
2行でオンボーディング
|
クイックスタート
すでに開いているエージェントにセットアップを任せてください。インストール用プロンプトを claude code、codex cli、opencode、cursor、または MCP 対応エージェントに貼り付けると、CLI をインストールし、チェックアウト内で crosscode start を実行して、独自の MCP 設定を構成します。codex cli の設定は TOML 形式で、start では書き込まれないため、codex のユーザーは3行のエントリーを手動で追加します。MCP クライアントのセットアップを参照してください。
または、同じ操作を自分で実行します:
npm install -g crosscode-cli
cd your-repo
crosscode start
公開パッケージは crosscode-cli で、2つのバイナリ crosscode(CLI)と crosscode-mcp(MCP サーバーおよび編集前フック)が含まれています。
crosscode start はセットアップ全体を行い、再実行しても安全です。GitHub にサインインし、このチェックアウトをプロジェクトに関連付け、バックグラウンドデーモンを起動し、MCP サーバー、crosscode スキル、スキルではなくそれを読むエージェント向けの AGENTS.md 内の対応するブロック、およびコーディングエージェント用の編集前フックをインストールします。その後、新しい MCP サーバーを認識させるため、エージェントを再起動してください。
サインインすると URL と短い確認コードが表示され、入力を待ちます。URL を開いて GitHub にサインインし、コードを入力してください。お使いのマシンでコールバックサーバーが待ち受けることも、ターミナルに何かを貼り戻すこともありません。リモートシェルでは、--no-browser を指定すると URL が開かずに表示されます。
チームメイトを招待するには:
crosscode invite # prints https://www.getcrosscode.dev/join/7f3a9c2e
リンクを開いて GitHub にサインインすると、ページに貼り付ける2行が表示されます:
git clone [email protected]:acme/app.git && cd app
crosscode join CC-7F3A-9C2E
オンボーディングに必要なのはこれだけです。あとは、両方のチェックアウトが同期されます。
残りのコマンドは2つだけです:
crosscode status # branch, connected, paused, who else is on this branch
crosscode stop # stop syncing this checkout
MCP サーバーの設定
crosscode start が設定を自動で書き込みます。手動で追加する場合は、チェックアウトのルートにある .mcp.json(Claude Code)、.cursor/mcp.json(Cursor)、または .gemini/settings.json(Gemini CLI)に記述してください。
{
"mcpServers": {
"crosscode": {
"command": "crosscode-mcp",
"args": []
}
}
}
サーバーは stdio 経由で MCP を使用し、作業ディレクトリからチェックアウトを検出するため、cwd をチェックアウトのルートに設定して起動してください。Codex CLI の設定は TOML 形式で、OpenCode は独自の形式を使用します。どちらも MCP クライアントとフックに記載されています。
ツール
ツールは4つで、5つ目が追加されることはありません。
| ツール | 機能 |
|---|---|
status | このチェックアウトの同期状態を表示します。ブランチ、接続状態、一時停止の状態、ほかのメンバーが作業している内容を確認できます。読み取り専用です。 |
conflicts | 未解決の同期コンフリクトを一覧表示します。それぞれについて、3方向マージ用の ours/theirs/ancestor のテキストを示します。 |
resolve | マージ済みのファイル内容を指定して、1つのコンフリクトを解決します。ファイルはディスクに書き込まれ、チームに再公開されます。 |
pause | リベース、二分探索、または一括書き換えのために、このチェックアウトの同期を一時停止または再開します。 |
どのツールの応答にも、要求されたかどうかにかかわらず、保留中のコンフリクトが含まれます。それぞれの概要、対象ファイル、発生してからの経過時間が示され、マージ用のテキストは conflicts を呼び出すだけで確認できます。入力・出力スキーマを含む全カタログは、MCP クライアントとフックに記載されています。
同期されるものと、決して同期されないもの
ルームの外に出るのは、同期対象のファイルだけです。共有中のブランチで編集した追跡対象ファイルから、厳格な拒否リストに該当するものを除いたものです。未追跡ファイルはそのまま残り、コミット、ブランチ、インデックス、スタッシュ、リモートには一切触れないため、crosscode がリモートにプッシュすることはありません。crosscode を停止または削除しても、リポジトリは元のまま通常の Git リポジトリとして使えます。
これらのファイルはエンドツーエンドで暗号化されるのではなく、ホスト型の調整サービスを介して中継されるため、本番環境へのアクセス権を持つ人が内容を読める可能性があります。docs/privacy.mdには、サービスが保存するデータとその保存期間がすべて記載されています。また、docs/security.mdには脅威モデルが記載されています。
適用ルール
1つの Git ref が大部分の処理を担います。refs/crosscode/shadow は、双方が最後に合意した状態のツリーを持つコミットを指します。この ref をもとに、マージベース、「同期後に自分が編集したかどうか」の確認、取り消し、Git 独自のオブジェクトストアでのコンテンツ保存を行います。
同期単位は1つのファイルです。{ path, op, baseHash, contentHash, content-or-patch }。バンドルもライフサイクルも、承認や拒否もありません。パス P への変更を受信した場合、L はローカルディスク上の状態、S はシャドウの状態です。
L == Sかつ送信側がSから構築した場合:サイレントに書き込みます。- それ以外の場合は、送信側のベースを使って3方向マージを行います。コンフリクトがなければサイレントに書き込みます。コンフリクトがあれば、エージェントに通知します。
- ベースの blob が実際に失われている場合に限り、カーソルから追いつかせて再試行します。
バイナリはマージされないため、バイナリを同時に編集すると必ずコンフリクトになります。コンフリクトが発生したパスは、解決されるまで隔離され、公開も適用もされません。
見えない状態を保つためのルール:
- あなたまたはエージェントが直近約10秒以内に触れたファイルには、書き込みません。
- リベース、マージ、二分探索の実行中は同期しません。一時停止してから再同期してください。
- 同期するのは同じブランチに限ります。ブランチが異なる場合は、同期を意図していないとみなします。
- すべて1つのコマンドで取り消せます。
料金
すべて永久に無料です。CLI は MIT ライセンスで、ホスト型サービスも無料です。有料プラン、ティア、シート数、使用制限、期限切れになるトライアルはなく、支払い情報も収集されません。docs/terms.mdをご覧ください。
エージェントが目にするもの
4 つの MCP ツール、status、conflicts、resolve、pause と、それらの使い方、そして何より、使わずにおくべき場面を説明する 1 つのスキルです。claude code は .claude/skills/crosscode/ からそのスキルを読み込みます。codex cli、cursor、opencode、gemini cli は、start が AGENTS.md に書き込む crosscode ブロックから同じテキストを読み込みます。
すべてのツールのすべての応答には、ツールが要求されたかどうかにかかわらず、保留中の競合が含まれます。意図的な仕様です。エージェントは呼び出されたときにしか何かを確認しないため、アイドル状態の間に届いた競合は、そのまま見過ごされてしまいます。この仕組みなら、エージェントは次に何かを行うときに競合に気づきます。付随するのは概要なので、無関係な呼び出しによってファイル全体がエージェントのコンテキストに持ち込まれることはありません。ours/theirs/ancestor のテキストは、エージェントが実際にマージする時点で conflicts を呼び出せば取得できます。さらに、claude code と codex にはファイル編集の前に実行されるフックがあり、そのタイミングをさらに早めます。つまり、エージェントがファイルを上書きした後ではなく、書き込む前にそのファイルの競合を把握できます。このフックは MCP に加わる追加機能であり、必須ではありません。それ以外のクライアントは、付随する競合情報だけに頼ります。
この仕組みが目指す基準は、実際の競合が発生するまで、どちらの側のエージェントも crosscode に言及しないことです。そして、競合を受け取った側のエージェントは、依頼されなくても解決します。エージェントに伝える内容はskills/crosscode/SKILL.mdをご覧ください。このファイルが唯一の原本です。start はこれをそのままスキルとして、またフロントマターを取り除いて AGENTS.md ブロックとしてインストールします。3 つの内容にずれがあればテストは失敗します。
crosscode が扱わないもの
受信した作業を承認または拒否する手順、タスク、作業の主張や引き継ぎ、隠しスナップショットレイヤー、検証プロファイル、リスク分類、AI レビュー担当者、シート、ウェブアプリ、TUI はありません。これらはかつてすべて作りました。それが、やめることを学んだ経緯です。
開発
pnpm install
pnpm build # typecheck + bundle
pnpm test # vitest
構成:packages/protocol(ワイヤーコントラクト)、packages/sync(適用ルール、シャドウ参照、3-way マージ)、packages/git(基盤となる git の処理)、packages/core(拒否リストとハッシュ化)、apps/daemon(チェックアウトごとの同期)、apps/service(ホスト型の調整サービス)、apps/cli(5 つのコマンド)、apps/mcp-server(4 つのツールと編集前フック)、skills/crosscode(エージェントスキル)、apps/docs-site(ランディングページとこのドキュメント)。
貢献をご希望ですか?CONTRIBUTING.mdをご覧ください。このリポジトリの計画書はPLAN.mdのみです。spike/には、ビルドの対象外であるマージコアの使い捨ての概念実証があります。
ドキュメント:アーキテクチャ · プロトコル · MCP クライアントとフック · オンボーディング契約 · インストール時のプロンプト · セキュリティ · プライバシー · オブザーバビリティ · 利用規約 · サポート
コミュニティとサポート
- イシュー: 不足している機能はありますか?それともバグに遭遇しましたか? イシューを作成してください。
- セキュリティ: 脆弱性はSECURITY.mdに従って非公開で報告してください。公開イシューには投稿しないでください。
- プライバシー: サービスが確認できるすべての情報はdocs/privacy.mdに記載されています。
- 応援する: このリポジトリにスターを付けて、最新情報をチェックしてください。
ライセンス
crosscode はMIT ライセンスに基づく無料のオープンソースソフトウェアです。
商標
MIT ライセンスの対象はコードです。「crosscode」という名称とassets/内のロゴは対象外です。フォークして、公開して、紹介してかまいません。ただし、変更したバージョンを crosscode そのものとして提示しないでください。詳細はTRADEMARK.mdをご覧ください。記載のない事項については[email protected]にお問い合わせください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。