Skip to main content
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. Use r5dchat automations --help for the complete installed command inventory:
  • automations create/update/validate/activate/pause/resume/disable/delete/run/list/inspect
  • schedules list/preview/set/history/pause/resume/disable/delete/run
  • webhooks list/create/inspect/inbox/pause/resume/disable/delete/rotate/replay/discard
  • services list/register/validate/status/logs/activate/restart/stop/delete
  • secrets list/status/declare/set/rotate/revoke/delete
  • runs submit/status/result/follow/cancel/reconcile/delete-history, infer
  • projects list/create, chats list/create/prompt, grants refresh
Create and run commands require stable idempotency keys. Configuration changes create immutable revisions; pass --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.
Run the daemon locally with:

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

Lists paths in the active namespace. Default output is one path per line so it composes with shell tools; directories have a trailing slash.

read

Writes the exact artifact bytes to stdout. The argument may be a namespace path or an 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

Materializes an artifact in the private local workspace and prints the saved absolute path. Without a local path, it uses the artifact’s stored filename in the current directory, including when pulling an 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

Publishes one regular local file into the active remote namespace. By default an existing artifact is not overwritten. --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.
ARTIFACT_SCOPE selects the context for a workspace call; it does not bypass authorization. The server checks the workspace user’s project membership or standalone-chat participation for every operation.

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

Start with a bounded recent index, then inspect only relevant work or exact message parts. Natural turn/work IDs remain stable across automatic context rollovers. --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

Legacy export of one turn, including tool calls and results. A long-running turn may span multiple context windows; prefer inspect-work and inspect-node for recovery rather than loading the entire export.

read

Returns the complete transcript in Markdown, with fresh-context boundaries marked.
r5dchat conversation <conversation-id> without a subcommand still performs a full read for backwards compatibility.