Zum Inhalt springen
  • quelloffen
  • AGPL-3.0
  • v0.2.0
  • Bun ≥ 1.3.14
  • TypeScript

Ein Coding-Agent fürs Terminal mit Cockpit, nicht mit Chatverlauf.

Rovecode läuft auf Bun, spricht mit 16 Anbietern oder jedem OpenAI-kompatiblen Endpunkt und schickt jeden Werkzeugaufruf durch eine Politik mit Verbot als Voreinstellung, bevor er dein Repository berührt. Freie Software unter AGPL-3.0.

$ rovecode "fix the failing test"
rovecode · atlas · feature/authreal frame
Die sextant-TUI mit 160 mal 44 Zellen: Dateibaum mit Git-Status, das Code-Panel zeigt src/auth/callback.ts mit hervorgehobenen geänderten Zeilen, das Nachrichten-Panel mit Lese- und Editierzeilen und eine Freigabekarte, die um die Ausführung von bun test bittet, der Plan bei Schritt 1 von 4, 13 Prozent Kontextauslastung und das Rovecode-Wolkenmaskottchen, das um ein Nicken bittet.
+4 −1 gelandeterst fragen · FreigabekarteKontext 13 % von 200k

Echtes Bild: die Freigabekarte für bun test, die Editierzeile +4 −1, Kontext bei 13 % von 200k. Über die sextant-Painter mit fester Uhr gerendert.

  • 2,200+Tests
  • 16eingebaute Provider
  • 4Policy-Ebenen
  • 15Sprachen auf dieser Seite
  • AGPL-3.0Lizenz

Ein Coding-Agent für das Terminal. TypeScript auf Bun, 47 portierte Muster, eine Politik mit Verbot als Voreinstellung vor jedem Werkzeug.

teams, die rovecode einsetzen

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

Platzhalternamen, bis die ersten Kunden einer Nennung zustimmen.

02das Cockpit

Sechs Panels auf einem Bildschirm. Die Datei, die dich interessiert, scrollt nie weg.

Dateien mit Git-Status, Code mit Hervorhebungsband und ±-Diff, kompakte Werkzeugzeilen, Plan, Verbrauch und das Maskottchen. Kopflos über die sextant-Painter mit fester Uhr gerendert: derselbe Codepfad, mit dem die TUI zeichnet, kein Mockup.

Nachrichten-Panel · Zeile für Zeile

Ein Lauf, aus dem Bild darüber abgeschrieben.

Jeder Werkzeugaufruf ist eine Zeile: das Verb, die Datei und was sich geändert hat. Die Änderung landete als +4 −1. Der Shell-Befehl wartet hinter einer Karte mit drei Antworten; Esc verweigert, und die Antwort gilt für den Rest der Sitzung.

Kind-Agenten können nicht nachfragen. Ein verbotenes argv erreicht die Karte gar nicht erst.

03Probleme → Lösungen

Vier Dinge, die bei Terminal-Agenten schiefgehen, und was rovecode jeweils dagegen tut.

