Aller au contenu
  • open source
  • AGPL-3.0
  • v0.2.0
  • Bun ≥ 1.3.14
  • TypeScript

Un agent de code en terminal avec un cockpit, pas un fil de discussion.

Rovecode tourne sur Bun, parle à 16 fournisseurs ou à n'importe quel point d'accès compatible OpenAI, et fait passer chaque appel d'outil par une politique qui refuse par défaut avant qu'il ne touche votre dépôt. Logiciel libre sous AGPL-3.0.

$ rovecode "fix the failing test"
rovecode · atlas · feature/authreal frame
La TUI sextant en 160 par 44 cellules : arbre de fichiers avec statut git, le panneau de code affichant src/auth/callback.ts avec les lignes modifiées surlignées, le panneau de messages avec les lignes d'outil lecture et édition et une carte d'autorisation demandant à lancer bun test, le plan à l'étape 1 sur 4, 13 pour cent de contexte utilisé, et la mascotte nuage rovecode qui attend un feu vert.
+4 −1 appliquédemander d'abord · carte d'autorisationcontexte 13 % de 200k

Image réelle : la carte d'autorisation pour bun test, la ligne d'édition +4 −1, le contexte à 13 % de 200k. Rendue par les peintres sextant à horloge fixe.

  • 2,200+tests
  • 16fournisseurs intégrés
  • 4couches de politique
  • 15langues sur cette page
  • AGPL-3.0licence

Un agent de code pour le terminal. TypeScript sur Bun, 47 motifs portés, une politique qui refuse par défaut devant chaque outil.

des équipes qui utilisent rovecode

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

Noms provisoires, jusqu'à ce que les premiers clients acceptent d'être cités.

02le cockpit

Six panneaux sur un écran. Le fichier qui vous intéresse ne disparaît jamais.

Fichiers avec statut git, code avec la bande de surlignage et le diff ±, lignes d'outil compactes, plan, usage et la mascotte. Rendu sans affichage par les peintres sextant à horloge fixe : le chemin de code exact que la TUI dessine, pas une maquette.

panneau messages · ligne à ligne

Une exécution, transcrite depuis l'image ci-dessus.

Chaque appel d'outil tient sur une ligne : le verbe, le fichier et ce qui a changé. L'édition a donné +4 −1. La commande shell attend derrière une carte à trois réponses ; Échap refuse, et la réponse vaut pour le reste de la session.

Les agents enfants ne peuvent pas poser de question. Un argv interdit n'atteint jamais la carte.

03problèmes → solutions

Quatre travers des agents en terminal, et ce que rovecode fait pour chacun.

Énoncés comme vous les diriez au clavier, résolus par un mécanisme et sa limite. Chaque bandeau est un vrai recadrage d'image ou le vrai fichier de configuration.

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

    01problème

    Chaque agent arrive soudé à l'API d'un seul fournisseur et à sa grille tarifaire.

    ce que fait rovecode

    Une seule couture StreamFn et un registre de fournisseurs vivant. 16 fournisseurs nommés, ou tout point d'accès compatible OpenAI ou Anthropic depuis providers.json ; un fournisseur ajouté dans un autre terminal sert l'appel suivant. Les chaînes de repli par rôle avancent sur un 429 ou 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

    02problème

    Un fil de discussion fait défiler hors de l'écran le fichier que l'agent est en train de modifier.

    ce que fait rovecode

    Un cockpit à panneaux : fichiers, code, messages, plan, usage et la mascotte nuage. Le panneau de messages tient chaque appel d'outil sur une ligne compacte ; le panneau de code montre le seul bloc appliqué.

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

    03problème

    Le modèle réclame rm -rf et le harnais l'exécute parce que personne n'a dit non à temps.

    ce que fait rovecode

    D'abord des règles à joker qui refusent par défaut, puis des verdicts execpolicy où l'interdit n'atteint ni l'exécution ni un humain, puis une carte d'autorisation sur les arguments corrigés. 4 couches empilées, dont aucune ne prétend être un bac à sable.

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

    04problème

    Le tour 40 dérape et le seul retour possible est une nouvelle conversation.

    ce que fait rovecode

    Un arbre de session JSONL en ajout seul avec chaîne de hachage sha256. /rewind ouvre le sélecteur de tours, dérive depuis n'importe quel tour et pré-remplit l'éditeur avec son texte complet ; les points de contrôle shadow-git restaurent selon 3 modes sans toucher à votre .git.

    /rewind /checkpoints /restore rovecode trace <session-id>
  1. 01cockpit sextant
  2. 02fournisseurs rechargés à chaud
  3. 03Client MCP
  4. 04Échelle de sûreté
  5. 05Arbre de session + points de contrôle
  6. 06ACP pour Zed + JetBrains
  7. 07HTTP + SSE sans interface
  8. 08Sous-agents en arrière-plan
  9. 09Hooks
  10. 10OpenTelemetry

