Ir al contenido
  • código abierto
  • AGPL-3.0
  • v0.2.0
  • Bun ≥ 1.3.14
  • TypeScript

Un agente de programación en terminal con cabina, no con un hilo de chat.

Rovecode corre sobre Bun, habla con 16 proveedores o con cualquier endpoint compatible con OpenAI, y pasa cada llamada de herramienta por una política que deniega por defecto antes de tocar tu repositorio. Software libre bajo AGPL-3.0.

$ rovecode "fix the failing test"
rovecode · atlas · feature/authreal frame
La TUI sextant en 160 por 44 celdas: árbol de archivos con estado de git, el panel de código mostrando src/auth/callback.ts con las líneas editadas resaltadas, el panel de mensajes con filas de herramienta de lectura y edición y una tarjeta de aprobación que pide ejecutar bun test, el plan en el paso 1 de 4, el 13 por ciento de contexto usado y la mascota nube rovecode pidiendo el visto bueno.
+4 −1 aplicadopreguntar primero · tarjeta de aprobacióncontexto 13 % de 200k

Fotograma real: la tarjeta de aprobación de bun test, la fila de edición +4 −1, el contexto al 13 % de 200k. Renderizado por los pintores de sextant con reloj fijo.

  • 2,200+pruebas
  • 16proveedores integrados
  • 4capas de política
  • 15idiomas en esta página
  • AGPL-3.0licencia

Un agente de programación para la terminal. TypeScript sobre Bun, 47 patrones portados, una política que deniega por defecto delante de cada herramienta.

equipos que usan rovecode

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

Nombres de relleno, hasta que los primeros clientes acepten aparecer.

02la cabina

Seis paneles en una pantalla. El archivo que te importa nunca se va con el scroll.

Archivos con estado de git, código con la banda de resaltado y diff ±, filas de herramienta compactas, plan, uso y la mascota. Renderizado sin pantalla por los pintores de sextant con reloj fijo: el mismo camino de código que dibuja la TUI, no una maqueta.

panel de mensajes · fila a fila

Una ejecución, transcrita del fotograma de arriba.

Cada llamada de herramienta es una fila: el verbo, el archivo y qué cambió. La edición aterrizó como +4 −1. El comando de shell espera tras una tarjeta con tres respuestas; Esc deniega, y la respuesta vale para el resto de la sesión.

Los agentes hijos no pueden preguntar. Un argv prohibido nunca llega a la tarjeta.

03problemas → soluciones

Cuatro cosas que salen mal con los agentes de terminal, y qué hace rovecode con cada una.

Dichas como las dirías frente al teclado, respondidas con el mecanismo y su límite. Cada tira es un recorte de fotograma real o el archivo de configuración real.

  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"
    },

    01problema

    Todo agente llega soldado a la API de un solo proveedor y a su página de precios.

    qué hace rovecode

    Una sola costura StreamFn y un registro de proveedores vivo. 16 proveedores con nombre, o cualquier endpoint compatible con OpenAI o Anthropic desde providers.json; un proveedor añadido en otra terminal atiende la siguiente llamada. Las cadenas de respaldo por rol avanzan ante un 429 o un 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

    02problema

    Un hilo de chat saca de pantalla el archivo que te importa mientras el agente lo edita.

    qué hace rovecode

    Una cabina con paneles: archivos, código, mensajes, plan, uso y la mascota nube. El panel de mensajes deja cada llamada de herramienta en una fila compacta; el panel de código muestra el único fragmento que aterrizó.

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

    03problema

    El modelo pide rm -rf y el arnés lo ejecuta porque nadie dijo que no a tiempo.

    qué hace rovecode

    Primero reglas comodín que deniegan por defecto, luego veredictos de execpolicy donde lo prohibido no llega ni a la ejecución ni a una persona, y luego una tarjeta de aprobación sobre los argumentos corregidos. 4 capas apiladas, y ninguna finge ser un sandbox.

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

    04problema

    El turno 40 sale mal y la única vuelta atrás es una conversación nueva.

    qué hace rovecode

    Un árbol de sesión JSONL de solo anexado con cadena de hash sha256. /rewind abre el selector de turnos, ramifica desde cualquiera y rellena el editor con su texto completo; los puntos de control shadow-git restauran en 3 modos sin tocar tu .git.

    /rewind /checkpoints /restore rovecode trace <session-id>
  1. 01cabina sextant
  2. 02proveedores, recargados en caliente
  3. 03Cliente MCP
  4. 04Escalera de seguridad
  5. 05Árbol de sesión + puntos de control
  6. 06ACP para Zed + JetBrains
  7. 07HTTP + SSE sin interfaz
  8. 08Subagentes en segundo plano
  9. 09Hooks
  10. 10OpenTelemetry

