Ir para o conteúdo
  • código aberto
  • AGPL-3.0
  • v0.2.0
  • Bun ≥ 1.3.14
  • TypeScript

Um agente de código no terminal com cabine, não com histórico de chat.

O Rovecode roda sobre Bun, fala com 16 provedores ou com qualquer endpoint compatível com OpenAI e passa cada chamada de ferramenta por uma política que nega por padrão antes de tocar no seu repositório. Software livre sob AGPL-3.0.

$ rovecode "fix the failing test"
rovecode · atlas · feature/authreal frame
A TUI sextant em 160 por 44 células: árvore de arquivos com status do git, o painel de código mostrando src/auth/callback.ts com as linhas editadas destacadas, o painel de mensagens com linhas de ferramenta de leitura e edição e um cartão de aprovação pedindo para rodar bun test, o plano no passo 1 de 4, 13 por cento de contexto usado e o mascote nuvem rovecode pedindo o aval.
+4 −1 aplicadoperguntar antes · cartão de aprovaçãocontexto 13 % de 200k

Quadro real: o cartão de aprovação do bun test, a linha de edição +4 −1, contexto em 13 % de 200k. Renderizado pelos pintores do sextant com relógio fixo.

  • 2,200+testes
  • 16provedores integrados
  • 4camadas de política
  • 15idiomas nesta página
  • AGPL-3.0licença

Um agente de código para o terminal. TypeScript sobre Bun, 47 padrões portados, uma política que nega por padrão na frente de cada ferramenta.

equipes que usam o rovecode

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

Nomes provisórios, até os primeiros clientes aceitarem ser listados.

02a cabine

Seis painéis numa tela. O arquivo que te importa nunca some na rolagem.

Arquivos com status do git, código com a faixa de destaque e diff ±, linhas de ferramenta compactas, plano, uso e o mascote. Renderizado sem tela pelos pintores do sextant com relógio fixo: o mesmo caminho de código que a TUI desenha, não uma maquete.

painel de mensagens · linha a linha

Uma execução, transcrita do quadro acima.

Cada chamada de ferramenta é uma linha: o verbo, o arquivo e o que mudou. A edição entrou como +4 −1. O comando de shell espera atrás de um cartão com três respostas; Esc nega, e a resposta vale pelo resto da sessão.

Agentes filhos não podem perguntar. Um argv proibido nunca chega ao cartão.

03problemas → soluções

Quatro coisas que dão errado com agentes de terminal, e o que o rovecode faz em cada uma.

Ditas como você diria no teclado, respondidas com o mecanismo e o seu limite. Cada faixa é um recorte de quadro real ou o arquivo de configuração 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 chega soldado à API de um único fornecedor e à sua página de preços.

    o que o rovecode faz

    Uma única costura StreamFn e um registro de provedores vivo. 16 provedores nomeados, ou qualquer endpoint compatível com OpenAI ou Anthropic vindo do providers.json; um provedor adicionado em outro terminal já atende a chamada seguinte. Cadeias de fallback por papel avançam num 429 ou 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

    Um histórico de chat empurra para fora da tela o arquivo que o agente está editando.

    o que o rovecode faz

    Uma cabine com painéis: arquivos, código, mensagens, plano, uso e o mascote nuvem. O painel de mensagens mantém cada chamada de ferramenta numa linha compacta; o painel de código mostra o único trecho que entrou.

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

    03problema

    O modelo pede rm -rf e o arcabouço executa porque ninguém disse não a tempo.

    o que o rovecode faz

    Primeiro regras curinga que negam por padrão, depois vereditos do execpolicy em que o proibido não chega nem à execução nem a uma pessoa, depois um cartão de aprovação sobre os argumentos corrigidos. 4 camadas empilhadas, e nenhuma finge ser um sandbox.

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

    04problema

    O turno 40 dá errado e o único caminho de volta é uma conversa nova.

    o que o rovecode faz

    Uma árvore de sessão JSONL somente-anexar com cadeia de hash sha256. /rewind abre o seletor de turnos, ramifica de qualquer um e preenche o editor com o texto completo daquele turno; checkpoints shadow-git restauram em 3 modos sem tocar no seu .git.

    /rewind /checkpoints /restore rovecode trace <session-id>
  1. 01cabine sextant
  2. 02provedores recarregados a quente
  3. 03Cliente MCP
  4. 04Escada de segurança
  5. 05Árvore de sessão + checkpoints
  6. 06ACP para Zed + JetBrains
  7. 07HTTP + SSE sem interface
  8. 08Subagentes em segundo plano
  9. 09Hooks
  10. 10OpenTelemetry

