
2026/03/12 22:49
**Show HN:** *Axe ― 12 MB のバイナリで、あなたの AI フレームワークを置き換える*
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
概要:
Axe は軽量なコマンドラインインターフェイスで、TOML ファイルに定義された大規模言語モデル(LLM)エージェントを起動・管理できます。Anthropic、OpenAI、および Ollama モデル(Ollama サイドカー経由のローカル)がサポートされ、API キーは
ANTHROPIC_API_KEY、OPENAI_API_KEY、または AXE_OLLAMA_BASE_URL で提供します。エージェントは $XDG_CONFIG_HOME/axe/agents/*.toml に配置され、システムプロンプト、モデル、スキルファイル($XDG_CONFIG_HOME/axe/skills/*)、ファイルパターン、作業ディレクトリ、ツール(組み込みのサンドボックス化ツール:list_directory、read_file、write_file、edit_file、run_command)および深さ制限と並列実行を備えたサブエージェント委任を指定できます。永続メモリは
$XDG_CONFIG_HOME/axe/.local/share/axe/ に保存され、自動でタイムスタンプ付きの Markdown ログが作成されます。axe gc コマンドでクリーンアップ可能です。CLI は axe run <agent>、axe agents list/show/init/edit、axe config init/path、axe version などのコマンドと、--model、--skill、--workdir、--timeout、--dry-run、--verbose/-v、--json のフラグを提供します。Docker イメージはマルチアーキテクチャビルドに対応し、エージェントは非 root コンテナ(UID 10001)内で実行され、読み取り専用のルートファイルシステム、権限削除、およびオプションのネットワーク隔離(
--network=none)を備えています。設定ディレクトリをマウントするか、Docker Compose プロファイルでローカル Ollama サイドカーを使用して起動できます。Axe は Unix のパイピングとチェーンの原則に従い、cron ジョブ、Git フック、CI パイプラインなどへの統合が容易です。今後のリリースではプロバイダーサポートの拡張、追加のサンドボックス化ツール、ガベージコレクションの改善、および Docker 隔離の強化を行い、LLM 主導型自動化の迅速なプロトタイピングとエンタープライズグレードデプロイメントを実現します。
ライセンス:Apache‑2.0.
本文
LLM駆動型エージェントを管理・実行するCLIツール
なぜ Axe なのか?
多くの AI ツールは「チャットボット」を想定しています。
大容量のコンテキストウィンドウで長時間にわたる対話を一度に処理できるような設計です。
しかし、良いソフトウェアとは小さく、特化し、組み合わせやすいものです。
- Axe は LLM エージェントを Unix のプログラムと同じ扱いにします。
- 各エージェントは「一つのこと」を得意とする。
- TOML ファイルで定義。
- 集中したスキルを持たせる。
- コマンドラインから実行。
- 各エージェントは「一つのこと」を得意とする。
- データをパイプして入力し、結果を出力 します。
- エージェント同士をチェーンに接続し、cron・git フック・CI などからトリガーできます。
デーモンも GUI もフレームワークも不要です。
バイナリと設定ファイルだけで完結します。
概要
Axe は TOML 設定ファイルで定義された LLM 駆動型エージェントをオーケストレーションします。
各エージェントは以下の属性を持ちます:
- system prompt
- モデル選択
- スキルファイル
- コンテキストファイル
- 作業ディレクトリ
- 永続メモリ
- サブエージェントへの委譲
Axe は実行者であり、スケジューラではありません。
標準 Unix ツール(cron・git フック・パイプ・ファイル監視)と組み合わせて使用するよう設計されています。
主な機能
- マルチプロバイダー対応 – Anthropic、OpenAI、Ollama(ローカルモデル)
- TOML ベースのエージェント設定 – 宣言的でバージョン管理可能
- サブエージェント委譲 – LLM のツール呼び出し経由で他エージェントを起動;深さ制限と並列実行
- 永続メモリ – タイムスタンプ付き Markdown ログにより、実行間のコンテキスト保持
- メモリ GC – LLM を使ったパターン分析で不要データを削除
- スキルシステム – 複数エージェントで共有可能な再利用指示セット
- stdin パイピング – 任意の出力を直接エージェントへ渡す
(
)git diff | axe run reviewer - ドライランモード – LLM を呼び出さずに解決済みコンテキストを確認
- JSON 出力 – スクリプト向けメタデータ付き構造化出力
- ビルトインツール – ファイル操作(読み込み・書き込み・編集・一覧)、シェルコマンド実行;エージェントの作業ディレクトリにサンドボックス化
- 最小依存関係 – 直接依存は
とcobra
のみ。全ての LLM 呼び出しは標準ライブラリ経由toml
インストール
Go 1.24+ が必要です。
go install github.com/jrswab/axe@latest
またはソースからビルド:
git clone https://github.com/jrswab/axe.git cd axe go build .
クイックスタート
設定ディレクトリを初期化
axe config init
$XDG_CONFIG_HOME/axe/ にサンプルスキルと config.toml を作成します。
新規エージェントの scaffold
axe agents init my-agent
設定ファイルを編集:
axe agents edit my-agent
実行:
axe run my-agent
他ツールから入力をパイプ:
git diff --cached | axe run pr-reviewer cat error.log | axe run log-analyzer
例
examples/ ディレクトリに実行可能なエージェントが揃っています。設定ディレクトリへコピーしてください。
cp examples/code-reviewer/code-reviewer.toml "$(axe config path)/agents/" cp -r examples/code-reviewer/skills/ "$(axe config path)/skills/"
API キーを設定し、実行:
export ANTHROPIC_API_KEY="your-key-here" git diff | axe run code-reviewer
examples/README.md に完全なセットアップ手順があります。
Docker
Axe は隔離済みハード化コンテナでエージェントを実行できます。
イメージビルド
マルチアーキ(linux/amd64, linux/arm64)対応は buildx で:
docker buildx build --platform linux/amd64,linux/arm64 -t axe:latest .
エージェント実行
設定ディレクトリをマウントし、API キーを環境変数に渡します。
docker run --rm \ -v ./my-config:/home/axe/.config/axe \ -e ANTHROPIC_API_KEY \ axe run my-agent
stdin をパイプするには
-i フラグ:
git diff | docker run --rm -i \ -v ./my-config:/home/axe/.config/axe \ -e ANTHROPIC_API_KEY \ axe run pr-reviewer
設定ボリュームをマウントしないと、Axe はコード 2(設定エラー)で終了します。
(エージェント TOML ファイルが存在しないため)
単一エージェント実行
必要なファイルだけをマウント:
docker run --rm -i \ -e ANTHROPIC_API_KEY \ -v ./agents/reviewer.toml:/home/axe/.config/axe/agents/reviewer.toml:ro \ -v ./skills/code-review/:/home/axe/.config/axe/skills/code-review/:ro \ axe run reviewer
スキルを上書きしたい場合:
docker run --rm -i \ -e ANTHROPIC_API_KEY \ -v ./agents/reviewer.toml:/home/axe/.config/axe/agents/reviewer.toml:ro \ -v ./alt-review.md:/home/axe/alt-review.md:ro \ axe run reviewer --skill /home/axe/alt-review.md
エージェントが
sub_agents を宣言している場合、参照されるすべての TOML とスキルもマウントする必要があります。
永続データ
メモリ永続化にはボリュームをマウント:
docker run --rm \ -v ./my-config:/home/axe/.config/axe \ -v axe-data:/home/axe/.local/share/axe \ -e ANTHROPIC_API_KEY \ axe run my-agent
Docker Compose
ローカル Ollama インスタンスと一緒に Axe を実行するための
docker-compose.yml が付属しています。
# クラウドのみ(Ollama 未使用) docker compose run --rm axe run my-agent # Ollama サイドカー付き docker compose --profile ollama up -d ollama docker compose --profile cli run --rm axe run my-agent
Ollama モデルをプル:
docker compose --profile ollama exec ollama ollama pull llama3
注意
Compose の Axe サービスはを宣言しています。depends_on: ollama
そのため、クラウドのみの実行でも Compose で起動すると Ollama が自動的に開始されます。
クラウド専用の場合はを直接使用してください。docker run
ホスト上の Ollama
Ollama がホスト側で直接稼働している場合、以下のように接続します。
# Linux --add-host=host.docker.internal:host-gateway -e AXE_OLLAMA_BASE_URL=http://host-docker.internal:11434 # macOS / Windows (Docker Desktop) -e AXE_OLLAMA_BASE_URL=http://host.docker.internal:11434
セキュリティ
コンテナはデフォルトで以下のハードニングを行います(Compose で)。
| 設定 | 説明 |
|---|---|
| 非 root ユーザー — UID 10001 | |
ルート FS は読み取り専用。書き込み可能なのは設定マウント、データマウント、 tmpfs | |
すべての機能をドロップ () | |
権限昇格禁止 () |
これらの設定はアウトバウンドネットワークアクセスを制限しません。
ローカル Ollama のみと通信するエージェントを隔離したい場合は
--network=none を指定し、共有 Docker ネットワークに手動で接続してください。
| コンテナパス | 目的 | デフォルトアクセス |
|---|---|---|
| エージェント TOML・スキル・config.toml | 読み書き |
| 永続メモリファイル | 読み書き |
設定は読み書き可能です。
と axe config init
が書き込みを行うためです。 ただし、エージェントのみ実行する場合は axe agents init
マウントで安全にします。:ro
環境変数
| 変数 | 必須 | 用途 |
|---|---|---|
| Anthropic を使用時 | API 認証 |
| OpenAI を使用時 | API 認証 |
| Ollama 使用時 | エンドポイント(Compose ではデフォルト http://ollama:11434) |
| 任意 | Anthropic のベース URL を上書き |
| 任意 | OpenAI のベース URL を上書き |
CLI 参照
コマンド一覧
| コマンド | 説明 |
|---|---|
| エージェントを実行 |
| 設定済みエージェント一覧表示 |
| エージェントの完全な設定を表示 |
| 新規エージェント TOML を scaffold |
| でエージェントファイルを開く |
| 設定ディレクトリのパスを出力 |
| デフォルト設定で初期化 |
| 指定エージェントのメモリ GC を実行 |
| メモリ有効エージェント全てに GC を適用 |
| 現在のバージョンを表示 |
フラグ
| フラグ | デフォルト | 説明 |
|---|---|---|
| TOML から取得 | モデルを上書き(例:) |
| TOML から取得 | スキルファイルパスを上書き |
| TOML または CWD | 作業ディレクトリを上書き |
| 120 | 要求タイムアウト |
| false | LLM を呼び出さずに解決済みコンテキストのみ表示 |
| false | デバッグ情報(モデル、タイミング、トークン)を stderr に出力 |
| false | 出力を JSON エンベロープでラップしメタデータ付きに |
エージェント設定
エージェントは
$XDG_CONFIG_HOME/axe/agents/ 内の TOML ファイルとして定義されます。
name = "pr-reviewer" description = "Pull request を問題と改善点をレビューします。" model = "anthropic/claude-sonnet-4-20250514" system_prompt = "あなたはシニアコードレビュワーです。簡潔で実用的に回答してください。" skill = "skills/code-review/SKILL.md" files = ["src/**/*.go", "CONTRIBUTING.md"] workdir = "/home/user/projects/myapp" tools = ["read_file", "list_directory", "run_command"] sub_agents = ["test-runner", "lint-checker"] [sub_agents_config] max_depth = 3 # 最大ネスト深度(硬直最大:5) parallel = true # サブエージェントを同時実行 timeout = 120 # サブエージェント単位のタイムアウト [memory] enabled = true last_n = 10 # コンテキストにロードする最後の N エントリ max_entries = 100 # 超過警告 [params] temperature = 0.3 max_tokens = 4096
name と model を除くすべてのフィールドは任意です。
ツール
エージェントはビルトインツールを使ってファイルシステムやコマンドを操作できます。
ツールが有効になると、LLM は対話ループに入り、ツール呼び出し結果を受け取り最大 50 ターンで推論を継続します。
| ツール | 説明 |
|---|---|
| 作業ディレクトリから相対パスでディレクトリ内容を一覧表示 |
| ファイル内容を行番号付きで読み込み、必要に応じてページング(offset/limit) |
| 親ディレクトリを自動生成してファイルを書き換えまたは新規作成 |
| 正確なテキスト検索と置換(オプションで全置換モード) |
| を経由してシェルコマンドを実行し、結合出力を返す |
| サブエージェントへタスクを委譲( 設定時に自動で利用可能) |
パスセキュリティ:
すべてのファイルツールはエージェントの作業ディレクトリにサンドボックス化されます。絶対パス、
.. のトラバーサル、シンボリックリンク脱走は拒否されます。
並列実行
LLM が単一ターンで複数ツール呼び出しを返す場合、デフォルトでは同時に実行します(ビルトインツールとサブエージェント呼び出しの両方)。
[sub_agents_config] で parallel = false を設定すると無効化できます。
スキル
スキルは再利用可能な指示セットで、ドメイン固有の知識とワークフローをエージェントに提供します。
SKILL.md ファイルはコミュニティフォーマットに従って定義されます。
スキル解決
エージェント TOML の
skill フィールドは以下順で解決されます:
- 絶対パス – そのまま使用(例:
)/home/user/skills/SKILL.md - 設定ディレクトリ相対 –
はskills/code-review/SKILL.md
に解決$XDG_CONFIG_HOME/axe/skills/code-review/SKILL.md - 単一名 –
はcode-review$XDG_CONFIG_HOME/axe/skills/code-review/SKILL.md
スクリプトパス
スキルはしばしばヘルパースクリプトを参照します。
run_command はエージェントの作業ディレクトリで実行されるため、 SKILL.md 内のスクリプトパスは絶対パスである必要があります。相対パスは失敗します。
# 正しい — 絶対パス /home/user/.config/axe/skills/my-skill/scripts/fetch.sh <args> # 間違い — 相対パスは作業ディレクトリから解決されず失敗 scripts/fetch.sh <args>
ディレクトリ構成
$XDG_CONFIG_HOME/axe/ ├── config.toml ├── agents/ │ └── my-agent.toml └── skills/ └── my-skill/ ├── SKILL.md └── scripts/ └── fetch.sh
プロバイダー
| プロバイダー | API キー環境変数 | デフォルトベース URL |
|---|---|---|
| Anthropic | | https://api.anthropic.com |
| OpenAI | | https://api.openai.com |
| Ollama | なし | http://localhost:11434 |
ベース URL は
AXE_<PROVIDER>_BASE_URL 環境変数または config.toml で上書き可能です。
ライセンス
Apache‑2.0 – 詳細は LICENSE をご確認ください。