Free & open source · Beta

More work per token.
More control per run.

An open-source coding workbench on a lean, well-tested harness — your subscription goes to your problem, and every step stays in plain sight.

npx @nervekit/desktop@latestNode.js 24+

Linux · macOS · Windows · local-first

nerve · live run

Simulated Nerve run: the user prompt, the agent's reasoning, a read tool call with its bounded output, an approval gate for an edit, the applied diff, a verification command, and the final reply.

  1. You

    Add a retry budget to the run recovery path.

  2. Recovery lives in run-recovery.ts. A budget needs the retry count and the base delay in one place, so both call sites read one constant.

  3. readpackages/harness/src/run-recovery.ts
    Read 214 lines
    214 linesShow 7 more items
  4. approvaledit needs reviewapproved
  5. editpackages/harness/src/run-recovery.ts
    +12 −3 · retry budget wired into the recovery loop
    2 hunksShow 7 more items
  6. bashpnpm test --filter @nervekit/harness -- run-recovery
    ✓ recovery continues from checkpoint (12 tests)
    Done in 3.2s
    6 linesShow 7 more items
  7. Retry budget added: three attempts on a 2s exponential base.

Lean by design

Your tokens go to your problem.

Every token the harness spends describing itself is one your plan doesn't spend on your code. So the prompt is tiny, tools are earned, and outputs are capped — not lost.

363 characters.

That's the whole built-in system prompt.

You are Nerve's coding agent. Work safely in the current project and keep responses concise.
system prompt

Only the tools it needs.

The rest are never sent.

  • read
  • edit
  • write
  • grep
  • bash
  • explore
  • launch
  • web_search
  • python
  • jira
  • confluence
  • vision
  • never sent

Big outputs, trimmed — not lost.

The full output stays on disk. The agent opens it when it needs it.

1.8 MB of test outputexample

24 KB

to the model

+ pointer to the rest

Archive · kept in full

read on demand

Runs on the plan you already pay for.

  • Anthropic
  • OpenAI Codex
  • GitHub Copilot
  • Any API key
  • auto-compacts before the window fills
How tool output reaches the model

Transparent by default

Watch every step. Steer without stopping.

A run is a stack of typed events you can read, retune, gate, and rewind — while it is still running.

01

Typed events

Prompt, reasoning, tool call — each a typed row with bounded output.

  1. prompt
    You

    Add a retry budget to the run recovery path.

  2. reasoning

    Locating the recovery entry point before editing anything.

  3. tool_call
    readpackages/harness/src/run-recovery.ts
    export async function recoverRun(run: Run) {  const attempt = run.recovery.attempts;  if (attempt >= MAX_ATTEMPTS) return fail(run);  …
    200 of 214 linesfull output retained
02

Steer mid-run

Queue a message or swap model and thinking. It applies from the next request.

  1. tool_call
    grepMAX_ATTEMPTS packages/harness
  2. steering
    You

    Keep it small — no new dependencies.

    queued
  3. config
    model Opus → GPT · thinking high → lowapplies from next request
  4. reply

    Same run, new settings — I'll use the existing timer.

03

The gate is real

Policy decides before the tool runs. Nothing below the gate executes.

  1. policy

    edit — evaluated before it runs

    • read_onlyblock
    • supervisedask
    • autonomousallow
  2. approval
    approvaledit run-recovery.tsapproved
  3. edit
    editrun-recovery.ts+12 −3
    - const MAX_ATTEMPTS = 1;+ const MAX_ATTEMPTS = 3;+ const BACKOFF_MS = 2_000; // doubles
04

Rewind and branch

Select any earlier entry and continue from it. The old lineage stays.

promptreadeditreply
selected entry

tool_call · read

Ran with Opus · high — earlier entries keep their settings.

New branch · GPT · low

Illustrative run.

The whole loop, one window

From prompt to pull request without leaving.

Transcript, editor, Git, pull requests, and background tasks are panels of one workbench, bound to the same project.

nerve · workbench
Nerve workbench: conversation list, a transcript with retained command output and sub-agent cards, and the Git panelNerve workbench: conversation list, a transcript with retained command output and sub-agent cards, and the Git panel
Nerve with the project file tree and rate-limit.ts open in the built-in editor with an unsaved changeNerve with the project file tree and rate-limit.ts open in the built-in editor with an unsaved change
Nerve workbench showing edit diffs in the transcript beside the Git changes panel with staged and unstaged filesNerve workbench showing edit diffs in the transcript beside the Git changes panel with staged and unstaged files
Nerve pull request view with summary, mergeability and checks beside the pull requests panelNerve pull request view with summary, mergeability and checks beside the pull requests panel
Nerve launches panel listing launch configurations beside the retained output of a test runNerve launches panel listing launch configurations beside the retained output of a test run
The same Nerve conversation on a phoneThe same Nerve conversation on a phone
On your LAN

TranscriptEvery command, edit and sub-agent is a typed event you can open.

Editor & filesEdit project text files in place; saves are atomic and revision-checked.

GitStage, commit, push, pull and sync per repository.

Pull requestsSummary, mergeability and checks beside the work. Needs gh.

Background tasksSupervised runs with retained logs, one click to restart.

Also in your pocket — opt in to LAN access and open the same workbench from your phone.Set up

Parallel by nature

Many projects. A team of agents. All at once.

Every conversation is its own tab in its own project. Inside one, a lead agent hands work to sub-agents you shape — and they report back with receipts.

acme-web2 tabs
  • Checkout form a11yrunning
  • Bump design tokensrunning
acme-api2 tabs
  • Add rate limitinglead
  • Fix flaky auth testidle
infra1 tabs
  • Node image upgraderunning
Lead agentAdd rate limitingReports in4/4
  • map-auth-flowdone
    exploreread-only

    Trace the token refresh pathreport · 6 files traced

  • api-limiterdone
    developerautonomous

    Add rate-limit middlewarefollow-up done · tests added

  • settings-uidone
    ui-developeryour profile

    Build the limits formreport · 2 components edited

  • check-testsdone
    exploreread-only

    Find uncovered branchesreport · 3 gaps found

  • pnpm devrunning

    Dev server · background tasklogs retained

Up to 10 per batchProfiles: model · thinking · permission · tools · skillsFollow up by name

Illustrative run.

Ready when you are

Run it on your own machine.

  1. 01InstallNode.js 24+
  2. 02Connect a providerSubscription or API key
  3. 03Open a projectAny local repository
npx @nervekit/desktop@latestNode.js 24+
  • local loopback daemon
  • state in ~/.nerve
  • no Nerve account, no product analytics
  • Apache-2.0
  • Linux · macOS · Windows 11
  • Automatic retries
  • Context compaction
  • Continue from failure
  • Spend stays visible
  • Voice prompts
  • Prompt suggestions
  • Light, dark & system themes