# durable agents
Experimental. Durable agents run on a zot continuoushost instead of inside the pane. The pane is a real PTY running zot's attached TUI as a view of one conversation. The host owns execution, queues, approvals, and recovery, so work continues when the view closes, when hrdx quits, or when the session holder restarts. Ordinary agents and shells are unchanged, and durable and ordinary panes can share a workspace, tab, and split layout.
## create one
Pick zot (durable) at the end of any agent picker (ctrl+b c, ctrl+b t, the tab bar +, or a split menu). It is never preselected, and no existing default turns durable on its own. The first durable agent in a project starts a managed host for that project in the background, with a private store next to the state file. Each further durable agent gets its own conversation. "Open another view" in the pane menu shows the same conversation again.
## the panel
ctrl+b D opens the durable agents panel for the current workspace: every associated conversation with its state and open views, even with no pane open. From there you can open a view, queue or steer a prompt (attach files with @path), rename, review approvals, review recovery holds, inspect usage, tasks, forks, and subagents, set a cost budget, change the model, explicitly abort work, and start or stop managed hosts. Destructive actions ask first.
The sidebar shows the host's real state: the spinner while work runs, then queued, approve, recover, failed, or offline. A disconnected host never reads as idle or finished. The settings window gains a durable section to mute individual notification categories and pick the host for new durable agents.
## lifetime
| action | effect on durable work |
|---|---|
| close pane, tab, workspace | ends only the view, never aborts host work |
| quit hrdx | views detach, managed hosts keep running |
| relaunch | each pane reattaches to its exact conversation, or shows the error |
| abort | explicit panel or socket API action only |
| stop a managed host | explicit; interrupted work stays recoverable in its store |
A restored pane whose conversation is gone, or whose host resolves to a different store, stays visible with the error instead of starting a fresh agent. Prompts sent from hrdx carry a stable request id, so a lost response is never resubmitted as new work.
## hosts
# profiles and whether they answer$ hrdx continuous hosts# register an external host$ hrdx continuous add --id team --address /path/to/host.sock# remote hosts need TLS and a token$ hrdx continuous add --id remote --address host.example:7000 --tls-ca ca.pem --token-file token# managed hosts only; stopping keeps interrupted work recoverable$ hrdx continuous start --id local-1a2b3c4d5e6f$ hrdx continuous stop --id local-1a2b3c4d5e6f# forget a profile, the host and its history are untouched$ hrdx continuous remove --id team
Profiles live in continuous-hosts.json next to the state file. Tokens are referenced by file and never copied into state, status output, or logs. Plaintext TCP is accepted only on loopback. hrdx stop still manages only the session holder.
## requirements
zot with zot continuous and a state location (not --state ""). Opening forks and subagents as views needs a zot whose help lists --continuous-conversation; older zot builds show "update zot" for those views. Back up the state file before downgrading hrdx, since older releases relaunch durable panes as ordinary zot. Scripting is covered in the socket api docs.