04capacidades

Diez capacidades, cada una un porte con rastro file:line.

Rovecode porta patrones con evidencia desde pi, opencode, codex, cline, aider, gemini-cli y otros. Un porte solo aterriza cuando un crítico con contexto limpio lo verifica contra un listón escrito antes de empezar.

superficie

cabina sextant

6 paneles en un TTY truecolor de al menos 100×30: archivos con estado de git, código con banda de resaltado y diff ±, filas de herramienta compactas, plan, uso, la mascota. 3 paletas, /theme cambia en caliente; --classic conserva el chat de pi-tui.

rovecode · ROVECODE_TUI=sextant|classic · /theme night|ember|contrast
Recorte del fotograma sextant: árbol de archivos y el panel de código con la banda de resaltado de la edición

proveedores

proveedores, recargados en caliente

16 integrados más lo que registres en providers.json. Cada llamada resuelve el proveedor contra la instantánea viva: añade uno en otra terminal y la cabina en marcha lo usa en la siguiente llamada. Sin reiniciar.

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"]
}
}
}
  • contexto

    Cliente MCP

    Servidores stdio y HTTP desde .rovecode/mcp.json. Revelación perezosa mediante 2 herramientas de registro, así un servidor inactivo cuesta casi cero tokens.

    mcp_list · mcp_call
  • seguridad

    Escalera de seguridad

    Cada llamada de herramienta sube cuatro peldaños antes de ejecutarse. Un argv prohibido se deniega antes de que lo vea ningún hook; --yolo salta las preguntas, nunca las reglas de denegación.

    rules → execpolicy → approval → runtime

  • memoria

    Árbol de sesión + puntos de control

    JSONL de solo anexado con cadena de hash sha256. /rewind ramifica, /resume retoma, los puntos shadow-git restauran en 3 modos y nunca tocan tu .git.

    /rewind · /checkpoints · /restore
  • ACP para Zed + JetBrains

    Agent Client Protocol v1 sobre stdio, SDK oficial.

    rovecode acp
  • HTTP + SSE sin interfaz

    Sesiones, un flujo RunEvent, OpenAPI en /doc. Puerto 4100, solo loopback.

    rovecode serve
  • Subagentes en segundo plano

    Sesiones hijas FIFO acotadas, 3 simultáneas por defecto; las notas llegan en el siguiente turno del padre.

    /tasks
  • Hooks

    9 hooks tipados en .rovecode/hooks.ts, cada uno acotado a 5 s. pre_tool solo puede denegar.

    pre_tool · approval · on_event
  • OpenTelemetry

    Una traza por ejecución: run ⊃ turn ⊃ tool con tokens, latencia y coste. Sin endpoint definido, sin exportador.

    ROVECODE_OTEL_ENDPOINT

05seguridad y despliegue

Cuatro capas delante de cada llamada a una herramienta. Nada sale de la máquina que no hayas configurado.

El modelo de seguridad tal como lo enuncia el README, límites incluidos. Cada capa dice qué decide y dónde se detiene; ninguna es un sandbox.

  1. capa 01

    01rules

    Reglas con comodines en deny por defecto sobre la herramienta y el argv. Un patrón prohibido se deniega antes de que nada se ejecute.

    límiteCoincidencia de patrones, no intención: una forma nueva de escribir un comando peligroso pasa a la capa siguiente.

  2. capa 02

    02execpolicy

    Veredictos sobre el argv analizado: allow, prompt, forbidden. Lo prohibido no llega ni a la ejecución ni a una persona.

    límiteLee el comando, no el shell donde correrá; un alias o el cuerpo de un script le resultan opacos.

  3. capa 03

    03approval

    Una tarjeta sobre los argumentos revisados con permitir, siempre y denegar. Las respuestas se guardan por sesión; los subagentes no pueden preguntar.

    límiteUna decisión humana: --yolo se salta este peldaño, nunca las reglas de denegación de arriba.

  4. capa 04

    04runtime

    Una denylist de bash y un bloqueo del cwd en la ejecución; Esc mata la llamada en curso y, en Windows, todo su árbol de procesos.

    límiteDelegación, no aislamiento. El trabajo no confiable pertenece a un contenedor o a una microVM.

