Harnesses

A Harness is the vendor coding CLI a session drives. It is a program Actana runs, not a part of Actana: the Core spawns it into a PTY on the machine that has your repo, and the Panel never sees more than an id and an availability status.

Supported

The rows track the shared harness registry one-for-one, as of the current release:

Harness Command Status Auto-approve flag
Claude Code claude Supported --dangerously-skip-permissions
Codex codex Supported --yolo
Cursor CLI cursor-agent Supported --force
OpenCode opencode Supported none offered
Hermes — Coming soon —
Pi — Coming soon —

The family is open by design: a Harness is one registry entry plus a launcher, and nothing in the Panel or the core-link is specific to any of the four supported today. Using one that is not here? Open an issue — that is how a row gets added. Coming-soon entries appear in the Panel as themselves, not installable yet.

From the CLI, actana session start accepts --harness with those ids (claude-code, codex, cursor-cli, opencode) and --dangerously-skip-permissions when you want the Core to pass the vendor's auto-approve flag.

Installing a Harness

Each Core needs the CLIs it will spawn, installed under that Core's own user. A CLI on your laptop does not count for a Core on a workstation. The Core probes its PATH at startup, on a tick, and after an install, then publishes availability; the Panel reads that snapshot and never inspects a remote PATH.

On a terminal, actana setup offers each missing Harness in turn and installs the ones you accept with the vendor's own installer — so that Harness's updater and login still work afterwards. Non-interactive: --with-<harness> for specific ids, --yes for every missing one, --no-harnesses for none. With no terminal and none of those flags, setup installs nothing and asks nothing.

Declining is not permanent:

actana harnesses install opencode

The id is the Harness name or its command (claude-code and claude both work). A vendor installer that fails is reported with the vendor's docs URL and never fails your Core install. After an install the Core re-probes, so a paired Panel sees the new Harness without a daemon restart.

From another machine, ask the same Core over the link — actana harness install <id> — which waits for the Core's verdict (available on PATH), not the vendor installer's exit code. From the Panel, a missing Harness at session start can be installed the same way: acknowledged immediately, outcome on the event log.

What is never touched

The Panel never writes into ~/.claude, ~/.codex, ~/.cursor, or any other Harness skill directory. The one exception is the two Actana skills, and those are written by the actana CLI on the machine the Harness runs on — not by the Panel. See CLI Skills.

See also

Built by Qcentic