loki-mode について
loki-mode は、タスクや issue から検証済みのコード変更と PR を作る自律型コーディングエージェント CLI です。独立して確認できる署名付きレシートを生成し、stdio 経由で操作できるローカル MCP サーバーも備えています。
主な機能
- 01タスクや issue からコーディングを実行
- 02チェックを行い署名付きレシートを生成
- 03検証済みの場合のみ PR を作成
- 04レシートとイベントログをオフライン検証
- 05ローカルのコントロールパネルで実行を表示
活用シーン
- 01issue や PRD から検証済み PR を作成
- 02実行レシートの改ざん有無を確認
- 03ローカル実行の状態、コスト、結果を確認
MCP 対応
同梱の MCP サーバーは stdio 経由で、実行の開始、状態の取得、レシート検証のツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Loki Mode
エージェントは完了したと言います。Loki がそれを証明します。タスクやイシューを、署名付きの証明書を自分で検証できる、検証済みプルリクエストへと変換する自律型コーディングエージェントです。
ウェブサイト | クイックスタート | インストールガイド | ユーザーガイド | CLI リファレンス | opencode との比較 | 変更履歴
上の npm バッジには現在のリリースが表示されます。リリースノートは CHANGELOG.md をご覧ください。
CLI リファレンス:docs/CLI-REFERENCE.md(コマンドレジストリから生成されています)。
インストール
npm install -g loki-mode
npm パッケージは、エンジンに必要な Bun ランタイムをオプションの依存関係としてインストールします。そのほかのインストール方法:bun install -g loki-mode、brew tap asklokesh/tap && brew install loki-mode、または docker pull asklokesh/loki-mode:latest(Docker ガイド)。loki self-update でアップグレードできます。
インストールしたり費用をかけたりする前に、結果を確認してみませんか?
npx loki-mode start # no git repo: a real receipt, no key, no spend
npx loki-mode tour # the same receipt when you are already inside a repo
npx は初回にパッケージをダウンロードするため、その手順にはネットワーク接続が必要です。証明書はオフラインで再生でき、プロバイダーやキーなしで検証できます。
npx loki-mode wow # a provider is ready: one tiny real task in a temp repo, its own receipt
初回実行
Loki にはモデルが必要です。デフォルトのプロバイダーは Claude Code(claude)です。インストールしてログインしてください。メインの実行経路では、同梱の Agent SDK と ANTHROPIC_API_KEY を CLI の代わりに使用できます。ほかのコーディング CLI は任意です。要件をご覧ください。
cd your-repo
loki setup # first-run wizard (or: loki doctor --fix)
loki start "add rate limiting to /api/login" # the primary path: build, verify, seal a receipt, open a PR
loki start prd.md # same, from a PRD file
loki start owner/repo#123 # same, from a GitHub, GitLab or Jira issue
loki edit "rename fooBar to foo_bar" # one small change, no loop
loki chat # interactive alternative: Plan and Build modes
loki start、loki "<task>"、loki owner/repo#N、loki quick "<task>" は、フラグの順序や入力形式にかかわらず、デフォルトでいずれも Loki 10 エンジンを実行します。プルリクエストを作成せずにビルドと検証を行うには --no-pr、費用に上限を設定するには --max-cost <usd>、別のコーディング CLI を選ぶには --provider <name> を追加します。費用上限は、ANTHROPIC_API_KEY または OPENAI_API_KEY が設定されている場合はデフォルトで 100 ドル、サブスクリプションでログインしている場合はドル建ての上限なしです。loki.yaml の budgets.per_run でも設定できます。実行せずにルートを確認するには、loki route start prd.md または --explain-route を使います。初めての方は、5 分でできるクイックスタートをご覧ください。
得られるもの
実行は毎回、タスクから導出したデリバリー契約から始まり、コードに触れる前にタスクだけをもとにチェックを作成し、実装と検証を行い、最後に必ず次のいずれか1つの結果になります:VERIFIED、ALREADY_SATISFIED、FAILED、BUDGET_STOP、BLOCKED、STALLED(終了コード)。契約を記載どおりに満たせない場合、実行は推測せずに停止し、質問を1つします。
- プルリクエスト:迅速なレビューのため、課題の要求、変更内容、テスト方法、そして実証できていないことを記載します。ブランチをプッシュしてPRを作成するのはVERIFIEDの実行のみです。それ以外の結果では、ブランチはローカルに保持され、その場所が出力されます。
- 署名付きレシート:
.loki/runs/<run-id>/receipt.jsonに保存され、初回実行時に作成されるローカルのEd25519キーで署名されます。 - 専門家レビュー:レビュー評議会が実行される場合、変更されたファイルと差分を各レビュアーのキーワードと照合し、専門家プール(
agents/types.json、run.sh:FOCUS_KEYWORDSでスコア付け)からレビュアーを選出します。
loki verify # newest run; or: loki verify <run-id>
loki verify はレシートを再ハッシュし、署名を検証して、実行のイベントログと照合します。判定を出力し、0(VERIFIED)、1(TAMPERED)、2(UNCHECKED)、3(UNSIGNED、--allow-unsigned がない場合は拒否)、4(実行結果が検証済みではない)、または66(実行なし)で終了します。「検証済み」であることを確認する安全な方法は、[ $rc -eq 0 ] のみです。loki start は、宣言された動作変更に対してfail-to-passも要求します。つまり、Wallテストは旧コードでは失敗し、変更後には成功しなければならず、そうでない場合、判定はPARTIALのままです(LOKI_MUTATION_STRICT=0 で無効にできます)。全表:docs/exit-codes.md。別のマシンで検証するには、loki keys export で公開鍵をエクスポートし、loki verify --pubkey <file> に渡してください。レシートが示すのは実行されたチェックの内容のみで、実行されなかったチェックも記載されます。署名が証明するのは誰が生成したかであり、コードにバグがないことではありません。詳細:docs/SIGNED-RECEIPTS.md。
複数リポジトリにまたがる変更セットの場合、loki start --workspace <name> "<brief>" はすべての子レシートを対象とする署名付きの composite.json を1つ作成し、loki verify <run-dir>/composite.json はオフラインで再検証します(docs/WORKSPACES.md)。複合レシートの判定は、最も低い子の判定を超えることはありません。
語彙は2種類あり、1つではありません。レシート判定(封印される5種類):VERIFIED、PARTIAL、ALREADY_SATISFIED、SPEC_CONFLICT、FAILED。実行結果(出力される8種類):VERIFIED、ALREADY_SATISFIED、PARTIAL、FAILED、BUDGET_STOP、BLOCKED、STALLED、CANCELLED。BUDGET_STOP、BLOCKED、STALLED、CANCELLEDは実行結果であり、レシート判定にはなりません。
| 実行結果 | レシート判定 | loki start の終了コード |
|---|---|---|
| VERIFIED, ALREADY_SATISFIED | 同じ | 0 |
| FAILED, PARTIAL | 同じ | 1 |
| BUDGET_STOP | なし(上限で停止) | 3 |
| BLOCKED | SPEC_CONFLICT | 4 |
| STALLED | なし | 5 |
| CANCELLED | なし | 130 |
複合レシート:すべての子がVERIFIEDまたはALREADY_SATISFIEDならVERIFIEDになります(すべてがALREADY_SATISFIEDの場合はALREADY_SATISFIEDのまま、SPEC_CONFLICTの子が1つでもあればSPEC_CONFLICTのままです)。PARTIALの子が1つでもあれば判定はPARTIALが上限となり、FAILEDの子があれば失敗します。複合レシートに対する loki verify は、VERIFIEDなら0、TAMPEREDなら1、UNCHECKEDなら2、UNSIGNEDなら3で終了します。
自律性とデプロイ:.loki/policies.json の autonomy: propose|execute|operate は、loki start が実行できる内容を制御します(proposeは何も作成せず、executeはPRを作成し、operateはさらにデプロイも許可します)。ファイルがない場合は、現在の動作が維持されます。loki trust はレシートに基づく参考用の段階的なアドバイスを出力しますが、ポリシーへの書き込みは行いません。Lokiがデプロイするのは、loki deploy --execute(または loki start --deploy)に加え、HEADに固定されたVERIFIEDレシートとポリシーによる許可がある場合のみです。--health-url と --auto-rollback を指定すると、デプロイ後のプローブと、文書化されたプロバイダーのロールバックが追加されます。SentryのアラートWebhookは、レシートの検証を条件とする修正PRをキューに登録できます(docs/sentry-intake.md)。
完了した実行では、短い要約が出力されます(どちらのエンジンでも、すべての実行の最後に統一された Result、Files、Cost、Elapsed、Receipt、next: のブロックが表示されます。--quiet はそのブロックのみを出力し、--json は summary オブジェクトを追加します)。
Outcome: VERIFIED
PR: https://github.com/owner/repo/pull/1
Receipt: sha256:2f9a41c7e0b3...
NOT PROVEN: full suite, app boot, council, security scan
Cost: $0.42 (claude, 212k tokens)
Time: 4m12s (intake 11s, plan 20s, implement 3m10s, verify 31s)
基本コマンド
| コマンド | 機能 |
|---|---|
loki start "<task>" | 実行するコマンドです。生のセッションと同じプロバイダーモデルを使用し、その後ハーネスがチェックを再実行してレシートを確定します(--no-pr、--provider、--max-cost、最初の実装に haiku を選択する --haiku を指定できます)。loki "<task>" と loki owner/repo#N は省略形です。タスクも git リポジトリもない場合はレシートを表示し、費用は発生しません |
loki edit "<change>" | PR、計画、評議会なしで、1 回の実行で 1 つの変更に絞って対応します(--verify、--receipt、--commit、--dry-run) |
loki quick "<task>" | 検証ループ付きで小さなタスクを 1 つ実行します。PR は作成しません |
loki chat | 対話形式で実行する別の方法です。Plan モードと Build モード、スラッシュコマンドを利用できます。/run は loki start の実行を開始し、--attach は実行中のものに参加します |
loki route start <args> | 実行せずにエンジン、プロバイダー、モデル、理由を表示します(--explain-route も指定できます) |
loki setup | 初回セットアップウィザードです。ツール、Claude ログイン、プロバイダー、モデルルート、支出上限を設定します |
loki config list|get|set|path | 設定を読み取り、書き込みます |
loki models [--local] | モデルルート(OpenRouter、Ollama、LM Studio、llama.cpp、vLLM、カスタム)を一覧表示し、ローカルモデルを検出します |
loki agents list|new|show|export --claude | .loki/agents/*.md に保存されるカスタム子エージェントです |
loki status [run-id] | 最新の実行、または指定した実行のステータスを表示します |
loki verify [run-id] | レシートのハッシュ、署名、イベントログを確認します |
loki answer [run-id] | BLOCKED の実行に回答を添えて、後続の実行を開始します(--text "...") |
loki doctor [--fix] [--json] | 前提条件、プロバイダー、ログイン状態を確認します。--fix は安全な修正を適用します |
loki control serve | Control Plane を起動します(下記を参照) |
loki dashboard | Control Plane UI を開きます。必要に応じて起動します |
loki tour | サンプルレシートをオフラインで表示します。git リポジトリ内におらず、タスクも指定していない場合、loki start はこの処理を行います |
loki wow | 一時リポジトリで通常の start と同じライブのミニタスクを実行します。利用可能なプロバイダーがない場合はオフラインサンプルを表示します |
loki factory "<task>" | loki start と同じです。ポリシー行は start によって出力されます |
loki --help | その他すべての情報を表示します。1 つのコマンドについては loki help <command> を実行します |
基本動詞:docs/CLI-CORE-VERBS.md。すべてのコマンド(自動生成):docs/CLI-REFERENCE.md。エンジンガイド、プロバイダーテーブル、モデルルート、カスタムエージェント、チャット:docs/v10/GUIDE.md。opencode との誠実な比較:docs/COMPARE-OPENCODE.md。
モデル、プロバイダー、ローカルモデル
Claude Code はデフォルトの Tier-1 プロバイダーです。--provider codex|cline|aider|opencode(または LOKI_PROVIDER)で別のプロバイダーを選択できます。どのプロバイダーでも、Loki 10 エンジンは実時間の制限と反復後のガードスキャンを適用します。また、codex、cline、aider のコストを測定します(CLI 出力から解析するか、推定して estimated とフラグ付けします)。そのため、--max-cost が適用されます。OpenRouter またはローカルモデルを使うには、loki start の前に LOKI_MODEL_ROUTE=<kind>/<id> を設定します(kind:openrouter、ollama、lmstudio、llamacpp、vllm、custom)。loki models --local はローカルのランタイムを検出し、そのまま貼り付けて使える値を出力します。
LOKI_MODEL_ROUTE=ollama/qwen3-coder loki start prd.md
Control Plane
すべての実行の結果、レシート、コスト、BLOCKED の実行への回答欄を確認できるローカル UI と API です。デフォルトで有効になっており(無効にするには LOKI_CONTROL=0 を設定します)、127.0.0.1 のみでリッスンします。
loki control serve # http://127.0.0.1:47821 (--port N, --db PATH)
loki control backfill . # load existing ./.loki/runs
loki control status # reachable? how many runs?
実行中は、このマシンでの実行結果が自動的に Control Plane に送信されます。ガイド:コンテナ、Helm、ECS、旧ダッシュボードからの移行。
要件
loki doctor はこの一覧をチェックします。
必須:
- Claude Code(
claude):インストール済みで、ログインしていること。デフォルトのプロバイダーであり、すべての機能に対応している唯一のプロバイダーです。ANTHROPIC_API_KEYを設定した同梱の Agent SDK は、メインのloki startの実行経路で代用できますが、loki editとloki chatはclaudeCLI を呼び出します。 - Python 3.8 以降(
python3) - Node.js 20 以降(
node。CI のターゲットは 22 LTS) jq- Git 2.x(
git) curl
任意:
- その他のコーディング CLI:Codex、Cline、Aider、opencode(
--provider)。モデルのルートには Ollama または OpenRouter のキーを使用できます。 - PATH に Bun 1.3 以降(
bun)があること(npm パッケージにも同梱されています)。 - 公開済みイメージから Loki を実行する場合は、Docker。
macOS と Linux に対応しています。
詳細
- インストール、環境変数、終了コード、既知の問題、プライバシーとテレメトリー
- Agent Change Receipt の形式:docs/AGENT-CHANGE-RECEIPT.md
- ホステッドサービスを使わず、GitHub Actions から Issue を PR に変換:docs/examples/loki-issue-to-pr.yml.example
- Jira と Linear からの取り込み:docs/trackers.md。双方向 Slack:docs/slack.md。複数リポジトリの実行と複合レシート:docs/WORKSPACES.md。デプロイ:docs/DEPLOY-PLAN.md
- MCP:同梱のサーバーは、実行の開始、ステータスの確認、レシートの検証など、48 個のツールを stdio 経由で公開します(
loki mcp)。ワンクリックインストール:Cursor、VS Code。または、loki mcp install --client claude|cursor|vscode|windsurfを実行してください。 - Claude Code プラグイン:
claude plugin marketplace add asklokesh/loki-modeを実行し、続けてclaude plugin install loki-mode@loki-modeを実行してください。同じマーケットプレイスには loki-seal もあります。これは、テストが新たに失敗した場合や弱体化された場合に「完了」とすることを拒否する Stop フックです。 - アーキテクチャ:docs/ARCHITECTURE.md。アップグレード:UPGRADING.md
貢献
git clone https://github.com/asklokesh/loki-mode.git && cd loki-mode
npm install && npm test
CONTRIBUTING.md、TESTING.md、行動規範をご覧ください。
ライセンス
Business Source License 1.1。個人利用、社内利用、学術利用、非商用利用は無料です。2030年3月19日に Apache 2.0 に切り替わります。その他の利用条件については [email protected] までお問い合わせください。
Loki Mode は Autonomi が開発しています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。