despliegue y datos

  • 01

    Autoalojado por definición

    Se ejecuta desde el código en tu máquina o en tu CI. La cuenta es opcional: desbloquea los planes de la página de precios y nunca bloquea la CLI. Bun ≥ 1.3.14 es el único requisito.

  • 02

    Sin phone-home

    El tráfico saliente va solo al proveedor que configuraste, a los servidores MCP que listaste y a web_fetch cuando el modelo lo pide. El catálogo de precios es una instantánea sin conexión; no hay autoactualización.

  • 03

    La telemetría es opt-in

    La exportación de OpenTelemetry está apagada hasta que se define ROVECODE_OTEL_ENDPOINT; incluso entonces lleva ids, tamaños y resultados — nunca prompts, argumentos ni salidas.

  • 04

    Rastro de auditoría por construcción

    Las sesiones son JSONL solo-append con una cadena de hashes sha256; cada ejecución exporta una traza (run ⊃ turn ⊃ tool), incluidas las canceladas.

  • 05

    Estado de plataformas

    Windows primero: el desarrollo y la puerta de release corren en Windows 11. Las rutas POSIX están probadas; Linux y macOS aún no se verifican en CI.

  • 06

    Licencia

    AGPL-3.0-only. Modifica y redistribuye libremente; ejecutar una versión modificada como servicio de red te obliga a ofrecer su código a esos usuarios.

06desde la terminal

Cuatro fotogramas reales a 160×44, con lo que vale la pena leer numerado.

Renderizados sin pantalla por los pintores de sextant con reloj fijo: el mismo camino de código que dibuja la TUI, no una maqueta. Pasa el cursor sobre un fotograma para aplanarlo; sobre una fila para encender su marca.

rovecode · atlas · feature/auth · 160×44real frame
fotograma sextant tras una edición: el panel de código en modo diff muestra un fragmento, el panel de mensajes lista filas de lectura y edición

La edición aterrizó. El panel de código muestra exactamente ese fragmento.

Capturado antes de una edición aprobada, reconstruido desde las anclas de la propia edición tras una sin aprobar.

  1. 1Cambia a modo diff ± cuando aterriza la edición
  2. 2Lee +4 −1 contra el archivo en disco
  3. 3Sigue las filas compactas: lectura y luego edición
  4. 4Mira el contexto llenarse al 13 % de 200k
rovecode · atlas · feature/auth · 160×44real frame
fotograma sextant con la tarjeta de aprobación abierta: bash bun test tests/auth.test.ts, permitir siempre denegar

Un comando de shell espera tu visto bueno. Una tarjeta, tres respuestas.

Las aprobaciones se resuelven sobre los argumentos corregidos y se recuerdan por sesión; los agentes hijos no pueden preguntar.

  1. 1Ve el argv exacto antes de que corra
  2. 2Elige permitir, siempre o denegar; Esc deniega
  3. 3La cabecera pasa a esperándote
  4. 4La mascota pide el visto bueno y luego lo recuerda
rovecode · atlas · feature/auth · 160×44real frame
fotograma sextant tras la ejecución: el panel de código en modo run muestra la salida de bun test con 18 pruebas superadas, plan 4/4 completo

Las pruebas corrieron. El panel $ guarda la salida; la cabecera congela el reloj.

Las etiquetas PASS y FAIL leen el código de salida de la propia línea de cabecera de la herramienta.

  1. 1Lee la salida en modo $, 18 superadas
  2. 2El plan cierra en 4/4 pasos
  3. 3La fila de herramienta lleva la última línea de salida
  4. 4El coste queda en $0.071 según el catálogo sin conexión
rovecode · atlas · feature/auth · 160×44real frame
fotograma sextant con el tablero de tripulación abierto: dos carriles, escribir pruebas en marcha y revisión terminada

Dos tareas en segundo plano, un carril cada una, en el tablero de tripulación.

Las sesiones hijas comparten el único bucle de agente; salir de la TUI cancela a todos los hijos vivos.

  1. 1Abre el tablero ∷ agents con ⌃a
  2. 2Cada carril muestra etiqueta, tiempo y estado
  3. 3El resumen de tripulación queda en el panel de plan
  4. 4Mientras tanto la ejecución padre sigue editando

07inicio rápido

Tres comandos desde el clon hasta un agente en marcha.