04recursos

Dez recursos, cada um um porte com trilha file:line.

O Rovecode porta padrões com evidência de pi, opencode, codex, cline, aider, gemini-cli e outros. Um porte só entra depois que um crítico de contexto limpo o verifica contra uma régua escrita antes do trabalho começar.

superfície

cabine sextant

6 painéis num TTY truecolor de pelo menos 100×30: arquivos com status do git, código com faixa de destaque e diff ±, linhas de ferramenta compactas, plano, uso, o mascote. 3 paletas, /theme troca a quente; --classic mantém o chat pi-tui.

rovecode · ROVECODE_TUI=sextant|classic · /theme night|ember|contrast
Recorte do quadro sextant: árvore de arquivos e o painel de código com a faixa de destaque da edição

provedores

provedores recarregados a quente

16 integrados mais tudo o que você registrar no providers.json. Cada chamada resolve o provedor contra o instantâneo vivo: adicione um em outro terminal e a cabine em execução usa na chamada seguinte. Sem 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 e HTTP do .rovecode/mcp.json. Revelação preguiçosa por 2 ferramentas de registro, então um servidor ocioso custa quase zero tokens.

    mcp_list · mcp_call
  • segurança

    Escada de segurança

    Cada chamada de ferramenta sobe quatro degraus antes de rodar. Um argv proibido é negado antes de qualquer hook ver; --yolo pula as perguntas, nunca as regras de negação.

    rules → execpolicy → approval → runtime

  • memória

    Árvore de sessão + checkpoints

    JSONL somente-anexar com cadeia de hash sha256. /rewind ramifica, /resume retoma, checkpoints shadow-git restauram em 3 modos e nunca tocam no seu .git.

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

    Agent Client Protocol v1 sobre stdio, SDK oficial.

    rovecode acp
  • HTTP + SSE sem interface

    Sessões, um fluxo RunEvent, OpenAPI em /doc. Porta 4100, apenas loopback.

    rovecode serve
  • Subagentes em segundo plano

    Sessões filhas FIFO limitadas, 3 simultâneas por padrão; as notas chegam no turno seguinte do pai.

    /tasks
  • Hooks

    9 hooks tipados em .rovecode/hooks.ts, cada um limitado a 5 s. pre_tool só pode negar.

    pre_tool · approval · on_event
  • OpenTelemetry

    Um trace por execução: run ⊃ turn ⊃ tool com tokens, latência e custo. Sem endpoint definido, sem exportador.

    ROVECODE_OTEL_ENDPOINT

05segurança e implantação

Quatro camadas diante de cada chamada de ferramenta. Nada sai da máquina que você não configurou.

O modelo de segurança como o README o enuncia, limites incluídos. Cada camada diz o que decide e onde para; nenhuma delas é um sandbox.

  1. camada 01

    01rules

    Regras com curingas em deny por padrão sobre a ferramenta e o argv. Um padrão proibido é negado antes que qualquer coisa rode.

    limiteCorrespondência de padrões, não intenção: uma grafia inédita de um comando perigoso passa para a camada seguinte.

  2. camada 02

    02execpolicy

    Vereditos sobre o argv analisado: allow, prompt, forbidden. O proibido não chega à execução nem a uma pessoa.

    limiteLê o comando, não o shell em que ele vai rodar; um alias ou o corpo de um script permanecem opacos.

  3. camada 03

    03approval

    Um cartão sobre os argumentos revisados com permitir, sempre e negar. As respostas ficam em cache por sessão; subagentes não podem perguntar.

    limiteUma decisão humana: --yolo pula este degrau, nunca as regras de negação acima dele.

  4. camada 04

    04runtime

    Uma denylist do bash e uma trava de cwd na execução; Esc mata a chamada em curso e, no Windows, toda a sua árvore de processos.

    limiteDelegação, não isolamento. Trabalho não confiável pertence a um contêiner ou a uma microVM.

