BobCode 1.1.0 for macOS is out — a real download, checksummed.Get it →
The harness

It finishes. Not just starts.

The model is the easy part to buy. The harness is what decides whether a task ends in a deliverable or a shrug.

Ship the internal toolLIVE
1Understand
Slack Slack Read requestBob AI
GitHub GitHub Map repoBob AI
Plan changeYou approve
2Build
Claude Claude Write codeOpus
DeepSeek DeepSeek Run testsDeepSeek
Fix failuresBob AI
3Ship
Vercel Vercel Deploy previewBob AI
Slack Slack Post linkBob AI

It plans first

You see the plan before the work starts, so a wrong assumption costs you a sentence instead of an hour.

It reads before it writes

Repositories, files, APIs and pages are mapped first. It does not guess at structure it could have looked at.

It recovers on its own

A failed tool call is a branch, not an ending. It retries, backtracks and tries another route before asking you.

It shows its work live

Every step appears in the console as it happens — pause, correct, or let it run.

It keeps going while you do not

Long jobs survive you closing the laptop. Check the run from your phone.

It can be undone

Roll back any run and take the other fork. Nothing is a one-way door.

Under the hood

The parts that make a long run survivable.

Every claim below is a mechanism that ships today. Where it has a boundary, the boundary is printed next to it.

Model-visible means logged

Anything that reaches the model has to be reconstructable from the session log, and a runtime invariant asserts it. That is what makes a run replayable, forkable and auditable after the fact.

Plan state survives compaction

A long run gets its context compacted. Plan mode is a pure fold of the session log rather than a live mirror, so resume, fork and compaction all recover it — the fact that it is waiting on your approval does not get compacted away.

LimitPlan mode specifically. Other state is not making this promise.

One huge output cannot flood the run

Oversized tool output is persisted verbatim to spill storage, and the model gets back an opaque locator, a retrieval hint and the exact byte count instead of the whole thing.

LimitReading it back needs a backend that exposes local paths.

A sandbox the OS enforces

File effects are confined by the operating system, not by asking the model nicely: bwrap/Landlock on Linux, Seatbelt on macOS, an ACL restricted token on Windows. Three modes — read-only, workspace-write, danger-full-access.

LimitFilesystem effects only — network and process visibility are outside it. The Windows runner reports partial enforcement for its ambient ACL gaps.

One background controller for everything

Background shell commands, terminal sends and subagents are all listed, read and killed through the same three tools. There is one place to look when something is still running.

It can sit inside a terminal

A persistent PTY it can open, write to, read from and signal — so it answers the interactive prompts that stop most agents dead: a login, a REPL, an installer asking y/n.

LimitNo TUI, named key sequences, BEL, resize or cross-agent sharing.

It can write a program instead of taking turns

In Code Mode the model writes one program that calls many tools, with concurrency-safe calls overlapping instead of queueing. Every nested call re-enters the same guarded tool pipeline, so nothing skips a permission check.

It can look up what it did before

Five read-only tools search and trace the session record. Every result is authorised from the calling session, so an agent cannot read its way into somebody else’s run.

Knowledge base

It remembers, and it still cannot touch your trunk.

A plain folder of markdown notes that BobCode can search and file into. Search is BM25 with Chinese bigram tokenisation, so a Chinese query and an English one both match, and [[wiki links]] pull connected notes into the result.

  • The files are ordinary .md — git it, open it in Obsidian, edit it outside BobCode.
  • The agent can only ever create notes in 00 Inbox. It never overwrites and never touches the rest of the tree; filing is yours.
  • Every agent-written note carries an agent-written footer, so you always know what came from the machine.
Flow canvas

Describe a process. Get a graph BobWork can run.

Say how the work goes in plain words and BobCode draws it as a flow document — steps, branches, and who does what. The actions come from the same six families the BobWork design system uses, so the picture you get is the picture your team already reads.

CommunicateDecideAwaitRecordProcessTransact
Connectors

It reaches into 100+ of your systems

Notion, ChatGPT, Gmail, Google Drive and Sheets, Slack, GitHub, Stripe, HubSpot, Salesforce, Shopify, Jira, Figma — it reads and writes in them the way a colleague would, inside the same run. If yours is not on the list, it can be added.

NotionNotionGmailGmailSlackSlackGitHubGitHubStripeStripeHubSpotHubSpot
FAQ

About the harness

What is BobCode, in one sentence?
An AI agent that does whole jobs — build, research, refactor, report — using whichever frontier model is best for each step, on your desktop, phone, terminal or browser.
What happens to my work if I stop paying?
It is already on your machine, because that is where it was made. Bring-your-own-key users keep working against their own provider account with no change at all.
What do I need to run it?
Nothing. The desktop apps are self-contained — download, open, done.

It finishes. Not just starts.

Most agents are impressive for ninety seconds and then stall on a failed tool call. The harness is the part that plans, retries, backtracks and keeps going — and it is the part we have spent the most time on.