Перейти до вмісту
  • відкритий код
  • 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
TUI sextant розміром 160 на 44 комірки: дерево файлів зі статусами git, панель коду з src/auth/callback.ts і підсвіченими зміненими рядками, панель повідомлень із рядками інструментів читання та правки і картка підтвердження з проханням запустити bun test, план на кроці 1 з 4, 13 відсотків витраченого контексту та хмаринковий улюбленець rovecode, що чекає на кивок.
+4 −1 застосованоспершу спитати · картка підтвердженняконтекст 13 % від 200k

Справжній кадр: картка підтвердження для bun test, рядок правки +4 −1, контекст на 13 % від 200k. Намальовано художниками sextant при фіксованому годиннику.

  • 2,200+тестів
  • 16вбудованих провайдерів
  • 4рівні політики
  • 15мов на цій сторінці
  • AGPL-3.0ліцензія

Кодовий агент для термінала. TypeScript на Bun, 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 названих провайдерів або будь-яка точка доступу, сумісна з OpenAI чи Anthropic, із providers.json; провайдер, доданий в іншому терміналі, обслужить уже наступний виклик. Ланцюги відкату за ролями зсуваються на 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, де заборонене не доходить ані до виконання, ані до людини, потім картка підтвердження на виправлених аргументах. 4 накладені шари, і жоден не вдає пісочницю.

    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

    Дерево сесії JSONL лише на дозапис із ланцюгом хешів sha256. /rewind відкриває вибір ходів, гілкується від будь-якого і підставляє в редактор повний текст того ходу; контрольні точки shadow-git відновлюють у 3 режимах, не чіпаючи ваш .git.

    /rewind /checkpoints /restore rovecode trace <session-id>
  1. 01кокпіт sextant
  2. 02провайдери з гарячим перезавантаженням
  3. 03Клієнт MCP
  4. 04Драбина безпеки
  5. 05Дерево сесії + контрольні точки
  6. 06ACP для Zed + JetBrains
  7. 07Безголовий HTTP + SSE
  8. 08Фонові підагенти
  9. 09Гаки
  10. 10OpenTelemetry

04можливості

Десять можливостей, кожна — перенесення зі слідом file:line.

Rovecode переносить підтверджені шаблони з pi, opencode, codex, cline, aider, gemini-cli та інших. Перенесення лягає лише після того, як критик зі свіжим контекстом звірить його з планкою, записаною до початку роботи.

поверхня

кокпіт sextant

6 панелей на truecolor-TTY не менше 100×30: файли зі статусом 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

    Сервери stdio та HTTP з .rovecode/mcp.json. Ліниве розкриття через 2 інструменти реєстру, тож простоюючий сервер коштує майже нуль токенів.

    mcp_list · mcp_call
  • безпека

    Драбина безпеки

    Кожен виклик інструмента піднімається на чотири щаблі, перш ніж виконатися. Заборонений argv відхиляється до того, як його побачить будь-який гак; --yolo пропускає запити, але ніколи правила заборони.

    rules → execpolicy → approval → runtime

  • пам'ять

    Дерево сесії + контрольні точки

    JSONL лише на дозапис із ланцюгом хешів sha256. /rewind гілкується, /resume продовжує, контрольні точки shadow-git відновлюють у 3 режимах і ніколи не чіпають ваш .git.

    /rewind · /checkpoints · /restore
  • ACP для Zed + JetBrains

    Agent Client Protocol v1 через stdio, офіційний SDK.

    rovecode acp
  • Безголовий HTTP + SSE

    Сесії, один потік RunEvent, OpenAPI на /doc. Порт 4100, лише петля.

    rovecode serve
  • Фонові підагенти

    Обмежені дочірні сесії FIFO, типово 3 одночасно; нотатки приходять на наступному ході батька.

    /tasks
  • Гаки

    9 типізованих гаків у .rovecode/hooks.ts, кожен обмежений 5 с. pre_tool може лише заборонити.

    pre_tool · approval · on_event
  • OpenTelemetry

    Один трейс на запуск: run ⊃ turn ⊃ tool із токенами, затримкою та вартістю. Точку доступу не задано — експортера немає.

    ROVECODE_OTEL_ENDPOINT

05безпека та розгортання

Чотири шари перед кожним викликом інструмента. Ніщо не полишає машину, яку ви не налаштували.

