
편집이 반영됐다. 코드 패널이 바로 그 조각을 보여 준다.
승인된 편집 전에는 그대로 담고, 승인을 거치지 않은 편집 뒤에는 편집 자신의 기준점에서 되살립니다.
- 1편집이 반영될 때 ± 차이 모드로 바꾸기
- 2디스크의 파일에 대한 +4 −1 읽기
- 3간결한 도구 행을 따라가기: 읽기, 그다음 편집
- 4컨텍스트가 200k의 13 %까지 차는 것 보기
Rovecode는 Bun 위에서 돌아가고, 16개 제공자나 OpenAI 호환 엔드포인트와 이야기하며, 모든 도구 호출을 저장소에 닿기 전에 기본이 거부인 정책에 통과시킵니다. AGPL-3.0의 자유 소프트웨어입니다.

실제 프레임: bun test 승인 카드, +4 −1 편집 행, 컨텍스트는 200k의 13 %. 고정된 시계로 sextant 페인터를 통해 그렸습니다.
터미널을 위한 코딩 에이전트. Bun 위의 TypeScript, 이식한 패턴 47개, 모든 도구 앞에 기본이 거부인 정책 하나.
rovecode를 쓰는 팀들
첫 고객들이 게재에 동의할 때까지의 임시 이름입니다.
02콕핏
git 상태가 붙은 파일, 강조 띠와 ± 차이가 있는 코드, 간결한 도구 행, 계획, 사용량 그리고 마스코트. 고정된 시계로 sextant 페인터를 통해 화면 없이 그립니다. TUI가 그리는 것과 같은 코드 경로이지 목업이 아닙니다.
you · sent
add a state check to the oauth callback and run the auth tests
◆ rovecode · needs you
Let me look at the auth flow first.
◆ needs your permissionbash bun test tests/auth.test.ts
allowalwaysdeny↵ confirm · ↔ choose · esc deny
메시지 패널 · 한 행씩
모든 도구 호출은 한 행입니다. 동사, 파일, 그리고 무엇이 바뀌었는지. 편집은 +4 −1로 반영되었습니다. 셸 명령은 답이 셋인 카드 한 장 뒤에서 기다립니다. Esc는 거부이고, 답은 세션이 끝날 때까지 기억됩니다.
자식 에이전트는 물을 수 없습니다. 금지된 argv는 카드에 아예 닿지 않습니다.
03문제 → 해법
키보드 앞에서 쓸 법한 말로 적고, 방법과 그 한계로 답합니다. 모든 띠는 실제 프레임 조각이거나 실제 설정 파일입니다.
{"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개의 이름 있는 제공자, 또는 providers.json에 적힌 OpenAI·Anthropic 호환 엔드포인트라면 무엇이든. 다른 터미널에서 추가한 제공자가 바로 다음 호출을 처리합니다. 역할별 대체 사슬은 429나 5xx에서 다음으로 넘어갑니다.
rovecode provider add homelab http://10.0.0.7:8000/v1 --no-key
02문제
에이전트가 파일을 고치는 동안 대화 기록이 그 파일을 화면 밖으로 밀어낸다.
rovecode가 하는 일
패널로 나뉜 콕핏: 파일, 코드, 메시지, 계획, 사용량 그리고 구름 마스코트. 메시지 패널은 도구 호출마다 한 줄만 쓰고, 코드 패널은 반영된 그 조각 하나를 보여 줍니다.
files · code · messages · plan · usage · rovecode
03문제
모델이 rm -rf를 요구하고, 제때 아니라고 한 사람이 없어 하네스가 그대로 실행한다.
rovecode가 하는 일
먼저 기본이 거부인 와일드카드 규칙, 다음으로 금지된 것이 실행에도 사람에게도 닿지 않는 execpolicy 판정, 그다음 고쳐진 인자에 대한 승인 카드. 네 겹을 쌓지만 어느 것도 샌드박스인 척하지 않습니다.
rules → execpolicy → approval → runtime denylist + cwd lock
04문제
40번째 턴이 어긋나는데 돌아갈 길이 새 대화뿐이다.
rovecode가 하는 일
sha256 해시 사슬을 가진 덧붙이기 전용 JSONL 세션 트리. /rewind는 턴 선택기를 열고 어느 턴에서든 갈라지며 그 턴의 전체 문장을 편집기에 채웁니다. shadow-git 체크포인트는 당신의 .git을 건드리지 않고 3가지 모드로 되돌립니다.
/rewind /checkpoints /restore rovecode trace <session-id>04기능
Rovecode는 pi, opencode, codex, cline, aider, gemini-cli 등에서 근거 있는 패턴을 옮겨 옵니다. 이식은 작업 전에 적어 둔 기준에 맞춰 새 문맥의 비평자가 검증한 뒤에야 반영됩니다.
표면
최소 100×30의 트루컬러 TTY에 6개 패널: git 상태가 붙은 파일, 강조 띠와 ± 차이가 있는 코드, 간결한 도구 행, 계획, 사용량, 마스코트. 팔레트 3개, /theme는 실행 중에 바꾸고, --classic은 pi-tui 대화를 유지합니다.
rovecode · ROVECODE_TUI=sextant|classic · /theme night|ember|contrast
제공자
기본 16개에 providers.json에 등록한 모든 것. 호출마다 살아 있는 스냅숏에서 제공자를 찾습니다. 다른 터미널에서 하나 추가하면 실행 중인 콕핏이 다음 호출에 씁니다. 재시작은 없습니다.
rovecode provider add|list|test · rovecode model use provider/model{"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"]}}}
문맥
.rovecode/mcp.json의 stdio와 HTTP 서버. 레지스트리 도구 2개를 통한 지연 공개라, 놀고 있는 서버는 토큰을 거의 쓰지 않습니다.
mcp_list · mcp_call안전
모든 도구 호출은 실행 전에 네 단을 오릅니다. 금지된 argv는 어떤 훅이 보기도 전에 거부됩니다. --yolo는 확인을 건너뛰지만 거부 규칙은 결코 건너뛰지 않습니다.
rules → execpolicy → approval → runtime
기억
sha256 해시 사슬을 가진 덧붙이기 전용 JSONL. /rewind로 갈라지고 /resume으로 이어가며, shadow-git 체크포인트는 3가지 모드로 되돌리고 당신의 .git은 절대 건드리지 않습니다.
/rewind · /checkpoints · /restorestdio 위의 Agent Client Protocol v1, 공식 SDK.
rovecode acp세션, 하나의 RunEvent 스트림, /doc의 OpenAPI. 포트 4100, 루프백만.
rovecode serve상한이 있는 FIFO 자식 세션, 기본 동시 3개. 메모는 부모의 다음 턴에 도착합니다.
/tasks.rovecode/hooks.ts에 타입이 붙은 훅 9개, 각각 5초 제한. pre_tool은 거부만 할 수 있습니다.
pre_tool · approval · on_event실행마다 하나의 추적: run ⊃ turn ⊃ tool에 토큰, 지연, 비용. 엔드포인트를 두지 않으면 익스포터도 없습니다.
ROVECODE_OTEL_ENDPOINT05보안과 배포
README가 밝히는 그대로의 안전 모델을, 한계까지 포함해 보여줍니다. 각 층은 무엇을 판단하고 어디서 멈추는지 스스로 밝힙니다. 어느 것도 샌드박스가 아닙니다.
층
판단하는 것
한계
층 01
01rules도구와 argv에 대한 기본 거부 와일드카드 규칙. 금지된 패턴은 무엇이 실행되기 전에 거부됩니다.
한계의도가 아니라 패턴 대조입니다. 위험한 명령의 새로운 표기는 다음 층으로 넘어갑니다.
층 02
02execpolicy구문 분석된 argv에 대한 판정: allow, prompt, forbidden. 금지된 것은 실행에도 사람에게도 닿지 않습니다.
한계명령을 읽을 뿐, 그것이 돌아갈 셸을 읽지는 않습니다. 별칭이나 스크립트 본문은 불투명합니다.
층 03
03approval수정된 인자에 대해 허용·항상·거부가 있는 카드 하나. 답은 세션 단위로 캐시되며, 하위 에이전트는 물을 수 없습니다.
한계사람의 결정입니다. --yolo는 이 단만 건너뛰며, 그 위의 거부 규칙은 결코 건너뛰지 않습니다.
층 04
04runtime실행 시점의 bash 거부 목록과 cwd 잠금. Esc는 진행 중인 호출을, Windows에서는 그 프로세스 트리 전체를 종료합니다.
한계격리가 아니라 위임입니다. 신뢰할 수 없는 작업은 컨테이너나 마이크로VM에 두십시오.
배포와 데이터
01
당신의 기계나 CI에서 소스로 실행됩니다. 계정은 선택입니다. 가격 페이지의 플랜을 열어 줄 뿐, CLI를 막는 일은 결코 없습니다. 요구 사항은 Bun ≥ 1.3.14 하나뿐입니다.
02
나가는 트래픽은 당신이 설정한 프로바이더, 당신이 나열한 MCP 서버, 그리고 모델이 요청할 때의 web_fetch뿐입니다. 가격 카탈로그는 오프라인 스냅샷이며 자동 업데이트는 없습니다.
03
ROVECODE_OTEL_ENDPOINT를 설정하기 전까지 OpenTelemetry 내보내기는 꺼져 있습니다. 설정해도 담기는 것은 id와 크기와 결과뿐이며, 프롬프트·인자·출력은 결코 담기지 않습니다.
04
세션은 sha256 해시 체인이 붙은 추가 전용 JSONL입니다. 모든 실행이 하나의 트레이스(run ⊃ turn ⊃ tool)를 내보내며, 취소된 것도 포함합니다.
05
윈도우가 먼저입니다. 개발과 릴리스 게이트는 Windows 11에서 돕니다. POSIX 경로는 테스트되었지만 Linux와 macOS는 아직 CI로 검증되지 않았습니다.
06
AGPL-3.0-only. 자유롭게 수정하고 재배포하십시오. 수정한 빌드를 네트워크 서비스로 운영하면 그 사용자에게 소스를 제공할 의무가 생깁니다.
06터미널에서
고정된 시계로 sextant 페인터를 통해 화면 없이 그렸습니다. TUI가 그리는 것과 같은 코드 경로이지 목업이 아닙니다. 프레임에 올리면 평평해지고, 행에 올리면 그 표시가 켜집니다.