Formuliert, wie du es an der Tastatur sagen würdest, beantwortet mit dem Mechanismus und seiner Grenze. Jeder Streifen ist ein echter Bildausschnitt oder die echte Konfigurationsdatei.

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

    01Problem

    Jeder Agent kommt fest verschweißt mit der API und der Preisseite eines einzigen Anbieters.

    was rovecode tut

    Eine StreamFn-Nahtstelle und ein lebendes Anbieterregister. 16 benannte Anbieter oder jeder OpenAI- bzw. Anthropic-kompatible Endpunkt aus providers.json; ein in einem anderen Terminal ergänzter Anbieter bedient schon den nächsten Aufruf. Rollen-Fallback-Ketten rücken bei 429 oder 5xx weiter.

    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

    02Problem

    Ein Chatverlauf schiebt die Datei, um die es geht, aus dem Bild, während der Agent sie ändert.

    was rovecode tut

    Ein Cockpit aus Panels: Dateien, Code, Nachrichten, Plan, Verbrauch und das Wetterwolken-Maskottchen. Das Nachrichten-Panel hält jeden Werkzeugaufruf auf einer kompakten Zeile; das Code-Panel zeigt genau den Hunk, der gelandet ist.

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

    03Problem

    Das Modell verlangt rm -rf, und das Gerüst führt es aus, weil niemand rechtzeitig nein gesagt hat.

    was rovecode tut

    Zuerst Platzhalterregeln mit Verbot als Voreinstellung, dann execpolicy-Urteile, bei denen Verbotenes weder Ausführung noch Mensch erreicht, dann eine Freigabekarte auf den korrigierten Argumenten. 4 gestapelte Schichten, von denen keine vorgibt, eine Sandbox zu sein.

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

    04Problem

    Zug 40 geht daneben, und der einzige Weg zurück ist ein neues Gespräch.

    was rovecode tut

    Ein nur anfügender JSONL-Sitzungsbaum mit sha256-Hashkette. /rewind öffnet die Zugauswahl, verzweigt von jedem Zug und füllt den Editor mit dessen vollem Text vor; Schatten-Git-Prüfpunkte stellen in 3 Modi wieder her, ohne dein .git anzufassen.

    /rewind /checkpoints /restore rovecode trace <session-id>
  1. 01sextant-Cockpit
  2. 02Anbieter, heiß nachgeladen
  3. 03MCP-Client
  4. 04Sicherheitsleiter
  5. 05Sitzungsbaum + Prüfpunkte
  6. 06ACP für Zed + JetBrains
  7. 07Kopfloses HTTP + SSE
  8. 08Subagenten im Hintergrund
  9. 09Hooks
  10. 10OpenTelemetry

04Fähigkeiten

Zehn Fähigkeiten, jede eine Portierung mit file:line-Spur.

Rovecode portiert belegte Muster aus pi, opencode, codex, cline, aider, gemini-cli und anderen. Eine Portierung landet erst, wenn ein Kritiker mit frischem Kontext sie gegen eine vor Arbeitsbeginn geschriebene Latte prüft.

Oberfläche

sextant-Cockpit

6 Panels auf einem Truecolor-TTY von mindestens 100×30: Dateien mit Git-Status, Code mit Hervorhebungsband und ±-Diff, kompakte Werkzeugzeilen, Plan, Verbrauch, das Maskottchen. 3 Paletten, /theme wechselt live; --classic behält den pi-tui-Chat.

rovecode · ROVECODE_TUI=sextant|classic · /theme night|ember|contrast
Ausschnitt des sextant-Bildes: Dateibaum und das Code-Panel mit dem Hervorhebungsband der Änderung

Anbieter

Anbieter, heiß nachgeladen

16 eingebaute plus alles, was du in providers.json einträgst. Jeder Aufruf löst den Anbieter gegen den lebenden Schnappschuss auf: trag einen in einem anderen Terminal ein, und das laufende Cockpit nutzt ihn beim nächsten Aufruf. Kein Neustart.

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

    MCP-Client

    stdio- und HTTP-Server aus .rovecode/mcp.json. Späte Offenlegung über 2 Registrierungswerkzeuge, sodass ein untätiger Server fast null Tokens kostet.

    mcp_list · mcp_call
  • Sicherheit

    Sicherheitsleiter

    Jeder Werkzeugaufruf steigt vier Sprossen, bevor er läuft. Ein verbotenes argv wird abgelehnt, ehe ein Hook es sieht; --yolo überspringt Rückfragen, nie Verbotsregeln.

    rules → execpolicy → approval → runtime

  • Gedächtnis

    Sitzungsbaum + Prüfpunkte

    Nur anfügendes JSONL mit sha256-Hashkette. /rewind verzweigt, /resume knüpft an, Schatten-Git-Prüfpunkte stellen in 3 Modi wieder her und fassen dein .git nie an.

    /rewind · /checkpoints · /restore
  • ACP für Zed + JetBrains

    Agent Client Protocol v1 über stdio, offizielles SDK.

    rovecode acp
  • Kopfloses HTTP + SSE

    Sitzungen, ein RunEvent-Strom, OpenAPI unter /doc. Port 4100, nur Loopback.

    rovecode serve
  • Subagenten im Hintergrund

    Begrenzte FIFO-Kindsitzungen, standardmäßig 3 gleichzeitig; Notizen landen im nächsten Zug des Elternlaufs.

    /tasks
  • Hooks

    9 typisierte Hooks in .rovecode/hooks.ts, jeder auf 5 s begrenzt. pre_tool kann nur verweigern.

    pre_tool · approval · on_event
  • OpenTelemetry

    Eine Spur pro Lauf: run ⊃ turn ⊃ tool mit Tokens, Latenz, Kosten. Ohne gesetzten Endpunkt kein Exporter.

    ROVECODE_OTEL_ENDPOINT

