A0 について
A0はAIエージェント向けの小規模なプログラミング言語で、リビジョン検証付きの構造化編集と複数ターゲットへのコンパイルに対応します。MCPサーバーは、指定範囲内での編集、検査、実行、コンパイル用ツールを提供します。
主な機能
- 01リビジョン検証付き構造化編集
- 02診断と正確な修正
- 03参照インタープリターでの実行
- 04複数ターゲットへのコンパイル
- 05プロジェクトルート内に限定したファイル操作
活用シーン
- 01エージェントによるA0プログラムの構造的な編集
- 02プログラムの検査と正確な修正の適用
- 03プログラムの実行やターゲットコードの生成
MCP 対応
stdioのMCPサーバーは、プログラムを開く、編集を適用する、検査、実行、出力、保存するツールを公開します。ファイルアクセスは起動ルート内に限られ、シェルは実行しません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
A0
人間ではなく、AI のために作られたプログラミング言語です。 a0lang.com · ドキュメント
A0 は小さなプログラミング言語です。AI エージェントは、検証済みの構造化編集を通じてコードを編集し、1 つのソースからネイティブコード、wasm、JavaScript、JVM、.NET、Metal、SystemVerilog にコンパイルできます。
30 秒で始める
いずれかを選んでください。すべて無料でローカルに動作し、アカウントもキーも不要です。
1. エージェントスキル(Claude Code、Codex、Cursor、Copilot、Gemini CLI、その他多数のエージェントで利用できます。skills CLI を使用します):
npx skills add Joe-Simo/a0
2. MCP サーバー(PATH 上に a0 バイナリが必要です。次の項目を参照してください)。Claude Desktop(claude_desktop_config.json)、Cursor(.cursor/mcp.json)、または mcpServers に対応する任意のクライアントに貼り付けてください。Claude Code の場合:claude mcp add a0 -- a0 mcp .。VS Code の場合:integrations/vscode.mcp.json の内容を .vscode/mcp.json に設定します。
{ "mcpServers": { "a0": { "command": "a0", "args": ["mcp", "."] } } }
3. バイナリ(単一ファイルで、Node 不要。リリースの checksums.txt と照合して SHA-256 検証済みです):
curl -fsSL https://raw.githubusercontent.com/Joe-Simo/a0/main/install.sh | sh # macOS / Linux
irm https://raw.githubusercontent.com/Joe-Simo/a0/main/install.ps1 | iex # Windows (PowerShell)
率直な状況説明:A0 には浮動小数点数、ヒープ、再帰はなく、文字列はバイト列です。汎用言語ではなく、カーネルと編集ループ向けの言語です。以下の数値は、負荷が高い状態の 1 台のマシンで測定したもので、STATUS.md の損失一覧には A0 の処理速度が遅い箇所を記載しています。正しさの検証は 2 つに分かれています。すべてのターゲットを 1 つのオラクルに対する実行で検証し、オプティマイザーは 48 個のコーパス関数について Z3 で等価性を証明しています。それ以外はテスト済みですが、証明はされていません。ライセンス:Apache 2.0。詳細:a0lang.com、a0lang.com/benchmarks。
A0 は、モデルによる記述と編集を、リビジョン検証付きの構造化編集として扱う、コンパクトで厳密に仕様化された言語です。モデルは編集対象に触れる箇所だけを読み取り、変更した行だけを書き込むため、無効な内容が反映されることはありません。1 つのプログラムをネイティブマシンコード(A0 独自の AArch64 コードジェネレーターまたは C)、ブラウザー(wasm32)、JavaScript、JVM、.NET、Metal GPU カーネル、クロック同期型 SystemVerilog にコンパイルでき、すべてのターゲットを 1 つのオラクルに対して検証します。
リポジトリのベンチマークで測定しました(Apple M3、8 コア、results/*.json)。マシンは静かな状態ではありませんでした。results/exec-benchmark.json には、メイン実行と arm64 実行の 1/5/15 分間のロードアベレージが 6.4-8.0、JavaScript の再測定では 32-40 と記録されています。マシンがアイドル状態のときの再測定は保留中です。
| ネイティブ A0 と手書き C の比較 | 呼び出しあたりの時間は 1.00x(同等) |
| ネイティブ A0 と Python/JavaScript の比較 | 174x/8.0x 高速(10 カーネルの幾何平均) |
| 編集ごとにモデルが読み取るトークン数 | ファイル全体を読む場合より 7.3x 少ない |
| ベンチマーク済みの言語(チェックサム検証済み) | 48(9 言語は A0 と 5% 以内で同等、残りは低速) |
| すべてのターゲットで合格したオラクルケース | 5262 / 5262 |
| 等価性が証明されたオプティマイザー(Z3) | コーパス関数 48 / 48 |
| TypeScript と比較したタスク全体のトークン数 | 40 関数のプログラムでは 3.0x 少なく、単一関数のタスクでは 1.46x 多い(どちらも公開済み) |
サイト a0lang.com 自体も、2 つの A0 プログラム(site/page.a0、site/docs.a0)で構成されています。
意図とセマンティクスについては DESIGN.md を、AI 向けの言語指示については MODEL_GUIDE.txt を、現在の結果、損失一覧、既知の制限、次のアクションについては STATUS.md を参照してください(セッション履歴は docs/history/ にあります)。機械可読な証拠は results/ にあります。
インストール
A0 は自己完結型の単一バイナリです。Node も Bun も不要です。
# macOS / Linux: Homebrew (this repository is the tap; no separate tap repository)
brew tap Joe-Simo/a0 https://github.com/Joe-Simo/a0
brew install a0
# macOS / Linux: script (detects OS/arch, verifies SHA-256, installs to ~/.local/bin)
curl -fsSL https://raw.githubusercontent.com/Joe-Simo/a0/main/install.sh | sh
# Windows (installs to %LOCALAPPDATA%\Programs\a0 and adds it to your user PATH)
irm https://raw.githubusercontent.com/Joe-Simo/a0/main/install.ps1 | iex
どちらのスクリプトも、リリースを固定する A0_VERSION=v0.8.16 と、インストール先を変更する A0_INSTALL_DIR を指定できます。または、最新リリースからバイナリを手動でダウンロードし、checksums.txt と照合してください。a0 --version を実行すると、リリースとコンパイラのバージョンが表示されます。続いて、次を実行します。
printf 'fn sq u32 -> u32\na mul p0 p0\nret a\nend\n' > sq.a0
a0 run sq.a0 sq 12 # 144
a0 emit arm64 sq.a0 # A0's own machine code; or c, js, java, sv
a0 check sq.a0 # diagnostics with codes; --json for fields, --fix applies the exact fixes
a0 explain A0102 # what a diagnostic means, with a failing and a fixed example
バイナリ:a0-darwin-arm64、a0-darwin-x64、a0-linux-x64、a0-linux-arm64、a0-windows-x64.exe。C コンパイラー(clang または gcc)が必要なのは、マシン上でネイティブ出力をリンクする場合のみです。
MCP サーバー
a0 mcp <file-or-dir> は、stdio(Model Context Protocol)経由で AI エージェントに A0 を提供します。エージェントはテキストファイルではなく、ツールを使って編集します。ツールには、a0_open(ハンドル付きの関数ビュー)、a0_program(プログラムハンドル。必要に応じてターゲットを指定)、a0_apply(ハンドルの範囲内で編集し、新しいビュー、またはコード(クラス)、id(A0nnnn)、メッセージ、期待値/実際の値、修正内容、適用可能性を含む診断を返します。返信の fix all は、最後に拒否された編集に対するすべての厳密な修正をアトミックに適用します)、a0_check、a0_run(燃料制限付きの参照インタープリター)、a0_emit(任意のターゲット)、a0_save(適用が正常に成功した後にのみ実行可能)があります。パスは起動ルート内に制限されます(シンボリックリンクによるルート外へのアクセスと use によるルート外へのアクセスは拒否されます)。シェルは実行されず、出力には上限があります。
言語サーバー
a0 lsp [root] は、stdio 経由の Language Server Protocol サーバーです(vscode-languageserver を基盤としており、--stdio は受け付けられますが無視されます)。任意の LSP クライアントを接続すると、.a0 ファイルに対して、リンカーとチェッカーによるファイルのオープン時および変更時の診断(診断の code はクラス、data にはテーブルコードの id、修正内容と適用可能性が格納され、厳密な修正はクイックフィックスになります)、ホバー(関数シグネチャ、op のドキュメント)、use ファイルをまたいだ定義への移動、ドキュメントシンボル、op とスコープ内の関数の補完、正規プリンターによるフォーマットが利用できます。ファイルは MCP サーバーと同様に root(デフォルト:作業ディレクトリ)内に制限されます。範囲外のドキュメントには limit 診断が 1 件だけ通知され、それ以外は何も通知されません。
AI エージェントでの使用
まず a0 を PATH に追加してください(「インストール」を参照)。以下の各エントリーは、ホスティングやアカウントを必要とせず、同じローカル stdio サーバー a0 mcp <dir> を実行します。すぐにコピーして使える設定は integrations/ にあります。skills/a0/ の Agent Skill(npx skills add Joe-Simo/a0 でインストール)は、言語を説明し、必要な場合にのみ入門ガイドと編集プロトコルを読み込みます。
| エージェント | インストール方法 | ローカル stdio |
|---|---|---|
| Claude Code | claude mcp add a0 -- a0 mcp .(MCP のみ)、または /plugin marketplace add Joe-Simo/a0 の後に /plugin install a0@a0(MCP とスキル) | はい |
| Claude Desktop | 最新リリースから a0-mcp-<os>-<arch>.mcpb をダブルクリックするか、integrations/mcp.json を claude_desktop_config.json に追加します | はい |
| Claude.ai | plugin/skills/a0/ を ZIP 圧縮し、Settings > Capabilities > Skills からアップロードします(スキルのみ。claude.ai コネクターはリモート専用です) | スキルのみ |
| Cursor | Cursor に追加するか、integrations/mcp.json を .cursor/mcp.json に配置します | はい |
| VS Code / GitHub Copilot | code --add-mcp '{"name":"a0","command":"a0","args":["mcp","${workspaceFolder}"]}' を実行するか、integrations/vscode.mcp.json を .vscode/mcp.json として配置します。スキルは .github/skills/ または ~/.copilot/skills/ に配置します | はい |
| GitHub Copilot CLI | copilot mcp add を実行するか、~/.copilot/mcp-config.json を使用します(mcp.json と同じ形式) | はい |
| OpenAI Codex CLI/IDE | codex mcp add a0 -- a0 mcp . を実行するか、integrations/codex.config.toml を使用します。スキルは .agents/skills/ に、プラグインは plugin/.codex-plugin/ に配置します | はい |
| Gemini CLI | gemini extensions install https://github.com/Joe-Simo/a0 を実行します(MCP と GEMINI.md) | はい |
| Qwen Code | qwen mcp add a0 a0 mcp . を実行するか、qwen extensions install https://github.com/Joe-Simo/a0 を実行します(Gemini 拡張機能を読み込みます) | はい |
| Windsurf / Devin Desktop | mcp.json を ~/.codeium/windsurf/mcp_config.json に配置します | はい |
| Devin CLI | devin mcp add a0 -- a0 mcp . を実行します | はい |
| Zed | integrations/zed.settings.json を Zed の設定に配置します | はい |
| Cline | mcp.json を cline_mcp_settings.json に配置します | はい |
| Roo Code | mcp.json を .roo/mcp.json に配置します | はい |
| Kilo Code | integrations/kilo.jsonc を kilo.jsonc に配置します | はい |
| Continue | integrations/continue.a0.yaml を .continue/mcpServers/a0.yaml として配置します(エージェントモード) | はい |
| JetBrains AI Assistant / Junie | Settings > Tools > AI Assistant > MCP で mcp.json を貼り付けます。Junie の場合は .junie/mcp/mcp.json に配置し、スキルは .junie/skills/ に配置します | はい |
| Augment | auggie mcp add を実行するか、mcp.json を使用して JSON からインポートします。スキルは .augment/skills/ に配置します | はい |
| opencode | integrations/opencode.json を opencode.json として配置します。スキルは .opencode/skills/ に配置します | はい |
| Amp | amp mcp add a0 -- a0 mcp . を実行します。amp skill add Joe-Simo/a0 を実行します | はい |
| Goose | goose session --with-extension "a0 mcp ." を実行するか、integrations/goose.config.yaml を使用します | はい |
| Warp | mcp.json を .warp/.mcp.json に配置します | はい |
| Crush | integrations/crush.json を crush.json に配置します | はい |
| Factory Droid | droid mcp add a0 "a0 mcp ." を実行します | はい |
| Grok Build CLI (xAI) | integrations/codex.config.toml の [mcp_servers.a0] を ~/.grok/config.toml に配置します | はい |
| Mistral Vibe CLI | integrations/mistral-vibe.config.toml を使用します | はい |
| Kimi CLI | kimi mcp add a0 --transport stdio -- a0 mcp . を実行します | はい |
| LM Studio | mcp.json を LM Studio の mcp.json に配置するか、lmstudio://add_mcp?name=a0&config=eyJjb21tYW5kIjoiYTAiLCJhcmdzIjpbIm1jcCIsIi4iXX0= を使用します | はい |
| Perplexity (Mac app) | Connectors > Add > Simple で a0 mcp /path/to/project を指定します(PerplexityXPC ヘルパーが必要です) | はい |
| Hugging Face smolagents | MCPClient(StdioServerParameters(command="a0", args=["mcp", "."])) を使用します | はい |
| Hugging Face tiny-agents | agent.json に "servers": [{"type": "stdio", "command": "a0", "args": ["mcp", "."]}] を記述します | はい |
| Aider | MCP はありません。aider --read plugin/skills/a0/references/primer.txt を実行し、a0 CLI を使用します | MCP なし |
| Open WebUI (Ollama) | Streamable HTTP のみです。A0 にはホスト型サーバーは含まれていません | リモート MCP が必要 |
| ChatGPT (developer mode / Apps) | リモート HTTPS のみです | リモート MCP が必要 |
| Mistral Le Chat | リモートコネクターのみです | リモート MCP が必要 |
| xAI Grok API | リモート MCP ツールのみです(HTTP/SSE) | リモート MCP が必要 |
| Replit Agent, Bolt.new, Lovable, v0 | リモート HTTPS のみです | リモート MCP が必要 |
エージェントがプロジェクトフォルダー内でサーバーを起動しない場合は、.を、サーバーが読み書きできるフォルダーに置き換えてください。 |
プロジェクトのルール、フック、CI
a0 init [dir]は、MCP ツールのワークフロー、編集プロトコル、プライマーパス(利用可能な場合はコピーされる.a0/MODEL_GUIDE.txt、そうでない場合は GitHub URL)を記載したAGENTS.md(Codex、Cursor、Copilot、Jules などが読み込みます)を書き込みます。また、CLAUDE.mdとGEMINI.mdに@AGENTS.mdポインターを追加し、Cursor(.cursor/rules/a0.mdc)、Windsurf(.windsurf/rules/a0.md)、Copilot(.github/instructions/a0.instructions.md)用の glob ルールと、Gemini CLI のAfterToolフック(.gemini/settings.json)も設定します。既存の指示ファイルには A0 セクションが一度だけ追記され、その他の既存ファイルはそのまま保持されます。a0 hookは編集後のチェックです。フックのツール呼び出し JSON を stdin から読み込み、編集された*.a0ファイルがa0 checkに失敗すると、理由に正確な診断内容とそのfix:を含む、処理をブロックする応答を出力します。- Claude Code プラグイン(
plugin/):Edit|Write|MultiEditに対するPostToolUseフック(plugin/hooks/hooks.json。a0 hookを実行します。a0がPATHにない場合はA0_BINを設定してください)と、スラッシュコマンド/a0-check、/a0-emit、/a0-run(plugin/commands/)を提供します。 - CI:
uses: Joe-Simo/a0@main(ルートのaction.yml、入力version、デフォルトはlatest)は、ランナー用のリリースバイナリをダウンロードし、追跡対象のすべての.a0ファイルをチェックします。pre-commit:repo: https://github.com/Joe-Simo/a0、フック IDa0-check(a0がPATHにある必要があります)。 a0 checkは複数のファイルを受け付け、いずれかのファイルが失敗すると終了コード 1 を返し、失敗ごとに<file>: error: <code>: ... fix: ...を出力します。
プライバシー
a0 MCP サーバーと .mcpb バンドルは、すべてお使いのマシン上で実行されます。データを収集せず、ネットワークリクエストも行わず、指定されたフォルダー内でのみ読み書きします。
A0 の構築方法
リポジトリに記録されている内容のみを示します。
- A0 は、AGENTS.md のルールに従って動作する AI エージェントによって開発されています。各変更はローカルの決定論的なゲート(
a0-dev)を通過し、ドキュメント内の数値や比較には、その根拠となる結果ファイルが必要です。- Git 履歴(コミット0675fe8時点):2026-09-29 以降、622 件のコミットがあります。620 件には所有者の識別情報(GitHub の no-reply アドレス)が付与され、2 件はgithub-actions[bot]によるものです。622 件中 514 件には、Claude モデル(Sonnet 5.5、Opus 5.5、Fable 5.1)を記載したCo-Authored-Byトレーラーが付いています。残りの 108 件には共同執筆者の記載がなく、リポジトリには人間とエージェントのどちらが作成したかは記録されていません。 - 人間が書いたテキストとエージェントが書いたテキストの区別:記録されていません。ファイルに区別を示すマーカーはなく、どちらの場合もコミットの識別情報は所有者のものなので、この README では内訳を主張しません。
- 実験の被験対象は、新規のモデルセッションです。後期の実験で使われたタスクセットは、被験対象とは別に作成され、SHA-256(
tools/ai-edit-tasks-*.sha256)で封印されました。 - トークン数または金額でのコスト:追跡されていません。STATUS.md には、記録を開始するための TODO があります。
新しいマシンでベンチマークの数値を再現する方法:scripts/bench-repro/README.md。
コントリビューション
アカウント、キー、有料サービスは不要です。コントリビューションを歓迎します。概要は次のとおりです。
- このリポジトリをフォークしてフォークをクローンし、このリポジトリを
upstreamとして追加します。 upstream/mainからブランチを作成し(変更ごとに1つのブランチ)、テストを追加して変更を加え、bun run lint、bun run typecheck、bun run testを実行します。- フォークにプッシュし、
mainに対するプルリクエストを作成します。CIが実行され、マージ前にメンテナーがすべてのゲートを実行します。
詳細(レイアウト、ビルド、測定の信頼性を保つためのルール、実験へのバックエンドや言語の追加、Windowsに関する注意事項)は、 CONTRIBUTING.mdをご覧ください。行動規範をお読みください。セキュリティ上の問題はSECURITY.mdの説明に従って報告してください。 言語自体への変更については、まずイシューを作成してください。
コンパイラーは現在A0で書き直し中です(compiler/とDESIGN.mdのセクション7aをご覧ください)。この変更が取り込まれるまでは、コンパイラー自体はTypeScriptであり、開発にはBunまたはNode 22+が必要です。A0のユーザーにこれらは不要です。リリース済みのa0バイナリは単体で動作します。
bun install
bun run lint # Biome
bun run typecheck # tsc --noEmit
bun run test # node --test on dist/test
bun run verify # cross-toolchain differential execution -> results/verification.json
bun run hw # Icarus simulation + Yosys synthesis -> results/hardware.json
bun run bench # in-process timings + byte fixture -> results/benchmark.json
bun run tokens # tokenizer probe (js-tiktoken) -> results/tokens.json
bun run exec-bench # emitted vs 45+ hand-written baselines -> results/exec-benchmark.json
bun run app # Life application acceptance, 7 targets -> results/app.json
bun run site # browser demo (wasm + DOM adapter) -> site/dist/
bun run gpu # Metal GPU execution of the corpus -> results/gpu.json
bun run dotnet # C# / .NET execution of the corpus -> results/dotnet.json
CLI(bun run buildの実行後):
node dist/src/cli.js check examples/kernels.a0
node dist/src/cli.js run examples/kernels.a0 affine 10 3 7 # 37
node dist/src/cli.js emit js|c|java|sv examples/kernels.a0 [out]
node dist/src/cli.js wasm examples/kernels.a0 kernels.wasm # needs clang + wasm-ld
node dist/src/cli.js revision examples/kernels.a0 affine
node dist/src/cli.js patch examples/kernels.a0 edit.patch [out.a0]
構成:src/core.tsは文法/検証/インタープリター、src/edit.tsはリビジョンと編集セッション、
src/optimize.ts、src/backends.tsはJS/C/Java/SystemVerilogの出力と出力キャッシュ、
src/toolchain.tsはインストール済みツールとの連携、src/cli.ts、
test/、tools/(コーパス+オラクル、verify、hw-verify、bench、token-bench)です。
エージェント向けに設計されたエラー
すべての診断はsrc/diagnostics.tsの1行で定義されています。内容は、安定したコード(A0nnnn)、大まかな分類(parse、type、structure、limit、edit、patch、revision、handle、runtime、cli、変更なし)、メッセージテンプレート、修正方法、失敗例と修正例を1つずつ含むa0 explain用の説明テキストです。診断はa0 check --json、編集プロトコル、MCP サーバー、LSPから、{code, id, message, line, expected, actual, fix, applicability, edits}の形式でエージェントに届きます。不明な名前(op、関数、ノード、fold本体、ループ述語、型)に対しては、TypeScriptのスペル規則に基づき、似た名前を提案します。修正はexact(そのまま安全に適用でき、実際に適用するeditsを含みます)またはmaybeです。編集プロトコルでは、fix allの返信によって、最後に拒否された返信に含まれるすべてのexactな修正が適用され、コミット前に結果が検証されます。test/diagnostics.test.tsはすべての説明例を実行し、corpus/reject/には拒否されるプログラムと返信が含まれています。それぞれに、発生すべき診断と、修正によって生成されるプログラムが記載されています(node dist/tools/reject-corpus.js [--bless] [--coverage])。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。