r5dchat is a compiled binary at /usr/local/bin/r5dchat in the workspace
image. It runs the private workspace daemon and gives the agent access to remote
artifacts and its authorized conversation history.
convo is an alias for conversation.
Private automation commands
Interactive agent shells receive owner authentication automatically. No browser approval click or manually pasted CLI token is needed. User5dchat automations --help for the complete installed command inventory:
automations create/update/validate/activate/pause/resume/disable/delete/run/list/inspectschedules list/preview/set/history/pause/resume/disable/delete/runwebhooks list/create/inspect/inbox/pause/resume/disable/delete/rotate/replay/discardservices list/register/validate/status/logs/activate/restart/stop/deletesecrets list/status/declare/set/rotate/revoke/deleteruns submit/status/result/follow/cancel/reconcile/delete-history,inferprojects list/create,chats list/create/prompt,grants refresh
--version for optimistic concurrency and activate that exact version. Schedule/webhook bindings must match the activated definition. Schedule delete disables the retained row; removing its policy in a new definition prevents reactivation. Service delete requires stopped, expired authorization. Reconciliation records explicit external-state/process evidence and never replays effects.
Secret set/rotate and webhook rotation accept only --stdin or --file, not values in arguments. Results never contain secret values. Refresh stores replacement credentials under ~/.r5dchat/cli-identities (0700 directory, 0600 files), keyed by original token and server; never publish or inspect that directory. Owner credentials last 15 minutes and refresh within a fixed one-day deadline; refresh before expiry or start a fresh authenticated shell. Lost refresh responses fail closed. Restricted background credentials always take precedence over owner variables and never fall back to owner/session/daemon authority.
See Private automation authoring.
r5dchat daemon
Starts the workspace daemon. This is the container’s default command, so you rarely run it manually except in local development. The daemon listens on port 7337 and serves an authenticated private HTTP protocol for file, search, and process operations, plus an unauthenticated/healthz endpoint used by readiness and liveness probes.
string
default:"/home/r5d"
Root directory the daemon operates in. This is the user’s private workspace,
not shared artifact storage.
integer
default:"7337"
Port the daemon listens on.
string
required
Bearer token required on every daemon request. Supplied from the workspace
identity Secret in Kubernetes.
string
Workspace identity presented when calling back into the control plane.
string
Control-plane base URL used by artifact and conversation commands.
string
Active collaboration namespace, normally
project/<id> or chat/<id>. The
control plane supplies it to each shell process from the active conversation;
it is not a general permission grant, and the server still checks membership.Artifact commands
Artifacts are remote objects in the active collaboration scope: a project namespace shared by project members, or a private standalone-chat namespace. They are not mounted into the private workspace filesystem, and ordinary filesystem commands cannot browse them until they are pulled.list
read
artifact://<artifact-id> target copied from a chat link. By default this
reads the current head; --revision <revision-id> reads an immutable historical
revision. Status and errors go to stderr, so text can be piped without JSON
framing and binary content is not corrupted.
pull
artifact://<artifact-id>
reference. This preserves the uploaded filename, including any suffix added to
resolve duplicate uploads. For example, pulling a link to report-a1b2c3d4.pdf
saves ./report-a1b2c3d4.pdf, with its extension intact.
An explicit local path overrides the default name. Existing local files are
protected unless --force is used, including when different remote folders or
chats contain the same filename. Use an explicit local path to keep both copies.
push
--force publishes a new immutable
revision while preserving the artifact ID and history. Use --base-revision
with the head revision reported by stat to reject a stale amendment instead of
overwriting someone else’s concurrent update. Success prints the canonical
[filename](artifact://<artifact-id>) Markdown link, ready to include verbatim in
chat.
history and rollback
history lists newest-first immutable revisions. rollback does not erase or
rewind history: it creates a new head whose bytes come from the selected
revision, recording the restore source for change control. The optional base
revision prevents a rollback from racing a concurrent update.
stat and delete
stat prints head or selected-revision metadata without downloading bytes.
delete removes the artifact and all of its retained revisions after server-side
scope authorization.
Conversation commands
These let the agent recover context after a fresh-context boundary without keeping the entire transcript in the model’s context window. Requests authenticate with workspace identity, and the server independently re-checks that the workspace’s user is an authorized project member or standalone-chat participant.overview
--skeleton uses shorter excerpts. nextBefore pages older turns;
nextCall pages tool calls; nextPart and nextOffset identify further message
content. Call numbers are 1-based; part indices and character offsets are 0-based.
These recovery views use compact JSON, limited to 12,000 serialized characters
by default (--max-chars can raise it to 24,000). Omissions are explicit. Large
tool results do not have to be loaded to locate a particular call. Recovery and
handover messages are omitted from the overview rather than nested into later
overviews.
turn
inspect-work and inspect-node for
recovery rather than loading the entire export.
read
r5dchat conversation <conversation-id> without a subcommand still performs a
full read for backwards compatibility.