승인된 편집 전에는 그대로 담고, 승인을 거치지 않은 편집 뒤에는 편집 자신의 기준점에서 되살립니다.

승인은 고쳐진 인자에 대해 결정되고 세션 단위로 기억됩니다. 자식 에이전트는 물을 수 없습니다.

PASS와 FAIL 칩은 도구 자신의 머리글 줄에서 종료 코드를 읽습니다.

자식 세션은 하나뿐인 에이전트 루프를 함께 씁니다. TUI를 나가면 살아 있는 자식이 모두 취소됩니다.
07빠른 시작
제공자를 설정하지 않으면 일회성 실행은 대본이 있는 가짜 제공자를 씁니다. 패키징 스모크 테스트도 같은 방식입니다.
CLI 진입점은 bun이 실행하는 TypeScript라 node로는 돌지 않습니다. bun link가 rovecode를 PATH에 올립니다.
$ git clone https://github.com/9Code-Labs/rovecode && cd rovecode && bun install && bun linkrovecode setup이 안내합니다. 제공자를 고르고, 키를 가린 채 붙여 넣고, 작은 테스트 호출 한 번이면 끝입니다. 또는 rovecode auth set으로 키를 바로 저장하거나, ROVECODE_BASE_URL을 OpenAI 호환 엔드포인트로 향하게 하세요.
$ rovecode setup$ rovecode auth set anthropic그냥 rovecode면 sextant 화면이 열립니다. 따옴표로 감싼 프롬프트는 일회성 실행이고, --output json은 결과 객체를 정확히 하나 돌려줍니다.
$ rovecode "fix the failing test"
08제공자
저장된 자격 증명이 <NAME>_API_KEY 환경 변수를 이기고, 명시한 ROVECODE_BASE_URL / ROVECODE_API_KEY 짝이 둘 다를 이깁니다.
호스팅 api
로컬 런타임
● 로컬 런타임에는 키가 필요 없습니다 · rovecode auth set <이름>은 키를 ~/.rovecode/credentials.json에 저장합니다. 터미널에서 묻고 결코 화면에 찍지 않습니다.
어떤 엔드포인트든 · 실행 중
$ rovecode provider add homelab http://10.0.0.7:8000/v1 --no-key{"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그들의 말로
리뷰가 터미널로 옮겨 오고 승인 카드가 대화 그 자체가 되었습니다. 오가는 말은 3분의 1로 줄었는데 출시량은 같습니다.
Aylin Demirci
Head of Platform · Northwind Robotics
기본 거부 정책이 보안팀이 승인한 이유입니다. 모든 도구 호출이 우리가 이미 읽는 로그의 한 줄입니다.
Marcus Oyelaran
Staff Engineer · Harbourline Payments
열두 명, 로컬 모델, 중간에 벤더 없음. 고객 코드가 실행되도록 허용된 곳에서 실행됩니다.
Inés Ferrer
창업자 · Meridian Studio
페이지를 위해 쓴 가상의 팀들의 예시 인용문입니다. 출시 전에 실제 인용문으로 교체합니다.
10가격
모든 플랜은 같은 에이전트를 같은 기본 거부 정책 뒤에서 실행합니다. 플랜의 차이는 얼마나, 누구와 함께 실행하는가입니다.
내 저장소에서 에이전트를 시험해 보려는 분께.
$0/ 월
매일 이것으로 출시하는 한 명의 엔지니어에게.
$20/ 월
한 주를 이 안에서 보내는 엔지니어에게.
$200/ 월
크레딧, 지식, 정책을 공유하는 팀에게.
$80/ 월
최소 $80 · 정규 좌석당 $40 / 월
11자주 묻는 질문
셸을 에이전트에 맡기기 전에 사람들이 묻는 일곱 가지. 모든 답은 방법과 그것이 멈추는 지점을 말합니다.
여기 있는 모든 것은 README.md의 안전 모델, 알려진 한계, 관측 가능성, 라이선스와 고지 절에서 가져왔습니다. README가 한계를 말하는 곳에서는 이 페이지도 말합니다.
12rovecode 받기
$ git clone https://github.com/9Code-Labs/rovecode && cd rovecode && bun install && bun link