Модель безпеки так, як її подає README, разом з обмеженнями. Кожен шар називає, що він вирішує і де спиняється; жоден з них не є пісочницею.

  1. шар 01

    01rules

    Правила з підстановками в режимі deny-by-default над інструментом і argv. Заборонений шаблон відхиляється до того, як щось запуститься.

    межаЗіставлення шаблонів, а не намірів: новий запис небезпечної команди йде до наступного шару.

  2. шар 02

    02execpolicy

    Вердикти щодо розібраного argv: allow, prompt, forbidden. Заборонене не доходить ні до виконання, ні до людини.

    межаЧитає команду, а не оболонку, в якій вона піде; аліас або тіло скрипта для нього непрозорі.

  3. шар 03

    03approval

    Одна картка щодо виправлених аргументів: дозволити, завжди, відхилити. Відповіді кешуються на сесію; підагенти питати не можуть.

    межаРішення людини: --yolo пропускає цей щабель, але ніколи правила заборони вище нього.

  4. шар 04

    04runtime

    Денилист bash і замок на cwd під час виконання; Esc убиває поточний виклик, а у Windows — усе його дерево процесів.

    межаДелегування, а не ізоляція. Недовіреній роботі місце в контейнері або мікро-ВМ.

розгортання та дані

  • 01

    Self-hosted за визначенням

    Працює з вихідного коду на вашій машині або у вашому CI. Обліковий запис необов'язковий: він відкриває плани зі сторінки цін і ніколи не замикає CLI. Bun ≥ 1.3.14 — єдина вимога.

  • 02

    Жодних дзвінків додому

    Вихідний трафік іде лише до налаштованого вами провайдера, до перелічених вами MCP-серверів і до web_fetch, коли модель про це просить. Каталог цін — офлайн-знімок; самооновлення немає.

  • 03

    Телеметрія за згодою

    Експорт OpenTelemetry вимкнений, доки не задано ROVECODE_OTEL_ENDPOINT; і навіть тоді він несе ідентифікатори, розміри та результати — ніколи промпти, аргументи чи вивід.

  • 04

    Слід аудиту за побудовою

    Сесії — це JSONL лише на дозапис із ланцюгом хешів sha256; кожен запуск експортує один trace (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Дивіться, як контекст доходить до 13 % від 200k
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 показує вивід bun test із 18 пройденими, план 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Відкрийте дошку ∷ agents через ⌃a
  2. 2Кожна смуга показує мітку, час і статус
  3. 3Зведення екіпажу лишається в панелі плану
  4. 4Тим часом батьківський запуск далі править

07швидкий старт

Три команди від клону до працюючого агента.

Без налаштованого провайдера одиничні запуски використовують сценарного підробного провайдера — так само працює й димовий тест пакування.

  1. 01

    Клонувати і зв'язати (Bun ≥ 1.3.14)

    Точка входу CLI — TypeScript, який запускає bun; 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(), 18 тестів в 1 файлі.
13
розміщені api
3
локальні середовища

08провайдери

16 вбудованих провайдерів або будь-який URL, сумісний з OpenAI.

Збережені облікові дані важливіші за змінні середовища <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

  • Дванадцять людей, локальні моделі, жодного постачальника між нами. Працює там, де код наших клієнтів має право працювати.

    Inés Ferrer

    Засновниця · Meridian Studio

Ілюстративні цитати вигаданих команд, написані для сторінки, — до запуску їх замінять справжні.

10ціни

Безкоштовно для старту. З ціною для команди, яка випускає.

Кожен план запускає того самого агента за тією самою політикою, що відмовляє за замовчуванням. Плани відрізняються тим, скільки його ви запускаєте — і з ким.

  • Free

    Щоб спробувати агента на своїх репозиторіях.

    $0/ місяць

  • Pro

    Для одного інженера, який випускає з ним щодня.

    $20/ місяць

  • Max

    Для інженера, чий тиждень минає всередині нього.

    $200/ місяць

  • Teams

    Для команди, яка ділить кредити, знання й політику.

    $80/ місяць

    мінімум $80 · $40 за повне місце / місяць

Усі плани

11питання

Заперечення — з конкретними відповідями.

Сім питань, які ставлять, перш ніж довірити агентові оболонку. Кожна відповідь називає механізм і місце, де він закінчується.

Усе тут узято з розділів README.md: Модель безпеки, Відомі обмеження, Спостережуваність та Ліцензія і повідомлення. Де README говорить про межу, про неї говорить і ця сторінка.

Ні. Перед кожним викликом інструмента й навколо нього працюють чотири накладені шари: правила політики, що забороняють за замовчуванням, вироки execpolicy (заборонена команда не доходить ані до виконання, ані до людини), ворота підтвердження на виправлених аргументах і список заборон bash під час роботи з блокуванням cwd. Де виконується bash — можна обрати: напряму, WSL2 чи Docker, але кожен щабель — це делегування, а не ізоляція. Для недовіреної роботи використовуйте контейнер або мікроВМ.

12взяти rovecode

Шість панелей. Шістнадцять провайдерів. Безкоштовно для старту, з ціною для команд.

$ git clone https://github.com/9Code-Labs/rovecode && cd rovecode && bun install && bun link
Rovecode, хмаринковий улюбленець, з піднятим великим пальцем