Sin proveedor configurado, las ejecuciones de una vez usan un proveedor simulado con guion; así funciona también la prueba de humo del empaquetado.

  1. 01

    Clonar y enlazar (Bun ≥ 1.3.14)

    La entrada de la CLI es TypeScript que ejecuta bun; node no puede correrla. bun link pone rovecode en el PATH.

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

    Conectar un modelo

    rovecode setup te guía: elige proveedor, pega la clave oculta, una llamada de prueba diminuta, listo. O guarda una clave directamente con rovecode auth set, o apunta ROVECODE_BASE_URL a cualquier endpoint compatible con OpenAI.

    $ rovecode setup
    o
    $ rovecode auth set anthropic
  3. 03

    Lanzar una tarea o abrir la cabina

    rovecode a secas abre la superficie sextant. Un prompt entre comillas es una ejecución única; --output json devuelve exactamente un objeto de resultado.

    $ rovecode "fix the failing test"
    $ run · exit 0
    Salida de la ejecución: 18 superadas, 0 fallidas, 41 llamadas a expect(), 18 pruebas en 1 archivo.
13
apis alojadas
3
runtimes locales

08proveedores

16 proveedores integrados, o cualquier URL compatible con OpenAI.

Las credenciales guardadas ganan a las variables de entorno <NAME>_API_KEY; un par explícito ROVECODE_BASE_URL / ROVECODE_API_KEY gana a ambas.

apis alojadas

runtimes locales

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

● los runtimes locales no necesitan clave · rovecode auth set <nombre> guarda una clave en ~/.rovecode/credentials.json, pedida en la terminal y nunca mostrada.

cualquier endpoint · en vivo

Añade un proveedor en otra terminal; la cabina en marcha lo toma en la siguiente llamada. Sin reiniciar.

$ 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"]
}
}
}

09en sus palabras

Equipos que llevaron la revisión a la terminal.

  • La revisión se mudó a la terminal y la tarjeta de aprobación se convirtió en la conversación. Entregamos lo mismo con un tercio del ida y vuelta.

    Aylin Demirci

    Head of Platform · Northwind Robotics

  • La política que deniega por defecto es la razón por la que seguridad dio el visto bueno. Cada llamada a una herramienta es una línea en un registro que ya leemos.

    Marcus Oyelaran

    Staff Engineer · Harbourline Payments

  • Doce personas, modelos locales, ningún proveedor en medio. Corre donde el código de nuestros clientes tiene permitido correr.

    Inés Ferrer

    Fundadora · Meridian Studio

Citas ilustrativas de equipos ficticios, escritas para la página: las reales las sustituyen antes del lanzamiento.

10precios

Gratis para empezar. Con precio para el equipo que entrega.

Todos los planes ejecutan el mismo agente tras la misma política que deniega por defecto. Los planes se diferencian en cuánto lo ejecutas, y con quién.

  • Free

    Para probar el agente en tus propios repositorios.

    $0/ mes

  • Pro

    Para una ingeniera que entrega con él cada día.

    $20/ mes

  • Max

    Para el ingeniero que pasa la semana dentro de él.

    $200/ mes

  • Teams

    Para un equipo que comparte créditos, conocimiento y política.

    $80/ mes

    mínimo $80 · $40 por asiento completo / mes

Ver todos los planes

11preguntas

Objeciones, respondidas con detalle.

Siete preguntas que la gente hace antes de confiar una shell a un agente. Cada respuesta nombra el mecanismo y dónde se detiene.

Todo esto sale de las secciones Modelo de seguridad, Limitaciones conocidas, Observabilidad y Licencia y avisos del README.md. Donde el README dice que hay un límite, esta página también.

No. Antes y alrededor de cada llamada de herramienta corren cuatro capas apiladas: reglas de política que deniegan por defecto, veredictos de execpolicy (un comando prohibido no llega ni a la ejecución ni a una persona), la puerta de aprobación sobre los argumentos corregidos y una lista de denegación de bash en tiempo de ejecución con bloqueo de cwd. Dónde corre bash es elegible —directo, WSL2 o Docker—, pero cada peldaño es delegación, no aislamiento. Para trabajo no confiable usa un contenedor o una microVM.

12obtener rovecode

Seis paneles. Dieciséis proveedores. Gratis para empezar, con precio para equipos.

$ git clone https://github.com/9Code-Labs/rovecode && cd rovecode && bun install && bun link
Rovecode, la mascota nube, con el pulgar arriba