04capacités

Dix capacités, chacune un portage avec sa trace file:line.

Rovecode porte des motifs éprouvés venus de pi, opencode, codex, cline, aider, gemini-cli et d'autres. Un portage n'atterrit qu'après vérification par un critique à contexte neuf, face à une barre écrite avant le début du travail.

surface

cockpit sextant

6 panneaux sur un TTY truecolor d'au moins 100×30 : fichiers avec statut git, code avec bande de surlignage et diff ±, lignes d'outil compactes, plan, usage, la mascotte. 3 palettes, /theme change à chaud ; --classic garde le chat pi-tui.

rovecode · ROVECODE_TUI=sextant|classic · /theme night|ember|contrast
Recadrage de l'image sextant : arbre de fichiers et panneau de code avec la bande de surlignage d'édition

fournisseurs

fournisseurs rechargés à chaud

16 intégrés plus tout ce que vous enregistrez dans providers.json. Chaque appel résout le fournisseur sur l'instantané vivant : ajoutez-en un dans un autre terminal et le cockpit en cours l'utilise à l'appel suivant. Sans redémarrage.

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

    Client MCP

    Serveurs stdio et HTTP depuis .rovecode/mcp.json. Divulgation paresseuse via 2 outils de registre : un serveur au repos coûte quasiment zéro jeton.

    mcp_list · mcp_call
  • sûreté

    Échelle de sûreté

    Chaque appel d'outil gravit quatre barreaux avant de s'exécuter. Un argv interdit est refusé avant qu'un hook ne le voie ; --yolo saute les invites, jamais les règles de refus.

    rules → execpolicy → approval → runtime

  • mémoire

    Arbre de session + points de contrôle

    JSONL en ajout seul avec chaîne de hachage sha256. /rewind dérive, /resume reprend, les points shadow-git restaurent selon 3 modes sans jamais toucher votre .git.

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

    Agent Client Protocol v1 sur stdio, SDK officiel.

    rovecode acp
  • HTTP + SSE sans interface

    Sessions, un flux RunEvent, OpenAPI sur /doc. Port 4100, boucle locale seulement.

    rovecode serve
  • Sous-agents en arrière-plan

    Sessions enfants FIFO bornées, 3 simultanées par défaut ; les notes arrivent au tour suivant du parent.

    /tasks
  • Hooks

    9 hooks typés dans .rovecode/hooks.ts, chacun borné à 5 s. pre_tool ne peut que refuser.

    pre_tool · approval · on_event
  • OpenTelemetry

    Une trace par exécution : run ⊃ turn ⊃ tool avec jetons, latence, coût. Point d'accès non défini, pas d'exportateur.

    ROVECODE_OTEL_ENDPOINT

05sécurité et déploiement

Quatre couches devant chaque appel d'outil. Rien ne quitte la machine que vous n'avez pas configurée.

Le modèle de sécurité tel que le README l'énonce, limites comprises. Chaque couche dit ce qu'elle décide et où elle s'arrête ; aucune n'est un bac à sable.

  1. couche 01

    01rules

    Règles à jokers en deny-by-default sur l'outil et l'argv. Un motif interdit est refusé avant que quoi que ce soit ne s'exécute.

    limiteDe la correspondance de motifs, pas de l'intention : une écriture inédite d'une commande dangereuse passe à la couche suivante.

  2. couche 02

    02execpolicy

    Des verdicts sur l'argv analysé : allow, prompt, forbidden. Ce qui est interdit n'atteint ni l'exécution ni un humain.

    limiteElle lit la commande, pas le shell qui l'exécutera ; un alias ou le corps d'un script lui reste opaque.

  3. couche 03

    03approval

    Une carte sur les arguments révisés avec autoriser, toujours et refuser. Les réponses sont mises en cache par session ; les sous-agents ne peuvent pas demander.

    limiteUne décision humaine : --yolo saute cet échelon, jamais les règles de refus au-dessus.

  4. couche 04

    04runtime

    Une denylist bash et un verrou sur le cwd à l'exécution ; Échap tue l'appel en cours et, sous Windows, tout son arbre de processus.

    limiteDe la délégation, pas de l'isolation. Le travail non fiable a sa place dans un conteneur ou une micro-VM.

