本文へ移動
  • オープンソース
  • AGPL-3.0
  • v0.2.0
  • Bun ≥ 1.3.14
  • TypeScript

チャットログではなくコックピットを備えた、ターミナルのコーディングエージェント。

Rovecode は Bun 上で動き、16 のプロバイダまたは OpenAI 互換の任意のエンドポイントと話し、すべてのツール呼び出しをリポジトリに触れる前に既定で拒否するポリシーに通します。AGPL-3.0 のもとで自由なソフトウェアです。

$ rovecode "fix the failing test"
rovecode · atlas · feature/authreal frame
160×44 セルの sextant TUI:git ステータス付きのファイルツリー、編集行がハイライトされた src/auth/callback.ts を映すコードパネル、読み取りと編集のツール行と bun test の実行許可を求める承認カードのあるメッセージパネル、4 ステップ中 1 の計画、コンテキスト使用率 13 パーセント、そしてうなずきを待つ rovecode の雲のマスコット。
+4 −1 が着地まず尋ねる · 承認カードコンテキストは 200k の 13 %

実際のフレーム:bun test の承認カード、+4 −1 の編集行、コンテキストは 200k の 13 %。固定クロックで sextant のペインタを通して描画。

  • 2,200+テスト
  • 16組み込みプロバイダー
  • 4ポリシー層
  • 15このページの言語
  • AGPL-3.0ライセンス

ターミナルのためのコーディングエージェント。Bun 上の TypeScript、47 の移植パターン、すべてのツールの前に既定で拒否するポリシーを一つ。

rovecode を使うチーム

  • Northwind Robotics
  • Harbourline Payments
  • Meridian Studio
  • Cobalt Grid
  • Larkspur Health
  • Tessellate
  • Ferrous Labs
  • Quill & Compass

最初のお客様が掲載に同意するまでの仮の名前です。

02コックピット

一画面に六つのパネル。気にしているファイルが流れて消えることはない。

git ステータス付きのファイル、ハイライト帯と ± 差分付きのコード、簡潔なツール行、計画、使用量、そしてマスコット。固定クロックのもと sextant のペインタでヘッドレスに描画されます。TUI が描くのと同じコード経路であって、モックアップではありません。

メッセージパネル · 一行ずつ

上のフレームから書き起こした一回の実行。

すべてのツール呼び出しは一行です。動詞、ファイル、そして何が変わったか。編集は +4 −1 として着地しました。シェルコマンドは三つの答えを持つ一枚のカードの後ろで待ちます。Esc は拒否で、答えはセッションの残りのあいだ記憶されます。

子エージェントは尋ねられません。禁止された argv はカードにすら届きません。

03問題 → 解決

ターミナルエージェントで壊れる四つのこと、そして rovecode のそれぞれへの答え。