implantação e dados

  • 01

    Auto-hospedado por definição

    Roda a partir do código na sua máquina ou na sua CI. A conta é opcional: ela libera os planos da página de preços e nunca trava a CLI. Bun ≥ 1.3.14 é o único requisito.

  • 02

    Sem phone-home

    O tráfego de saída vai apenas para o provedor que você configurou, para os servidores MCP que você listou e para o web_fetch quando o modelo pede. O catálogo de preços é um instantâneo offline; não há autoatualização.

  • 03

    Telemetria é opt-in

    A exportação OpenTelemetry fica desligada até ROVECODE_OTEL_ENDPOINT ser definido; mesmo assim ela carrega ids, tamanhos e resultados — nunca prompts, argumentos ou saída.

  • 04

    Trilha de auditoria por construção

    As sessões são JSONL somente-anexação com uma cadeia de hashes sha256; cada execução exporta um trace (run ⊃ turn ⊃ tool), inclusive as canceladas.

  • 05

    Status das plataformas

    Windows primeiro: o desenvolvimento e o portão de release rodam no Windows 11. Caminhos POSIX são testados; Linux e macOS ainda não são verificados na CI.

  • 06

    Licença

    AGPL-3.0-only. Modifique e redistribua livremente; rodar uma build modificada como serviço de rede obriga você a oferecer o código a esses usuários.

06do terminal

Quatro quadros reais em 160×44, com as partes que valem leitura numeradas.

Renderizados sem tela pelos pintores do sextant com relógio fixo: o mesmo caminho de código que a TUI desenha, não uma maquete. Passe o cursor num quadro para achatá-lo; numa linha para acender o marcador dela.

rovecode · atlas · feature/auth · 160×44real frame
quadro sextant depois de uma edição: o painel de código em modo diff mostra um trecho, o painel de mensagens lista linhas de leitura e edição

A edição entrou. O painel de código mostra exatamente aquele trecho.

Capturado antes de uma edição aprovada, reconstruído pelas âncoras da própria edição depois de uma sem aprovação.

  1. 1Mude para o modo diff ± quando a edição entrar
  2. 2Leia +4 −1 contra o arquivo em disco
  3. 3Siga as linhas compactas: leitura e depois edição
  4. 4Veja o contexto encher até 13 % de 200k
rovecode · atlas · feature/auth · 160×44real frame
quadro sextant com o cartão de aprovação aberto: bash bun test tests/auth.test.ts, permitir sempre negar

Um comando de shell espera um aval. Um cartão, três respostas.

Aprovações resolvem sobre os argumentos corrigidos e ficam guardadas por sessão; agentes filhos não podem perguntar.

  1. 1Veja o argv exato antes de rodar
  2. 2Escolha permitir, sempre ou negar; Esc nega
  3. 3O cabeçalho muda para esperando você
  4. 4O mascote pede o aval e depois lembra dele
rovecode · atlas · feature/auth · 160×44real frame
quadro sextant depois da execução: o painel de código em modo run mostra a saída do bun test com 18 aprovados, plano 4/4 concluído

Os testes rodaram. O painel $ guarda a saída; o cabeçalho congela o relógio.

As etiquetas PASS e FAIL leem o código de saída da própria linha de cabeçalho da ferramenta.

  1. 1Leia a saída em modo $, 18 aprovados
  2. 2O plano fecha em 4/4 passos
  3. 3A linha de ferramenta carrega a última linha da saída
  4. 4O custo fica em $0.071 pelo catálogo offline
rovecode · atlas · feature/auth · 160×44real frame
quadro sextant com o quadro da tripulação aberto: duas pistas, escrever testes em andamento e revisão concluída

Duas tarefas em segundo plano, uma pista cada, no quadro da tripulação.

As sessões filhas compartilham o único laço de agente; sair da TUI cancela todos os filhos vivos.

  1. 1Abra o quadro ∷ agents com ⌃a
  2. 2Cada pista mostra rótulo, tempo e status
  3. 3O resumo da tripulação fica no painel de plano
  4. 4Enquanto isso a execução pai continua editando

07início rápido

Três comandos do clone até um agente rodando.