déploiement et données

  • 01

    Auto-hébergé par construction

    S'exécute depuis les sources sur votre machine ou votre CI. Le compte est facultatif : il débloque les formules de la page tarifs et ne verrouille jamais la CLI. Bun ≥ 1.3.14 est la seule exigence.

  • 02

    Aucun phone-home

    Le trafic sortant ne va qu'au fournisseur que vous avez configuré, aux serveurs MCP que vous avez listés et à web_fetch quand le modèle le demande. Le catalogue de prix est un instantané hors ligne ; il n'y a pas de mise à jour automatique.

  • 03

    La télémétrie est opt-in

    L'export OpenTelemetry reste éteint tant que ROVECODE_OTEL_ENDPOINT n'est pas défini ; même alors il porte des ids, des tailles et des résultats — jamais de prompts, d'arguments ni de sorties.

  • 04

    Journal d'audit par construction

    Les sessions sont du JSONL en append-only avec une chaîne de hachage sha256 ; chaque exécution exporte une trace (run ⊃ turn ⊃ tool), y compris annulée.

  • 05

    État des plateformes

    Windows d'abord : le développement et la porte de release tournent sur Windows 11. Les chemins POSIX sont testés, Linux et macOS ne sont pas encore vérifiés en CI.

  • 06

    Licence

    AGPL-3.0-only. Modifiez et redistribuez librement ; exploiter une version modifiée comme service réseau vous oblige à en offrir les sources à ces utilisateurs.

06depuis le terminal

Quatre images réelles en 160×44, les endroits à lire numérotés.

Rendues sans affichage par les peintres sextant à horloge fixe : le chemin de code exact que la TUI dessine, pas une maquette. Survolez une image pour l'aplatir ; survolez une ligne pour allumer son repère.

rovecode · atlas · feature/auth · 160×44real frame
image sextant après une édition : le panneau de code en mode diff montre un bloc, le panneau de messages liste les lignes lecture et édition

L'édition est passée. Le panneau de code montre exactement ce bloc.

Capturé avant une édition approuvée, reconstruit depuis les ancres de l'édition après une édition non soumise.

  1. 1Passer en mode diff ± au moment où l'édition atterrit
  2. 2Lire +4 −1 face au fichier sur le disque
  3. 3Suivre les lignes d'outil compactes : lecture, puis édition
  4. 4Voir le contexte se remplir à 13 % de 200k
rovecode · atlas · feature/auth · 160×44real frame
image sextant avec la carte d'autorisation ouverte : bash bun test tests/auth.test.ts, autoriser toujours refuser

Une commande shell attend un feu vert. Une carte, trois réponses.

Les autorisations se résolvent sur les arguments corrigés et sont mémorisées par session ; les agents enfants ne peuvent pas demander.

  1. 1Voir l'argv exact avant l'exécution
  2. 2Choisir autoriser, toujours ou refuser ; Échap refuse
  3. 3L'en-tête passe en attente de vous
  4. 4La mascotte demande le feu vert, puis s'en souvient
rovecode · atlas · feature/auth · 160×44real frame
image sextant après l'exécution : le panneau de code en mode run montre la sortie de bun test avec 18 réussis, plan 4/4 terminé

Les tests ont tourné. Le panneau $ garde la sortie ; l'en-tête fige l'horloge.

Les pastilles PASS et FAIL lisent le code de sortie dans la ligne d'en-tête de l'outil lui-même.

  1. 1Lire la sortie en mode $, 18 réussis
  2. 2Le plan se referme à 4/4 étapes
  3. 3La ligne d'outil porte la dernière ligne de sortie
  4. 4Le coût tombe à $0.071 depuis le catalogue hors ligne
rovecode · atlas · feature/auth · 160×44real frame
image sextant avec le tableau d'équipage ouvert : deux voies, écriture de tests en cours et revue terminée

Deux tâches en arrière-plan, une voie chacune, sur le tableau d'équipage.

Les sessions enfants partagent l'unique boucle d'agent ; quitter la TUI annule tous les enfants vivants.

  1. 1Ouvrir le tableau ∷ agents avec ⌃a
  2. 2Chaque voie montre libellé, durée et statut
  3. 3Le résumé d'équipage reste dans le panneau plan
  4. 4L'exécution parente continue d'éditer pendant ce temps

07démarrage

Trois commandes du clone à l'agent qui tourne.