05Sicherheit und Betrieb

Vier Schichten vor jedem Werkzeugaufruf. Nichts verlässt die Maschine, die du nicht konfiguriert hast.

Das Sicherheitsmodell, wie die README es beschreibt, Grenzen inklusive. Jede Schicht benennt, was sie entscheidet und wo sie aufhört; keine davon ist eine Sandbox.

  1. Schicht 01

    01rules

    Deny-by-default-Wildcard-Regeln über Werkzeug und argv. Ein verbotenes Muster wird abgelehnt, bevor irgendetwas läuft.

    GrenzeMustervergleich, keine Absicht: eine neue Schreibweise eines gefährlichen Befehls geht an die nächste Schicht.

  2. Schicht 02

    02execpolicy

    Urteile über die geparsten argv: allow, prompt, forbidden. Verbotenes erreicht weder die Ausführung noch einen Menschen.

    GrenzeLiest den Befehl, nicht die Shell, in der er läuft; ein Alias oder ein Skriptrumpf bleibt undurchsichtig.

  3. Schicht 03

    03approval

    Eine Karte zu den geänderten Argumenten mit erlauben, immer und ablehnen. Antworten werden pro Sitzung gecacht; Unteragenten dürfen nicht fragen.

    GrenzeEine menschliche Entscheidung: --yolo überspringt diese Sprosse, nie die Deny-Regeln darüber.

  4. Schicht 04

    04runtime

    Eine bash-Denylist und eine cwd-Sperre bei der Ausführung; Esc beendet den laufenden Aufruf und unter Windows seinen ganzen Prozessbaum.

    GrenzeDelegation, keine Isolation. Nicht vertrauenswürdige Arbeit gehört in einen Container oder eine MicroVM.

Betrieb und Daten

  • 01

    Selbst gehostet, per Definition

    Läuft aus dem Quellcode auf deiner Maschine oder in deiner CI. Ein Konto ist optional: es schaltet die Pläne der Preisseite frei und sperrt die CLI nie. Bun ≥ 1.3.14 ist die einzige Voraussetzung.

  • 02

    Kein Phone-Home

    Ausgehender Verkehr geht nur an den konfigurierten Provider, die von dir gelisteten MCP-Server und web_fetch, wenn das Modell danach fragt. Der Preiskatalog ist ein Offline-Snapshot; es gibt kein Self-Update.

  • 03

    Telemetrie ist opt-in

    Der OpenTelemetry-Export bleibt aus, bis ROVECODE_OTEL_ENDPOINT gesetzt ist; selbst dann trägt er Ids, Größen und Ergebnisse — nie Prompts, Argumente oder Ausgaben.

  • 04

    Prüfspur von Bauart

    Sitzungen sind append-only JSONL mit einer sha256-Hashkette; jeder Lauf exportiert eine Trace (run ⊃ turn ⊃ tool), auch abgebrochene.

  • 05

    Plattformstatus

    Windows-first: Entwicklung und das Release-Gate laufen auf Windows 11. POSIX-Pfade sind getestet, Linux und macOS sind noch nicht CI-verifiziert.

  • 06

    Lizenz

    AGPL-3.0-only. Frei ändern und weitergeben; wer einen geänderten Build als Netzwerkdienst betreibt, muss dessen Quellcode diesen Nutzern anbieten.

06aus dem Terminal

Vier echte Bilder mit 160×44, die lesenswerten Stellen nummeriert.