Sem provedor configurado, execuções avulsas usam um provedor simulado por script — é assim que o teste de fumaça do empacotamento também funciona.

  1. 01

    Clonar e linkar (Bun ≥ 1.3.14)

    A entrada da CLI é TypeScript executado pelo bun; o node não consegue rodá-la. bun link coloca o rovecode no PATH.

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

    Conectar um modelo

    rovecode setup conduz: escolha um provedor, cole a chave oculta, uma chamada de teste pequena, pronto. Ou guarde uma chave direto com rovecode auth set, ou aponte ROVECODE_BASE_URL para qualquer endpoint compatível com OpenAI.

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

    Rodar uma tarefa ou abrir a cabine

    rovecode sozinho abre a superfície sextant. Um prompt entre aspas é uma execução avulsa; --output json devolve exatamente um objeto de resultado.

    $ rovecode "fix the failing test"
    $ run · exit 0
    Saída da execução: 18 aprovados, 0 falhas, 41 chamadas expect(), 18 testes em 1 arquivo.
13
apis hospedadas
3
runtimes locais

08provedores

16 provedores integrados, ou qualquer URL compatível com OpenAI.

Credenciais salvas vencem as variáveis de ambiente <NAME>_API_KEY; um par explícito ROVECODE_BASE_URL / ROVECODE_API_KEY vence as duas.

apis hospedadas

runtimes locais

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

● runtimes locais não precisam de chave · rovecode auth set <nome> guarda uma chave em ~/.rovecode/credentials.json, pedida no terminal e nunca exibida.

qualquer endpoint · ao vivo

Adicione um provedor em outro terminal; a cabine em execução pega na chamada seguinte. Sem 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"]
}
}
}

09nas palavras deles

Equipes que levaram a revisão para o terminal.

  • A revisão foi para o terminal e o cartão de aprovação virou a conversa. Entregamos a mesma quantidade com um terço do vai e vem.

    Aylin Demirci

    Head of Platform · Northwind Robotics

  • A política que nega por padrão é o motivo de a segurança ter aprovado. Cada chamada de ferramenta é uma linha em um log que já lemos.

    Marcus Oyelaran

    Staff Engineer · Harbourline Payments

  • Doze pessoas, modelos locais, nenhum fornecedor no meio. Roda onde o código dos nossos clientes tem permissão para rodar.

    Inés Ferrer

    Fundadora · Meridian Studio

Citações ilustrativas de equipes fictícias, escritas para a página — as reais as substituem antes do lançamento.

10preços

Grátis para começar. Com preço para a equipe que entrega.

Todo plano roda o mesmo agente por trás da mesma política que nega por padrão. Os planos diferem em quanto dele você roda, e com quem.

  • Free

    Para experimentar o agente nos seus próprios repositórios.

    $0/ mês

  • Pro

    Para um engenheiro que entrega com ele todo dia.

    $20/ mês

  • Max

    Para o engenheiro cuja semana se passa dentro dele.

    $200/ mês

  • Teams

    Para uma equipe que compartilha créditos, conhecimento e política.

    $80/ mês

    mínimo de $80 · $40 por assento completo / mês

Ver todos os planos

11perguntas

Objeções, respondidas com especificidade.

Sete perguntas que as pessoas fazem antes de confiar um shell a um agente. Cada resposta nomeia o mecanismo e onde ele para.

Tudo aqui vem das seções Modelo de segurança, Limitações conhecidas, Observabilidade e Licença e avisos do README.md. Onde o README diz que existe um limite, esta página também diz.

Não. Antes e ao redor de cada chamada de ferramenta rodam quatro camadas empilhadas: regras de política que negam por padrão, vereditos do execpolicy (um comando proibido não chega nem à execução nem a uma pessoa), o portão de aprovação sobre os argumentos corrigidos e uma lista de negação do bash em tempo de execução com trava de cwd. Onde o bash roda é escolhível — direto, WSL2 ou Docker —, mas cada degrau é delegação, não isolamento. Para trabalho não confiável use um contêiner ou microVM.

12obter o rovecode

Seis painéis. Dezesseis provedores. Grátis para começar, com preço para equipes.

$ git clone https://github.com/9Code-Labs/rovecode && cd rovecode && bun install && bun link
Rovecode, o mascote nuvem, com o polegar para cima