Sans fournisseur configuré, les exécutions ponctuelles utilisent un fournisseur simulé scripté — c'est aussi ainsi que fonctionne le test de fumée d'empaquetage.

  1. 01

    Cloner et lier (Bun ≥ 1.3.14)

    Le point d'entrée CLI est du TypeScript exécuté par bun ; node ne peut pas le lancer. bun link met rovecode dans le PATH.

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

    Connecter un modèle

    rovecode setup vous guide : choisir un fournisseur, coller la clé masquée, un petit appel de test, terminé. Ou stocker une clé directement avec rovecode auth set, ou pointer ROVECODE_BASE_URL vers n'importe quel point d'accès compatible OpenAI.

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

    Lancer une tâche ou ouvrir le cockpit

    rovecode seul ouvre la surface sextant. Une invite entre guillemets est une exécution ponctuelle ; --output json renvoie exactement un objet de résultat.

    $ rovecode "fix the failing test"
    $ run · exit 0
    Sortie d'exécution : 18 réussis, 0 échec, 41 appels expect(), 18 tests exécutés sur 1 fichier.
13
apis hébergées
3
runtimes locaux

08fournisseurs

16 fournisseurs intégrés, ou n'importe quelle URL compatible OpenAI.

Les identifiants stockés l'emportent sur les variables d'environnement <NAME>_API_KEY ; un couple explicite ROVECODE_BASE_URL / ROVECODE_API_KEY l'emporte sur les deux.

apis hébergées

runtimes locaux

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

● les runtimes locaux n'ont besoin d'aucune clé · rovecode auth set <nom> range une clé dans ~/.rovecode/credentials.json, demandée dans le terminal et jamais affichée.

n'importe quel point d'accès · à chaud

Ajoutez un fournisseur dans un autre terminal ; le cockpit en cours le prend à l'appel suivant. Sans redémarrage.

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

09dans leurs mots

Des équipes qui ont ramené la revue dans le terminal.

  • La revue est passée dans le terminal et la carte d'approbation est devenue la conversation. Nous livrons autant, avec un tiers des allers-retours.

    Aylin Demirci

    Head of Platform · Northwind Robotics

  • La politique qui refuse par défaut est la raison pour laquelle la sécurité a donné son accord. Chaque appel d'outil est une ligne dans un journal que nous lisons déjà.

    Marcus Oyelaran

    Staff Engineer · Harbourline Payments

  • Douze personnes, des modèles locaux, aucun fournisseur dans la boucle. Il tourne là où le code de nos clients a le droit de tourner.

    Inés Ferrer

    Fondatrice · Meridian Studio

Citations illustratives d'équipes fictives, écrites pour la page : les vraies les remplacent avant le lancement.

10tarifs

Gratuit pour commencer. Tarifé pour l'équipe qui livre.

Chaque formule fait tourner le même agent derrière la même politique qui refuse par défaut. Les formules diffèrent par la quantité que vous en faites tourner, et avec qui.

  • Free

    Pour essayer l'agent sur vos propres dépôts.

    $0/ mois

  • Pro

    Pour un ingénieur qui livre avec lui chaque jour.

    $20/ mois

  • Max

    Pour l'ingénieur dont la semaine se passe dedans.

    $200/ mois

  • Teams

    Pour une équipe qui partage crédits, connaissances et politique.

    $80/ mois

    $80 minimum · $40 par siège complet / mois

Voir toutes les formules

11faq

Objections, réponses précises.

Sept questions que l'on pose avant de confier un shell à un agent. Chaque réponse nomme le mécanisme et l'endroit où il s'arrête.

Tout ici vient des sections Modèle de sûreté, Limites connues, Observabilité et Licence & mentions du README.md. Là où le README signale une limite, cette page aussi.

Non. Quatre couches empilées tournent avant et autour de chaque appel d'outil : des règles de politique qui refusent par défaut, les verdicts execpolicy (une commande interdite n'atteint ni l'exécution ni un humain), la porte d'autorisation sur les arguments corrigés, et une liste de refus bash à l'exécution avec verrou de cwd. L'endroit où bash tourne est au choix — direct, WSL2 ou Docker — mais chaque barreau est une délégation, pas un isolement. Pour du code non fiable, utilisez un conteneur ou une micro-VM.

12obtenir rovecode

Six panneaux. Seize fournisseurs. Gratuit pour commencer, tarifé pour les équipes.

$ git clone https://github.com/9Code-Labs/rovecode && cd rovecode && bun install && bun link
Rovecode, la mascotte nuage, pouce levé