Skip to Content
Krad ADE
User guide

Harnesses

The coding agent programs a chat runs on, how the app drives each one and what each one supports.

A harness is a coding agent program a chat runs on. Krad ADE drives Claude Code, opencode v2 and Codex, and offers a Gateway as a harness of its own. You install and sign in to each harness as usual; the app finds it on PATH.

Choosing one

A new chat does not ask for a harness. The model picker has a tab per harness, with search and the keyboard, and the model you pick before the first message decides which harness runs the chat. Picking a Claude model runs Claude Code.

How each harness is driven

A chat drives its harness without a terminal and renders its stream natively. Each harness speaks its own protocol, and the app turns all of them into the same chat events:

HarnessProgramWhat the app talks to
Claude CodeclaudeOne live process per conversation in stream-json, fed through stdin
opencode v2opencodeA shared opencode server and its events; 1.x is not supported
CodexcodexCodex's app server and its notifications; sign in with codex login
GatewaynoneThe app's own agent engine, talking to the Gateway's models

With Claude Code, a message you send during a turn goes into the running process and waits there until Claude Code is ready for it.

Resume ids

Each harness labels its conversation with a resume id. The app saves that id with the chat, and on reopen the harness picks up its own stored conversation, history included, without your prompt being sent a second time. The app also keeps its own transcript of the parsed events next to the id, so a reopened chat shows its history at once.

If a harness rejects a saved resume id, the chat starts a new conversation and says so, instead of presenting it as the old one.

Agent state from hooks

Each agent reports its state through its vendor's hooks, and every hook runs krad-ade-agents hook <harness>:

  • Claude Code gets its hooks as inline settings when the app launches it, so your own Claude Code config is not edited.
  • Codex calls its notify program when a turn completes.
  • opencode reports through a status plugin. opencode 2 loads a TUI plugin only when it is listed in its global cli.json, and the app leaves that file to you, so you add the plugin there yourself.

The app maps each report to working, waiting for input or done. See Agents bus.

What differs between harnesses

FeatureClaude CodeopencodeCodexGateway
Terminal view of the same conversationYesYesYesNo, chat only
Rewind the conversationYesYesYesYes
Rewind the files tooYes, file checkpointsYes, its revertNoYes, engine snapshots
Started as a WorkerYesYesYesNo

See Chat for rewind and the terminal view, and Lead and Workers for Workers.

Harness command lines and flags change between releases. When a harness rejects one, the chat shows the harness's own error.

On this page