キーボードの前で言うであろう言葉で述べ、仕組みとその限界で答えます。どの帯も本物のフレームの切り抜きか、本物の設定ファイルです。

  1. ~/.rovecode/providers.json
    {
    "default": "kaesra/zai-org/glm-5.3-flash",
    "providers": {
    "kaesra": {
    "baseUrl": "https://api.kaesra.tech/v1",
    "protocol": "openai",
    "keyEnv": "KAESRA_API_KEY"
    },

    01問題

    どのエージェントも一社の API と一枚の価格ページに溶接されて届く。

    rovecode のすること

    一つの StreamFn の継ぎ目と、生きたプロバイダレジストリ。16 の名前付きプロバイダ、または providers.json にある OpenAI・Anthropic 互換の任意のエンドポイント。別のターミナルで追加したプロバイダが次の呼び出しから使われます。役割ごとのフォールバック連鎖は 429 や 5xx で先へ進みます。

    rovecode provider add homelab http://10.0.0.7:8000/v1 --no-key
  2. The messages panel: a user line, the assistant's note, then compact tool rows for read and edit with +5 −2

    02問題

    エージェントが編集している最中に、チャットログがその当のファイルを画面外へ押し流す。

    rovecode のすること

    パネル式のコックピット:ファイル、コード、メッセージ、計画、使用量、そして雲のマスコット。メッセージパネルは各ツール呼び出しを一行に収め、コードパネルは着地した一つのハンクだけを見せます。

    files · code · messages · plan · usage · rovecode
  3. The approval card: needs your permission, bash rm -rf node_modules && git checkout -- ., with deny selected

    03問題

    モデルが rm -rf を求め、誰も間に合って止めなかったのでハーネスが実行してしまう。

    rovecode のすること

    まず既定で拒否するワイルドカード規則、次に禁止が実行にも人間にも届かない execpolicy の判定、そして訂正済みの引数に対する承認カード。四層を重ねますが、どれもサンドボックスのふりはしません。

    rules → execpolicy → approval → runtime denylist + cwd lock
  4. The /rewind picker: rewind to a turn, rows #38 to #41 with #40 selected

    04問題

    40 ターン目でおかしくなり、戻る道が新しい会話しかない。

    rovecode のすること

    sha256 のハッシュ連鎖を持つ追記専用の JSONL セッションツリー。/rewind はターン選択を開き、任意のターンから分岐し、そのターンの全文をエディタに埋めます。shadow-git のチェックポイントはあなたの .git に触れずに 3 つのモードで復元します。

    /rewind /checkpoints /restore rovecode trace <session-id>
  1. 01sextant コックピット
  2. 02ホットリロードされるプロバイダ
  3. 03MCP クライアント
  4. 04安全のはしご
  5. 05セッションツリー + チェックポイント
  6. 06Zed + JetBrains 向け ACP
  7. 07ヘッドレス HTTP + SSE
  8. 08背景のサブエージェント
  9. 09フック
  10. 10OpenTelemetry

04機能

十の機能、それぞれが file:line の跡を持つ移植。

Rovecode は pi、opencode、codex、cline、aider、gemini-cli などから裏づけのあるパターンを移植します。移植が着地するのは、作業前に書かれた基準に照らして新しい文脈の批評者が検証したあとだけです。

表層

sextant コックピット

100×30 以上のトゥルーカラー TTY に 6 パネル:git ステータス付きのファイル、ハイライト帯と ± 差分付きのコード、簡潔なツール行、計画、使用量、マスコット。3 つのパレット、/theme は実行中に切り替え、--classic は pi-tui のチャットを保ちます。

rovecode · ROVECODE_TUI=sextant|classic · /theme night|ember|contrast
sextant フレームの切り抜き:ファイルツリーと、編集のハイライト帯があるコードパネル

プロバイダ

ホットリロードされるプロバイダ

16 の組み込みに加え、providers.json に登録したものすべて。呼び出しごとに生きたスナップショットからプロバイダを解決します。別のターミナルで追加すれば、動作中のコックピットが次の呼び出しで使います。再起動は不要です。

rovecode provider add|list|test · rovecode model use provider/model
~/.rovecode/providers.json
{
"default": "kaesra/zai-org/glm-5.3-flash",
"providers": {
"kaesra": {
"baseUrl": "https://api.kaesra.tech/v1",
"protocol": "openai",
"keyEnv": "KAESRA_API_KEY"
},
"homelab": {
"baseUrl": "http://10.0.0.7:8000/v1",
"protocol": "openai",
"noKey": true,
"models": ["qwen3-coder-30b"]
}
}
}
  • 文脈

    MCP クライアント

    .rovecode/mcp.json からの stdio と HTTP サーバ。2 つのレジストリツールによる遅延開示で、待機中のサーバはほぼゼロトークンです。

    mcp_list · mcp_call
  • 安全

    安全のはしご

    すべてのツール呼び出しは実行前に四段を登ります。禁止された argv はどのフックが見るより先に拒否されます。--yolo は確認を飛ばしますが、拒否規則は決して飛ばしません。

    rules → execpolicy → approval → runtime

  • 記憶

    セッションツリー + チェックポイント

    sha256 のハッシュ連鎖を持つ追記専用 JSONL。/rewind で分岐、/resume で再開、shadow-git のチェックポイントは 3 つのモードで復元し、あなたの .git には決して触れません。

    /rewind · /checkpoints · /restore
  • Zed + JetBrains 向け ACP

    stdio 上の Agent Client Protocol v1、公式 SDK。

    rovecode acp
  • ヘッドレス HTTP + SSE

    セッション、一本の RunEvent ストリーム、/doc の OpenAPI。ポート 4100、ループバックのみ。

    rovecode serve
  • 背景のサブエージェント

    上限付き FIFO の子セッション、既定で同時 3 つ。メモは親の次のターンに届きます。

    /tasks
  • フック

    .rovecode/hooks.ts に型付きのフックが 9 つ、それぞれ 5 秒で打ち切り。pre_tool は拒否しかできません。

    pre_tool · approval · on_event
  • OpenTelemetry

    実行ごとに一本のトレース:run ⊃ turn ⊃ tool にトークン、レイテンシ、費用。エンドポイント未設定ならエクスポータもなし。

    ROVECODE_OTEL_ENDPOINT

05セキュリティと運用

すべてのツール呼び出しの前に4つの層。あなたが設定していないマシンへは何も出ていきません。

READMEが述べるとおりの安全モデルを、限界も含めて示します。各層は何を判断し、どこで止まるかを名乗ります。どれもサンドボックスではありません。

  1. 層 01

    01rules

    ツールとargvに対する、既定で拒否のワイルドカード規則。禁止パターンは何かが動く前に拒否されます。

    限界意図ではなくパターンの照合です。危険なコマンドの見慣れない書き方は次の層へ渡ります。

  2. 層 02

    02execpolicy

    解析済みargvへの判定:allow、prompt、forbidden。forbiddenは実行にも人間にも届きません。

    限界読むのはコマンドであって、それが走るシェルではありません。エイリアスやスクリプトの中身は見通せません。

  3. 層 03

    03approval

    修正後の引数について、許可・常に許可・拒否の1枚のカード。回答はセッション単位でキャッシュされ、子エージェントは尋ねられません。

    限界人間の判断です。--yolo はこの段を飛ばしますが、その上の拒否規則は決して飛ばしません。

  4. 層 04

    04runtime

    実行時のbash拒否リストとcwdロック。Escは実行中の呼び出しを、Windowsではそのプロセスツリー全体を終了させます。

    限界隔離ではなく委譲です。信頼できない作業はコンテナかmicroVMに置いてください。

運用とデータ

  • 01

    定義からしてセルフホスト

    あなたのマシンか CI でソースから動きます。アカウントは任意です。料金ページのプランを開くだけで、CLI を閉ざすことはありません。要件は Bun ≥ 1.3.14 のみです。

  • 02

    phone-homeなし

    外向きの通信は、設定したプロバイダ、あなたが列挙したMCPサーバー、そしてモデルが求めたときのweb_fetchだけです。料金カタログはオフラインのスナップショットで、自動更新はありません。

  • 03

    テレメトリはオプトイン

    ROVECODE_OTEL_ENDPOINT を設定するまでOpenTelemetryの送信は行われません。設定しても運ぶのはid・サイズ・結果だけで、プロンプトや引数や出力は決して含みません。

  • 04

    構造としての監査証跡

    セッションはsha256ハッシュチェーン付きの追記専用JSONLです。すべての実行が1本のトレース(run ⊃ turn ⊃ tool)を出力します。中断したものも含みます。

  • 05

    プラットフォームの状況

    Windowsが第一です。開発とリリースゲートはWindows 11で走ります。POSIXパスはテスト済みですが、LinuxとmacOSはまだCIで検証されていません。

  • 06

    ライセンス

    AGPL-3.0-only。自由に改変・再配布できます。改変したビルドをネットワークサービスとして動かす場合、その利用者にソースを提供する義務があります。

06ターミナルから

160×44 の本物のフレーム四枚、読む価値のある箇所に番号を振って。

固定クロックのもと sextant のペインタでヘッドレスに描画されています。TUI が描くのと同じコード経路であって、モックアップではありません。フレームに触れると平らになり、行に触れるとその印が灯ります。

rovecode · atlas · feature/auth · 160×44real frame
編集後の sextant フレーム:差分モードのコードパネルが一つのハンクを示し、メッセージパネルが読み取りと編集の行を並べる

編集が着地した。コードパネルはまさにそのハンクを映す。

承認された編集の前に取得し、承認を経ない編集のあとは編集自身のアンカーから再構成しています。

  1. 1編集が着地したら ± 差分モードへ切り替える
  2. 2ディスク上のファイルに対する +4 −1 を読む
  3. 3簡潔なツール行を辿る:読み取り、次に編集
  4. 4コンテキストが 200k の 13 % まで満ちるのを見る
rovecode · atlas · feature/auth · 160×44real frame
承認カードが開いた sextant フレーム:bash bun test tests/auth.test.ts、許可 常に 拒否

シェルコマンドがうなずきを待つ。一枚のカード、三つの答え。

承認は訂正済みの引数に対して解決され、セッション単位で記憶されます。子エージェントは尋ねられません。

  1. 1走る前に正確な argv を見る
  2. 2許可・常に・拒否から選ぶ。Esc は拒否
  3. 3ヘッダがあなた待ちに変わる
  4. 4マスコットがうなずきを求め、そして覚える
rovecode · atlas · feature/auth · 160×44real frame
実行後の sextant フレーム:run モードのコードパネルが 18 件成功の bun test 出力を示し、計画は 4/4 で完了

テストが走った。$ パネルが出力を保ち、ヘッダが時計を止める。

PASS と FAIL のチップは、ツール自身のヘッダ行から終了コードを読みます。

  1. 1$ モードで実行出力を読む、18 件成功
  2. 2計画は 4/4 ステップで閉じる
  3. 3ツール行が出力の最終行を運ぶ
  4. 4費用はオフラインカタログから $0.071
rovecode · atlas · feature/auth · 160×44real frame
クルーボードを開いた sextant フレーム:二つのレーン、テスト作成が実行中でレビューは完了

背景のタスク二つ、それぞれ一レーンずつ、クルーボードに。

子セッションは唯一のエージェントループを共有します。TUI を終えると生きている子はすべて取り消されます。

  1. 1⌃a で ∷ agents ボードを開く
  2. 2各レーンはラベル、経過時間、状態を示す
  3. 3クルーの要約は計画パネルに残る
  4. 4その間も親の実行は編集を続ける

07クイックスタート

クローンから動くエージェントまで三コマンド。

プロバイダ未設定なら、単発の実行は台本付きのモックプロバイダを使います。パッケージングのスモークテストも同じ仕組みです。

  1. 01

    クローンしてリンクする(Bun ≥ 1.3.14)

    CLI の入口は bun が実行する TypeScript で、node では動きません。bun link が rovecode を PATH に置きます。

    $ git clone https://github.com/9Code-Labs/rovecode && cd rovecode && bun install && bun link
  2. 02

    モデルをつなぐ

    rovecode setup が案内します。プロバイダを選び、鍵を伏せて貼り、小さなテスト呼び出しを一度、完了。あるいは rovecode auth set で鍵を直接保存するか、ROVECODE_BASE_URL を OpenAI 互換の任意のエンドポイントに向けます。

    $ rovecode setup
    または
    $ rovecode auth set anthropic
  3. 03

    タスクを走らせるかコックピットを開く

    素の rovecode は sextant の画面を開きます。引用符付きのプロンプトは単発の実行で、--output json はちょうど一つの結果オブジェクトを返します。

    $ rovecode "fix the failing test"
    $ run · exit 0
    実行出力:18 件成功、0 件失敗、41 回の expect() 呼び出し、1 ファイルで 18 件のテストを実行。
13
ホスト型 api
3
ローカルランタイム

08プロバイダ

16 の組み込みプロバイダ、または OpenAI 互換の任意の URL。

保存した資格情報は <NAME>_API_KEY 環境変数に勝ち、明示した ROVECODE_BASE_URL / ROVECODE_API_KEY の組は両方に勝ちます。

ホスト型 api

ローカルランタイム

  • kaesra
  • openai
  • anthropic
  • deepseek
  • groq
  • openrouter
  • together
  • mistral
  • cerebras
  • fireworks
  • perplexity
  • xai
  • moondream
  • ollama
  • lmstudio
  • vllm

● ローカルランタイムに鍵は不要 · rovecode auth set <名前> は鍵を ~/.rovecode/credentials.json に保存します。ターミナルで尋ねられ、決して表示されません。

任意のエンドポイント · 実行中

別のターミナルでプロバイダを追加すれば、動作中のコックピットが次の呼び出しで拾います。再起動は不要です。

$ rovecode provider add homelab http://10.0.0.7:8000/v1 --no-key
~/.rovecode/providers.json
{
"default": "kaesra/zai-org/glm-5.3-flash",
"providers": {
"kaesra": {
"baseUrl": "https://api.kaesra.tech/v1",
"protocol": "openai",
"keyEnv": "KAESRA_API_KEY"
},
"homelab": {
"baseUrl": "http://10.0.0.7:8000/v1",
"protocol": "openai",
"noKey": true,
"models": ["qwen3-coder-30b"]
}
}
}

09彼らの言葉で

レビューをターミナルへ移したチーム。

  • レビューがターミナルに移り、承認カードが会話そのものになりました。やり取りは三分の一で、出荷量は変わりません。

    Aylin Demirci

    Head of Platform · Northwind Robotics

  • 既定拒否のポリシーがあったからセキュリティが承認しました。すべてのツール呼び出しが、私たちがすでに読んでいるログの一行です。

    Marcus Oyelaran

    Staff Engineer · Harbourline Payments

  • 12 人、ローカルモデル、間にベンダーなし。顧客のコードが動くことを許された場所で動きます。

    Inés Ferrer

    創業者 · Meridian Studio

ページのために書いた、架空のチームによる例示の引用です。公開前に実際のものと入れ替えます。

10料金

無料で始める。出荷するチームのための料金。

どのプランも同じエージェントを、同じ既定拒否のポリシーの背後で動かします。違うのは、どれだけ動かすか、誰と動かすかです。

  • Free

    自分のリポジトリでエージェントを試すために。

    $0/ 月

  • Pro

    毎日これで出荷する一人のエンジニアのために。

    $20/ 月

  • Max

    一週間をこの中で過ごすエンジニアのために。

    $200/ 月

  • Teams

    クレジット、知識、ポリシーを共有するチームのために。

    $80/ 月

    最低 $80 · フルシート 1 つあたり $40 / 月

すべてのプランを見る

11よくある質問

反論に、具体で答える。

シェルをエージェントに預ける前に人が尋ねる七つの問い。どの答えも仕組みと、それがどこで止まるかを述べます。

ここにあるものはすべて README.md の「安全モデル」「既知の制限」「可観測性」「ライセンスと表示」から取っています。README が限界を認めるところでは、このページも認めます。

いいえ。すべてのツール呼び出しの前と周囲で四層が重なって動きます。既定で拒否するポリシー規則、execpolicy の判定(禁止されたコマンドは実行にも人間にも届きません)、訂正済み引数に対する承認ゲート、そして cwd ロック付きの実行時 bash 拒否リストです。bash がどこで動くかは選べます(直接、WSL2、Docker)が、どの段も委譲であって隔離ではありません。信頼できない作業にはコンテナかマイクロ VM を使ってください。

12rovecode を手に入れる

六つのパネル。十六のプロバイダ。無料で始めて、チームには料金を。

$ git clone https://github.com/9Code-Labs/rovecode && cd rovecode && bun install && bun link
雲のマスコット、Rovecode, 親指を立てて