Kopflos über die sextant-Painter mit fester Uhr gerendert: derselbe Codepfad, mit dem die TUI zeichnet, kein Mockup. Über ein Bild fahren glättet es; über eine Zeile fahren leuchtet ihre Marke.

rovecode · atlas · feature/auth · 160×44real frame
sextant-Bild nach einer Änderung: das Code-Panel im Diff-Modus zeigt einen Hunk, das Nachrichten-Panel listet Lese- und Editierzeilen

Die Änderung ist gelandet. Das Code-Panel zeigt genau diesen Hunk.

Vor einer freigegebenen Änderung aufgenommen, nach einer ungeprüften aus den Ankern der Änderung selbst rekonstruiert.

  1. 1Beim Landen der Änderung in den ±-Diff-Modus wechseln
  2. 2+4 −1 gegen die Datei auf der Platte lesen
  3. 3Den kompakten Werkzeugzeilen folgen: lesen, dann ändern
  4. 4Zusehen, wie der Kontext auf 13 % von 200k läuft
rovecode · atlas · feature/auth · 160×44real frame
sextant-Bild mit offener Freigabekarte: bash bun test tests/auth.test.ts, erlauben immer verweigern

Ein Shell-Befehl wartet auf ein Nicken. Eine Karte, drei Antworten.

Freigaben werden auf den korrigierten Argumenten aufgelöst und pro Sitzung gemerkt; Kind-Agenten können nicht nachfragen.

  1. 1Das genaue argv sehen, bevor es läuft
  2. 2Erlauben, immer oder verweigern wählen; Esc verweigert
  3. 3Die Kopfzeile wechselt auf wartet auf dich
  4. 4Das Maskottchen bittet um das Nicken und merkt es sich
rovecode · atlas · feature/auth · 160×44real frame
sextant-Bild nach dem Lauf: das Code-Panel im Run-Modus zeigt die bun-test-Ausgabe mit 18 bestanden, Plan 4/4 fertig

Tests liefen. Das $-Panel behält die Ausgabe; die Kopfzeile friert die Uhr ein.

PASS- und FAIL-Chips lesen den Exit-Code aus der eigenen Kopfzeile des Werkzeugs.

  1. 1Die Ausgabe im $-Modus lesen, 18 bestanden
  2. 2Der Plan schließt bei 4/4 Schritten
  3. 3Die Werkzeugzeile trägt die letzte Ausgabezeile
  4. 4Die Kosten landen bei $0.071 aus dem Offline-Katalog
rovecode · atlas · feature/auth · 160×44real frame
sextant-Bild mit offener Crew-Tafel: zwei Spuren, Tests schreiben läuft und Review fertig

Zwei Hintergrundaufgaben, je eine Spur, auf der Crew-Tafel.

Kindsitzungen teilen sich die eine Agentenschleife; das Beenden der TUI bricht jedes lebende Kind ab.

  1. 1Die ∷-Agententafel mit ⌃a öffnen
  2. 2Jede Spur zeigt Label, verstrichene Zeit und Status
  3. 3Die Crew-Übersicht bleibt im Plan-Panel
  4. 4Der Elternlauf ändert unterdessen weiter

07Schnellstart

Drei Befehle vom Klon zum laufenden Agenten.

Ohne konfigurierten Anbieter nutzen einmalige Läufe einen geskripteten Mock-Anbieter — so funktioniert auch der Paketier-Rauchtest.

  1. 01

    Klonen und verlinken (Bun ≥ 1.3.14)

    Der CLI-Einstieg ist TypeScript, das bun ausführt; node kann ihn nicht starten. bun link legt rovecode auf den PATH.

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

    Ein Modell anbinden

    rovecode setup führt hindurch: Anbieter wählen, Schlüssel verdeckt einfügen, ein winziger Testaufruf, fertig. Oder den Schlüssel direkt mit rovecode auth set ablegen oder ROVECODE_BASE_URL auf einen OpenAI-kompatiblen Endpunkt richten.

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

    Eine Aufgabe starten oder das Cockpit öffnen

    Ein blankes rovecode öffnet die sextant-Oberfläche. Eine Eingabe in Anführungszeichen ist ein einmaliger Lauf; --output json liefert genau ein Ergebnisobjekt.

    $ rovecode "fix the failing test"
    $ run · exit 0
    Laufausgabe: 18 bestanden, 0 fehlgeschlagen, 41 expect()-Aufrufe, 18 Tests in 1 Datei ausgeführt.
