voss harness
An agent loop that
stays inside the lines.
The Voss harness is an agent loop that lives in your terminal. Drop into any repo, give it a goal, and keep reads, edits, shell commands, memory, and resumes inside explicit boundaries.
Install
Install through npm without managing Python yourself, or use pip when you want the Python package directly.
Modes
Modes are explicit: plan for read-only work, edit for scoped changes, auto for higher-trust local automation.
Memory
Project memory and code recall keep useful repo context available beyond one chat.
A turn looks like this
Plan, edit, run, verify.
Each turn is a confidence-gated plan, permission-checked tool calls, and a validation loop. In plan mode, mutating tools are denied before they run.
$ voss do --mode=auto "add a /healthz endpoint and a test for it"
[plan] confidence 0.92
1. fs_grep "FastAPI\(" -> app/main.py
2. fs_edit app/main.py -> add @app.get("/healthz")
3. fs_write tests/test_health.py -> pytest case
4. shell_run pytest tests/test_health.py -q
[edit] app/main.py +4 -0 ✓ allow (mode=auto)
[write] tests/test_health.py +12 ✓ allow (mode=auto)
[shell] pytest tests/test_health.py -q
1 passed in 0.18s ✓
done. token spend: 4,128 / budget 8,000, saved as session 0193...Built for AI-first builders.
You're shipping AI inside a product. The harness is the agent that helps you do it, without leaving the terminal, without a second subscription, without surrendering your repo.
Bring your own subscription
Use Claude Code or Codex CLI auth when available, or fall back to ANTHROPIC_API_KEY / OPENAI_API_KEY for CI and reliable provider access.
Permission modes that match how you work
plan is read-only, edit supports scoped writes, and auto allows broader local automation through the lower-level safeguards.
Real tools, not toys
fs_read, fs_glob, fs_grep, fs_write, fs_edit, shell_run with an allowlist, git_status, git_diff, and voss_check. Core file tools stay project-scoped and mutating actions pass through explicit permission metadata.
Confidence-gated planning
Each turn produces a `ProbableValue<Plan>`. Low-confidence plans get rerolled, not executed. It is the same primitive Voss programs use.
Sessions you can resume
Sessions are stored per project under .voss/sessions. List them, resume by id, and keep prior runs tied to the repo.
Code-aware recall
`voss recall` and the `code_recall` tool search code and project memory together, with labeled sources and lexical fallback when vector search is unavailable.
Headless or interactive
`voss do "ship the login flow"` for one-shots. `voss chat` for the REPL. Same agent loop either way, whether scripted or supervised locally.
Permissions
Three modes. Persistent decisions.
Every project gets its own permission record at ~/.config/voss/permissions.json. Grant once, ship.
Inspect a repo without touching it.
Default for voss edit. Scope expansions require approval.
Allowlisted everything. Destructive patterns still prompt.
Auth
Three ways in. Subscription-first.
Use local OAuth where it fits, or set provider API keys when you need predictable CI and automation behavior.
Interactive login
Use the Voss login wizard when you want provider credentials managed outside the shell environment.
voss login
Environment key
Set a provider API key for CI or machines where interactive login is not the right fit.
export ANTHROPIC_API_KEY=sk-ant-...
Doctor check
Confirm Python, imports, credentials, git, writable directories, and project setup before running work.
voss doctor
The verbs you'll actually use.
- $ voss do "find the auth flow and name the risky files"Read-only repo task
- $ voss chatInteractive REPL with persistent session
- $ voss sessionsList saved project sessions
- $ voss resume <id>Pick up where you left off
- $ voss recall "where is retry backoff handled?"Search code and memory together
- $ voss sync --checkCheck managed project docs for drift
- $ voss toolsInspect available harness tools
- $ voss config --showInspect local harness config
- $ voss doctorVerify credentials, tools, sandbox
Install
Try it in a repo.
Install the npm CLI, log into a provider or set an API key, and run voss doctor to verify.
npm i -g @vosslang/cli voss doctor