13
gehostete APIs
3
lokale Laufzeiten

08Anbieter

16 eingebaute Anbieter oder jede OpenAI-kompatible URL.

Gespeicherte Zugangsdaten schlagen <NAME>_API_KEY-Umgebungsvariablen; ein ausdrückliches Paar aus ROVECODE_BASE_URL / ROVECODE_API_KEY schlägt beide.

gehostete APIs

lokale Laufzeiten

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

● lokale Laufzeiten brauchen keinen Schlüssel · rovecode auth set <name> legt einen Schlüssel in ~/.rovecode/credentials.json ab, im Terminal abgefragt und nie ausgegeben.

jeder Endpunkt · live

Trag einen Anbieter in einem anderen Terminal ein; das laufende Cockpit nimmt ihn beim nächsten Aufruf. Kein Neustart.

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

09in ihren worten

Teams, die das Review ins Terminal geholt haben.

  • Das Review ist ins Terminal gewandert, und die Freigabekarte wurde zum Gespräch. Wir liefern genauso viel, mit einem Drittel des Hin und Her.

    Aylin Demirci

    Head of Platform · Northwind Robotics

  • Die Politik mit Verbot als Voreinstellung ist der Grund, warum Security zugestimmt hat. Jeder Werkzeugaufruf ist eine Zeile in einem Log, das wir ohnehin lesen.

    Marcus Oyelaran

    Staff Engineer · Harbourline Payments

  • Zwölf Leute, lokale Modelle, kein Anbieter dazwischen. Es läuft dort, wo der Code unserer Kunden laufen darf.

    Inés Ferrer

    Gründerin · Meridian Studio

Beispielzitate fiktiver Teams, für die Seite geschrieben — vor dem Start ersetzen echte sie.

10preise

Kostenlos starten. Bepreist für das Team, das liefert.

Jeder Plan lässt denselben Agenten hinter derselben Politik mit Verbot als Voreinstellung laufen. Die Pläne unterscheiden sich darin, wie viel davon du laufen lässt — und mit wem.

  • Free

    Um den Agenten auf den eigenen Repositories auszuprobieren.

    $0/ Monat

  • Pro

    Für eine Engineerin, die jeden Tag damit liefert.

    $20/ Monat

  • Max

    Für den Engineer, dessen Woche darin stattfindet.

    $200/ Monat

  • Teams

    Für ein Team, das Guthaben, Wissen und Politik teilt.

    $80/ Monat

    mindestens $80 · $40 pro vollem Sitz / Monat

Alle Pläne ansehen

11faq

Einwände, mit Fakten beantwortet.

Sieben Fragen, die Leute stellen, bevor sie einem Agenten eine Shell anvertrauen. Jede Antwort nennt den Mechanismus und wo er endet.

Alles hier stammt aus den README.md-Abschnitten Sicherheitsmodell, Bekannte Grenzen, Beobachtbarkeit sowie Lizenz & Hinweise. Wo die README eine Grenze nennt, nennt diese Seite sie auch.

Nein. Vor und um jeden Werkzeugaufruf laufen vier gestapelte Schichten: Politikregeln mit Verbot als Voreinstellung, execpolicy-Urteile (ein verbotener Befehl erreicht weder Ausführung noch Mensch), das Freigabetor auf den korrigierten Argumenten und eine Laufzeit-Verbotsliste für bash mit cwd-Sperre. Wo bash läuft, ist wählbar — direkt, WSL2 oder Docker —, aber jede Sprosse ist Delegation, keine Isolation. Für nicht vertrauenswürdige Arbeit nimm einen Container oder eine MicroVM.

12rovecode holen

Sechs Panels. Sechzehn Anbieter. Kostenlos zum Start, bepreist für Teams.

$ git clone https://github.com/9Code-Labs/rovecode && cd rovecode && bun install && bun link
Rovecode, das Wolkenmaskottchen, mit erhobenem Daumen