Docs/CLI reference
CLI reference
Every dieter command and its offline help, generated from the CLI's command table.
For task-oriented examples, start with the CLI guide
. Run
dieter help COMMAND [ACTION] for the help of the release you have installed.
Generated from the CLI command table by go run ./tools/clidocs. Every
section is the command’s offline --help output.
dieter
Dieter — control local or enrolled Dieter daemon machines
Usage:
dieter [global options] <command> [options]
Global options:
--store PATH DIETER_HOME (default ~/.dieter)
--gateway URL Require this enrolled gateway origin
--machine ID|NAME Target an enrolled daemon; omit for the local daemon
--timeout DURATION Unary command and connection timeout (default 15s)
--harness-config PATH Local daemon harness registry YAML
--help, -h Show this help
--version Print the version
Commands:
machine List, route, rename, revoke, inspect, control, or privately lock machines
status Show target daemon health, runtime, route, and state counts
harness List target daemon harnesses, models, and options
quota Show, summarize, refresh, and reset provider-account quotas
project Create, browse, map hostnames, relocate, archive, and restore projects
board Manage boards, retirement/restore, hostnames, workflows, and labels
card Create, edit, read, present files, merge, and manage board conversations
chat Manage standalone conversations and present files or URLs
workspace Inspect changes and run durable Git/SCM operations
file Browse, edit, copy and sync project/workspace files
terminal Create, attach, control, and close daemon-host PTYs
remote Run resumable commands and native shells on a daemon host
screen Share screens/clipboard, configure virtual displays, inspect latency
schedule Create, preview, dispatch, pause, and inspect schedules
kv Shared portable JSON, ordering, and live account subscriptions
channel Agent channels (experimental): messages, claims and decisions between agents
mail Send Markdown reports to Dieter Mail; read, flag, file and delete them
vault End-to-end encrypted passwords and TOTP shared by your machines
device Pair, approve, revoke, and inspect the account's trusted devices
peer Inspect and edit account peer settings (leaderless sync)
settings Inspect and update prompt and daemon settings
prompt Inspect, update, scope, and preview prompt templates
watch Stream this machine's change frames as JSON Lines
storage Print the target daemon's central storage path
doctor Check local Linux/macOS runtime and service prerequisites
setup Authorize, enroll, and install the daemon and macOS privacy helper
daemon Start, enroll, recover, inspect, or manage this local daemon service
serve Alias for "dieter daemon start"
version Print the version
Without --machine, operational commands use the running local daemon API. With
--machine, the CLI uses the local daemon's enrollment to authenticate to the
gateway, prefers direct TLS, then tries WebRTC (direct or TURN), and falls back
to the bounded gateway relay.
Status reports the selected route. It never reads a remote machine's storage.
Read watches renew credentials and resume after transient failures, with five
retries between delivered frames. Revocation stops recovery; mutations and
process starts are never replayed by watch recovery.
Run "dieter help <command> [action]" or append --help at any command depth.
dieter machine (alias: machines)
Usage: dieter machine <action>
Actions:
list [--format table|json|jsonl|ids] List enrolled machines
gateway Show the connected gateway build
watch [--count N] Stream gateway presence as JSON Lines
show [MACHINE] Show gateway presence and route
route [MACHINE] Inspect direct routes and relay channel health
info [MACHINE] Show live host telemetry
rename --name NAME [MACHINE] Rename an enrolled machine
revoke --confirm MACHINE_ID [MACHINE] Revoke an enrolled machine
restart --confirm RESTART [MACHINE] Restart the machine
shutdown --confirm "SHUT DOWN" [MACHINE] Shut the machine down
update --confirm UPDATE [MACHINE] Update a managed daemon service
rtc [MACHINE] Get signed WebRTC configuration
connection <start|show|close> Manage data-only WebRTC signaling
privacy <status|setup|on|off> [--key ID] Control macOS local display/input privacy
Pass MACHINE or global --machine to select a remote daemon. Info, restart,
shutdown and update target the local daemon when MACHINE is omitted. Update is
non-interactive and available to Homebrew-managed macOS services and
Dieter-managed Linux systemd user services.
dieter machine list
Usage: dieter machine list [--format table|json|jsonl|ids]
dieter machine gateway
Usage: dieter machine gateway
dieter machine watch
Usage: dieter machine watch [--count N]
dieter machine show
Usage: dieter machine show [MACHINE]
Show the machine's gateway presence and route as JSON.
dieter machine route
Usage: dieter machine route [MACHINE]
Show the machine's direct routes and relay channel health as JSON.
dieter machine info
Usage: dieter machine info [MACHINE]
Show live host telemetry; the local daemon when MACHINE is omitted.
dieter machine rename
Usage: dieter machine rename --name NAME [MACHINE]
dieter machine revoke
Usage: dieter machine revoke --confirm MACHINE_ID [MACHINE]
--confirm must equal the machine's exact ID.
dieter machine restart
Usage: dieter machine restart --confirm RESTART [MACHINE]
dieter machine shutdown
Usage: dieter machine shutdown --confirm "SHUT DOWN" [MACHINE]
dieter machine update
Usage: dieter machine update --confirm UPDATE [MACHINE]
Update a Homebrew-managed macOS or Dieter-managed Linux daemon service.
dieter machine rtc
Usage: dieter machine rtc [MACHINE]
Print a signed WebRTC (ICE) configuration for the machine as JSON.
dieter machine connection
Usage: dieter machine connection <start|show|close> [options]
Inspect or manage data-only WebRTC signaling on the selected daemon.
Use --machine ID|NAME for a remote daemon. Normal commands select WebRTC automatically.
start requires protobuf JSON containing rtcConfiguration and offerSdp.
dieter machine connection start
Usage: dieter machine connection start --request FILE
Start data-only WebRTC signaling from protobuf JSON with rtcConfiguration and
offerSdp (a signed RTC configuration and the gathered SDP offer).
dieter machine connection show
Usage: dieter machine connection show SESSION
Show the session's selected ICE mode (direct or turn).
dieter machine connection close
Usage: dieter machine connection close SESSION
Close only this data-only transport.
dieter machine privacy
Usage: dieter [--machine ID|NAME] machine privacy <status|setup|on|off> [--key ID]
Black out local displays and block physical input while agents and remote control continue.
Setup registers the privileged input helper; approve it and grant Input Monitoring on the target Mac.
Requires macOS Accessibility permission. Stays on across disconnects and daemon restarts;
unlock explicitly or reboot to clear. This is session privacy, not an authentication lock.
dieter machine privacy status
Usage: dieter [--machine ID|NAME] machine privacy status
Show the privacy state (off, on or degraded) and whether its input helper needs setup, as JSON.
dieter machine privacy setup
Usage: dieter [--machine ID|NAME] machine privacy setup [--key ID]
Register the privileged input helper; approve it and grant Input Monitoring on the target Mac.
--key is an idempotency key: reuse it only to retry this operation on this daemon.
dieter machine privacy on
Usage: dieter [--machine ID|NAME] machine privacy on [--key ID]
Black out local displays and block physical input; agents and remote control continue.
It stays on across disconnects and daemon restarts until off or a reboot.
--key is an idempotency key: reuse it only to retry this operation on this daemon.
dieter machine privacy off
Usage: dieter [--machine ID|NAME] machine privacy off [--key ID]
Restore local displays and physical input.
--key is an idempotency key: reuse it only to retry this operation on this daemon.
dieter status
Usage: dieter status [--format table|json]
dieter harness (alias: harnesses)
Usage: dieter harness list [--format table|json|jsonl|ids]
dieter harness list
Usage: dieter harness list [--format table|json|jsonl|ids]
dieter quota (alias: quotas)
Usage: dieter quota <action>
Actions:
list [PROVIDER] [--format table|json|jsonl] List account quotas and provider summaries
watch [PROVIDER] [--count N] Stream quota updates as JSON Lines
refresh [PROVIDER] [--account KEY] Request a bounded refresh and show the result
include PROVIDER --account KEY Include an account in its header summary
exclude PROVIDER --account KEY Exclude an account from its header summary
reset openai --account KEY --confirm RESET Consume one available reset credit
PROVIDER is openai, codex, or claude. Quotas are gateway-account scoped and
combine accounts discovered by all online enrolled machines. Summary values
show the lowest remaining window; separate account quotas are never summed.
dieter quota list
Usage: dieter quota list [PROVIDER] [--format table|json|jsonl]
dieter quota watch
Usage: dieter quota watch [PROVIDER] [--count N]
dieter quota refresh
Usage: dieter quota refresh [PROVIDER] [--account KEY] [--format table|json]
Claude refresh respects its five-minute polling interval and ten-minute failure cooldown.
dieter quota include
Usage: dieter quota include PROVIDER --account KEY
dieter quota exclude
Usage: dieter quota exclude PROVIDER --account KEY
dieter quota reset
Usage: dieter quota reset openai --account KEY --confirm RESET
dieter project (alias: projects)
Usage: dieter project <action>
Actions:
list List active projects; --removed lists archived ones
show PROJECT Show project metadata
create PATH Create and register a Git working tree on the target daemon
open PATH Register an existing Git working tree on the target daemon
directories [PATH] Browse daemon-host directories and Git repositories
update PROJECT Update path, name, summary, instructions or browser hostnames
workspace PROJECT Update the Git base and validation commands
remove PROJECT Archive a project
restore PROJECT Restore an archived project
checkouts PROJECT List the project's checkouts across machines
attach PROJECT PATH Attach this machine's checkout to an existing shared project
detach CHECKOUT Detach a local checkout
consolidate SOURCE DESTINATION Merge SOURCE into DESTINATION, keeping all boards and owners
dieter project create
Usage: dieter project create [options] PATH
Options:
--operation-id ID Reuse for a safe retry of project creation
--name NAME Project display name
--summary TEXT Project summary
--prompt TEXT Project instructions
--prompt-file FILE Read project instructions from FILE or -
--board-name NAME Initial board name (default Main)
--workflow direct|review Initial board workflow
--base-remote REMOTE Git base remote
--base-branch BRANCH Git base branch
--validation-file FILE Validation command JSON
--format json|id Output format
dieter project open
Usage: dieter project open [options] PATH
Options:
--operation-id ID Reuse for a safe retry of project creation
--name NAME Project display name
--summary TEXT Project summary
--prompt TEXT Project instructions
--prompt-file FILE Read project instructions from FILE or -
--board-name NAME Initial board name (default Main)
--workflow direct|review Initial board workflow
--base-remote REMOTE Git base remote
--base-branch BRANCH Git base branch
--validation-file FILE Validation command JSON
--format json|id Output format
dieter project directories
Usage: dieter project directories [PATH]
dieter project list
Usage: dieter project list [--removed] [--format table|json|jsonl|ids]
dieter project show
Usage: dieter project show PROJECT
dieter project update
Usage: dieter project update [--path PATH] [--name NAME] [--summary TEXT] [--prompt TEXT|--prompt-file FILE] [--hostname HOST[:PORT] ...|--clear-hostnames] PROJECT
Repeat --hostname to replace the complete list of exact browser hosts or host:port mappings.
Ports are 1-65535; use brackets for IPv6 ports, for example '[::1]:4018'. No URL, path, or wildcard.
Capture tries board mappings before project mappings. Within each scope, an exact port wins,
then a bare host is the fallback; HTTP and HTTPS default to ports 80 and 443.
Use --clear-hostnames to remove all mappings; omit both flags to preserve them.
dieter project workspace
Usage: dieter project workspace [--base-remote REMOTE] [--base-branch BRANCH] [--validation-file FILE --checkout ID] PROJECT
dieter project remove
Usage: dieter project remove PROJECT
dieter project restore
Usage: dieter project restore PROJECT
dieter project consolidate
Usage: dieter project consolidate SOURCE DESTINATION
Keep destination project defaults and retain every source board, label, checkout, and conversation with its existing ID and machine owner. Source references become durable redirects.
dieter project attach
Usage: dieter project attach [--name NAME] PROJECT PATH
Attach an existing Git working tree on the selected machine to a shared project.
dieter project detach
Usage: dieter project detach CHECKOUT
Detach a checkout on the selected machine without deleting project or conversation data.
dieter project checkouts
Usage: dieter project checkouts PROJECT
List the project's checkouts on every machine; paths are shown only for the selected machine.
dieter board (alias: boards)
Usage: dieter board <action>
Actions:
list List boards
show BOARD Show one board, its lanes and labels
create Create a direct or review workflow board
rename BOARD Rename a board
retention BOARD Configure automatic Done-card archiving
git BOARD Configure the default remote and publishing mode
hostnames BOARD Replace, append or clear exact browser hosts
retire BOARD Retire an empty board without deleting its records
restore BOARD Restore a retired board by exact ID
label list List board labels
label add Create a board label
label update LABEL Update label name, color or instructions
label remove LABEL Delete a board label
dieter board retire
Usage: dieter board retire --revision REV --operation ID BOARD
Use an exact board ID and its retirementRevision from board show. Retirement refuses active, archived, pending card or schedule references. Records and labels are retained; restore is reversible. A late peer reference makes retirement blocked and the board visible.
The operation ID is a durable local replay receipt: retry identical input only on the same daemon. Success means local durability, not acknowledgement by every replica.
dieter board restore
Usage: dieter board restore --revision REV --operation ID BOARD
Use an exact board ID and its retirementRevision from board show. Retirement refuses active, archived, pending card or schedule references. Records and labels are retained; restore is reversible. A late peer reference makes retirement blocked and the board visible.
The operation ID is a durable local replay receipt: retry identical input only on the same daemon. Success means local durability, not acknowledgement by every replica.
dieter board hostnames
Usage: dieter board hostnames [--hostname HOST[:PORT] ...] [--append|--clear] BOARD
Accepts exact hosts or host:port mappings. Replaces the complete list by default.
--append adds without replacing; --clear removes all.
Ports are 1-65535; use brackets for IPv6 ports, for example '[::1]:4018'. No URL, path, or wildcard.
Capture tries board mappings before project mappings. Within each scope, an exact port wins,
then a bare host is the fallback; HTTP and HTTPS default to ports 80 and 443.
dieter board create
Usage: dieter board create --project PROJECT --name NAME [--workflow direct|review] [--description TEXT] [--archive-done POLICY] [--base-remote REMOTE] [--remote-publish manual|pull_request|push_base]
dieter board list
Usage: dieter board list [--project PROJECT] [--retired] [--page-size N --after ID --snapshot REV] [--format table|json|jsonl|ids]
Active boards are the default. --retired returns a bounded page; JSON includes nextId and snapshotRevision for continuation.
dieter board show
Usage: dieter board show BOARD
dieter board rename
Usage: dieter board rename --name NAME BOARD
dieter board retention
Usage: dieter board retention --archive-done POLICY BOARD
POLICY: never, immediately, after_1_day, after_7_days, after_30_days, or after_90_days.
dieter board git
Usage: dieter board git [--base-remote REMOTE] [--remote-publish manual|pull_request|push_base] BOARD
manual preserves explicit Git actions, pull_request requires PR publishing, and push_base pushes validated local integrations to the configured base branch.
dieter board label
Usage: dieter board label <action> [options]
Actions:
add --board BOARD --name NAME [--color COLOR] [--instructions TEXT]
list --board BOARD
update --board BOARD [--name NAME] [--color COLOR] [--instructions TEXT] LABEL
remove --board BOARD LABEL
COLOR is a hex color such as #6558df (the default for new labels). LABEL is an
exact label ID or a unique name. Agents see a label's instructions on its cards.
dieter board label add
Usage: dieter board label <action> [options]
Actions:
add --board BOARD --name NAME [--color COLOR] [--instructions TEXT]
list --board BOARD
update --board BOARD [--name NAME] [--color COLOR] [--instructions TEXT] LABEL
remove --board BOARD LABEL
COLOR is a hex color such as #6558df (the default for new labels). LABEL is an
exact label ID or a unique name. Agents see a label's instructions on its cards.
dieter board label list
Usage: dieter board label <action> [options]
Actions:
add --board BOARD --name NAME [--color COLOR] [--instructions TEXT]
list --board BOARD
update --board BOARD [--name NAME] [--color COLOR] [--instructions TEXT] LABEL
remove --board BOARD LABEL
COLOR is a hex color such as #6558df (the default for new labels). LABEL is an
exact label ID or a unique name. Agents see a label's instructions on its cards.
dieter board label update
Usage: dieter board label <action> [options]
Actions:
add --board BOARD --name NAME [--color COLOR] [--instructions TEXT]
list --board BOARD
update --board BOARD [--name NAME] [--color COLOR] [--instructions TEXT] LABEL
remove --board BOARD LABEL
COLOR is a hex color such as #6558df (the default for new labels). LABEL is an
exact label ID or a unique name. Agents see a label's instructions on its cards.
dieter board label remove
Usage: dieter board label <action> [options]
Actions:
add --board BOARD --name NAME [--color COLOR] [--instructions TEXT]
list --board BOARD
update --board BOARD [--name NAME] [--color COLOR] [--instructions TEXT] LABEL
remove --board BOARD LABEL
COLOR is a hex color such as #6558df (the default for new labels). LABEL is an
exact label ID or a unique name. Agents see a label's instructions on its cards.
dieter card (alias: cards)
Usage: dieter card <action>
Actions:
list Search board cards
show Show a card's metadata as JSON
context Print a card's task brief, project instructions, board and lane
transcript Read a card's conversation
poll Fetch one bounded conversation update
watch Stream conversation updates as JSON Lines
tool-output Fetch a full tool input/output payload
create Create a card (Todo draft or running)
start Start a Todo draft
send Send a message to a card; it queues behind a running turn
queue Manage messages waiting behind the running turn
cancel Cancel the running turn
move Move a card to another lane
labels Replace a card's board labels
present Show a file or URL in the conversation's workspace pane
read Mark a displayed model response as seen
rename Rename a card
update Update the title, or a draft's task brief and agent settings
fork Fork a finished conversation into a standalone chat
merge Queue an idle card's request in a started card and mark it Done
archive Archive a card
unarchive Restore an archived card
workspace Use the project directory or an isolated worktree
Messages sent with "card send" appear as the human's. Agents message each
other with "dieter channel post" when agent channels are on.
dieter card present
Usage: dieter card present (--path PATH [--line N] | --url URL) [--title TITLE] CARD
Request presentation in the exact conversation's native workspace pane.
Paths belong to its owning daemon/worktree (relative paths are recommended).
URLs must be HTTP(S). File size is limited to 5 MiB. This does not resume the
agent or guarantee that a connected client has displayed the request.
Returns the durable presentation ID and normalized target as JSON.
Global --machine selects the owning daemon through authenticated direct/relay routes.
dieter card create
Usage: dieter card create --project PROJECT --board BOARD (--title TITLE | --auto-title) --workspace project|worktree [options]
Options:
--checkout CHECKOUT Checkout on the target machine; required if it has several
--lane todo|running Todo creates a draft; Running starts immediately
--auto-title Save immediately; GPT Spark improves the title in the background
--prompt TEXT Initial task brief
--prompt-file FILE Read the task brief from FILE or -
--attach FILE Attach a file; repeat up to four times
--provider HARNESS Harness provider
--model MODEL Model for the first turn
--effort EFFORT Reasoning or thinking effort
--provider-option K=V Provider option; repeat as needed
--labels LABELS Comma-separated label IDs
--workspace MODE project or worktree
--branch BRANCH Optional worktree branch
--base-branch BRANCH Optional worktree base branch
--base-remote REMOTE Optional board/project remote override
--remote-publish MODE manual, pull_request, or push_base
--vault Let this conversation's agent turns use the account
vault (fixed at creation; see dieter vault --help)
--mail Let this conversation's agent turns send you mail
(fixed at creation; see dieter mail --help)
--format json|id Output format
Destination defaults to the running local daemon. Pass global --machine ID|NAME
before the command to create on another enrolled machine.
dieter card list
Usage: dieter card list [--project PROJECT] [--board BOARD] [--lane LANE] [--label LABEL] [--status STATUS] [--query TEXT] [--archived] [--limit N] [--format table|json|jsonl|ids]
dieter card show
Usage: dieter card show CARD
Show the conversation with its project and board as JSON, including cumulative
provider-reported tokenUsage.
dieter card context
Usage: dieter card context CARD
Print the title, task brief, lane, project instructions, board and workflow, and
cumulative provider-reported tokenUsage as compact JSON.
dieter card transcript
Usage: dieter card transcript [--last N] [--before INDEX] CARD
dieter card poll
Usage: dieter card poll [--last N] [--after-seq N] CARD
dieter card watch
Usage: dieter card watch [--last N] [--after-seq N] [--count N] CARD
An up-to-date --after-seq receives a current metadata acknowledgment without
resending unchanged messages; this initial frame counts toward --count.
Read subscriptions renew credentials and resume from their last delivered checkpoint
after transient failures (up to five retries between frames). Revocation stops
recovery. Mutations, process starts, and stdin writes are never replayed.
dieter card tool-output
Usage: dieter card tool-output --message MESSAGE --tool-call TOOL [--revision REVISION] CARD
dieter card fork
Usage: dieter card fork [--at MESSAGE_ID] [--title TITLE] [--format json|id] CARD
dieter card send
Usage: dieter card send [--message TEXT|--file FILE] [--attach FILE ...] [--provider P] [--model M] [--effort E] [--provider-option K=V] CARD
Send a message as the human. It starts a turn, or queues behind the running turn
with its model selection. Model, effort and mutable provider options apply to this
message where supported; the provider stays fixed after the first message. Use
--effort default to reset reasoning.
dieter card queue
Usage: dieter card queue <action>
Actions:
remove Remove a message that has not started yet
dieter card queue remove
Usage: dieter card queue remove --message MESSAGE_ID CARD
Removes a queued message and prints its complete content as JSON.
dieter card read
Usage: dieter card read --response-seq SEQ CARD
Mark the displayed model response as seen. Use responseSeq from show; a stale
receipt cannot clear a newer reply.
dieter card merge
Usage: dieter card merge --into TARGET CARD
Queue CARD's initial request and attachments in a started target on the same board. The source must be idle with an empty queue. Move it to Done and link it to TARGET. Retries are idempotent; conversations and workspaces are preserved.
dieter card move
Usage: dieter card move --lane todo|running|review|done [--after CARD] [--before CARD] [--revision REV] CARD
dieter card start
Usage: dieter card start CARD
dieter card labels
Usage: dieter card labels --set LABELS CARD
LABELS is a comma-separated list of board label IDs; empty clears labels.
dieter card cancel
Usage: dieter card cancel CARD
Requests cancellation and returns once the active turn has been signaled.
Queued messages start after that turn finishes cleanup.
dieter card rename
Usage: dieter card rename --title TITLE CARD
dieter card update
Usage: dieter card update [--title TITLE] [--prompt TEXT|--prompt-file FILE] [--provider P] [--model M] [--effort E] [--provider-option K=V] CARD
The task brief and agent settings are editable only before the first turn.
dieter card archive
Usage: dieter card archive CARD
dieter card unarchive
Usage: dieter card unarchive CARD
dieter card workspace
Usage: dieter card workspace --mode project|worktree [--branch BRANCH] [--base-branch BRANCH] [--base-remote REMOTE] [--remote-publish manual|pull_request|push_base] CARD
dieter chat (alias: chats)
Usage: dieter chat <action>
Actions:
create, list, show, context, transcript, poll, watch, tool-output, send,
queue, cancel, present, read, rename, update, fork, archive, unarchive,
workspace, pin, unpin
A standalone chat is a conversation without a board: it has no lanes or labels
and starts when created. Actions take the same options as their card versions
(see dieter chat ACTION --help).
dieter chat present
Usage: dieter chat present (--path PATH [--line N] | --url URL) [--title TITLE] CHAT
Request presentation in the exact conversation's native workspace pane.
Paths belong to its owning daemon/worktree (relative paths are recommended).
URLs must be HTTP(S). File size is limited to 5 MiB. This does not resume the
agent or guarantee that a connected client has displayed the request.
Returns the durable presentation ID and normalized target as JSON.
Global --machine selects the owning daemon through authenticated direct/relay routes.
dieter chat create
Usage: dieter chat create --project PROJECT (--title TITLE | --auto-title) --workspace project|worktree [options]
Options:
--checkout CHECKOUT Checkout on the target machine; required if it has several
--auto-title Save immediately; GPT Spark improves the title in the background
--prompt TEXT Initial task brief
--prompt-file FILE Read the task brief from FILE or -
--attach FILE Attach a file; repeat up to four times
--provider HARNESS Harness provider
--model MODEL Model for the first turn
--effort EFFORT Reasoning or thinking effort
--provider-option K=V Provider option; repeat as needed
--workspace MODE project or worktree
--branch BRANCH Optional worktree branch
--base-branch BRANCH Optional worktree base branch
--base-remote REMOTE Optional board/project remote override
--remote-publish MODE manual, pull_request, or push_base
--vault Let this conversation's agent turns use the account
vault (fixed at creation; see dieter vault --help)
--mail Let this conversation's agent turns send you mail
(fixed at creation; see dieter mail --help)
--format json|id Output format
Destination defaults to the running local daemon. Pass global --machine ID|NAME
before the command to create on another enrolled machine.
dieter chat list
Usage: dieter chat list [--project PROJECT] [--archived] [--format table|json|jsonl|ids]
dieter chat show
Usage: dieter chat show CHAT
Show the conversation with its project and board as JSON, including cumulative
provider-reported tokenUsage.
dieter chat context
Usage: dieter chat context CHAT
Print the title, task brief, lane, project instructions, board and workflow, and
cumulative provider-reported tokenUsage as compact JSON.
dieter chat transcript
Usage: dieter chat transcript [--last N] [--before INDEX] CHAT
dieter chat poll
Usage: dieter chat poll [--last N] [--after-seq N] CHAT
dieter chat watch
Usage: dieter chat watch [--last N] [--after-seq N] [--count N] CHAT
An up-to-date --after-seq receives a current metadata acknowledgment without
resending unchanged messages; this initial frame counts toward --count.
Read subscriptions renew credentials and resume from their last delivered checkpoint
after transient failures (up to five retries between frames). Revocation stops
recovery. Mutations, process starts, and stdin writes are never replayed.
dieter chat tool-output
Usage: dieter chat tool-output --message MESSAGE --tool-call TOOL [--revision REVISION] CHAT
dieter chat fork
Usage: dieter chat fork [--at MESSAGE_ID] [--title TITLE] [--format json|id] CHAT
dieter chat send
Usage: dieter chat send [--message TEXT|--file FILE] [--attach FILE ...] [--provider P] [--model M] [--effort E] [--provider-option K=V] CHAT
Send a message as the human. It starts a turn, or queues behind the running turn
with its model selection. Model, effort and mutable provider options apply to this
message where supported; the provider stays fixed after the first message. Use
--effort default to reset reasoning.
dieter chat queue
Usage: dieter chat queue <action>
Actions:
remove Remove a message that has not started yet
dieter chat queue remove
Usage: dieter chat queue remove --message MESSAGE_ID CHAT
Removes a queued message and prints its complete content as JSON.
dieter chat read
Usage: dieter chat read --response-seq SEQ CHAT
Mark the displayed model response as seen. Use responseSeq from show; a stale
receipt cannot clear a newer reply.
dieter chat cancel
Usage: dieter chat cancel CHAT
Requests cancellation and returns once the active turn has been signaled.
Queued messages start after that turn finishes cleanup.
dieter chat rename
Usage: dieter chat rename --title TITLE CHAT
dieter chat update
Usage: dieter chat update [--title TITLE] [--prompt TEXT|--prompt-file FILE] [--provider P] [--model M] [--effort E] [--provider-option K=V] CHAT
The task brief and agent settings are editable only before the first turn.
dieter chat archive
Usage: dieter chat archive CHAT
dieter chat unarchive
Usage: dieter chat unarchive CHAT
dieter chat workspace
Usage: dieter chat workspace --mode project|worktree [--branch BRANCH] [--base-branch BRANCH] [--base-remote REMOTE] [--remote-publish manual|pull_request|push_base] CHAT
dieter chat pin
Usage: dieter chat pin CHAT
dieter chat unpin
Usage: dieter chat unpin CHAT
dieter workspace (alias: workspaces, git)
Usage: dieter workspace <action>
Actions:
show CARD Provision and show a conversation workspace
list --project PROJECT List durable project workspaces
changes [target] Show local changes for a worktree card or project
diff [target] Read a staged, unstaged, or combined file diff
comments CARD List changeset review comments
comment [options] CARD Add a changeset review comment
scm CARD Show daemon-host source-control capabilities
operation OPERATION Show a durable Git operation
watch OPERATION Stream operation and log frames as JSON Lines
run --kind KIND [target] Start a serialized durable Git operation
cancel OPERATION Request cancellation of an operation
A target is --project PROJECT or a CARD. Run kinds for a project: stage,
unstage, discard_changes, commit, update, validate and push. A worktree card
also supports continue_conflict, abort_conflict, merge_local, cleanup, discard,
adopt, create_pr, refresh_pr and merge_pr. Commit uses the staged index; pass
--param stage_all=true only when explicitly committing every local change.
Repeat --param KEY=VALUE for kind-specific parameters.
dieter workspace show
Usage: dieter workspace show CARD
dieter workspace list
Usage: dieter workspace list --project PROJECT
dieter workspace changes
Usage: dieter workspace changes [--project PROJECT] [CARD]
dieter workspace diff
Usage: dieter workspace diff --path PATH [--project PROJECT] [--section combined|staged|unstaged] [--revision REVISION] [--commit SHA] [--offset N] [--limit N] [CARD]
dieter workspace comments
Usage: dieter workspace comments [--revision REVISION] CARD
dieter workspace comment
Usage: dieter workspace comment --path PATH --revision REVISION --message TEXT [--side new|old] [--line N] [--author NAME] [--commit SHA] CARD
dieter workspace scm
Usage: dieter workspace scm CARD
dieter workspace operation
Usage: dieter workspace operation OPERATION
dieter workspace watch
Usage: dieter workspace watch [--after SEQUENCE] [--count N] OPERATION
Read subscriptions renew credentials and resume from their last delivered checkpoint
after transient failures (up to five retries between frames). Revocation stops
recovery. Mutations, process starts, and stdin writes are never replayed.
dieter workspace run
Usage: dieter workspace run --kind KIND [--project PROJECT] [--revision REVISION] [--param KEY=VALUE ...] [--wait] [CARD]
dieter workspace cancel
Usage: dieter workspace cancel OPERATION
dieter file (alias: files)
Usage: dieter file <action>
Every action accepts either --project PROJECT or --card CARD. A card scope uses
that conversation's selected project directory or isolated worktree.
Actions:
cp SOURCE DESTINATION Copy binary files; remote: selects the daemon scope
sync SOURCE DESTINATION One-way directory sync with optional --delete
stat PATH Transfer metadata and optional checksum
scan PATH Bounded transfer directory page
upload ACTION Inspect, resume protocol, or abort an upload
list [PATH] List a directory
read PATH Read text or binary file content
save PATH Revision-checked update of an existing text file
create PATH Create a file or directory
move SOURCE DESTINATION Move or rename a file or directory
delete PATH Delete a file; directories require --recursive
dieter file list
Usage: dieter file list (--project PROJECT|--card CARD) [--checkout ID] [--hidden] [--format table|json|jsonl] [PATH]
dieter file read
Usage: dieter file read (--project PROJECT|--card CARD) [--checkout ID] [--output FILE|-] [--format content|json] PATH
dieter file save
Usage: dieter file save (--project PROJECT|--card CARD) [--checkout ID] (--content TEXT|--file FILE|--file -) [--revision REVISION|--revision auto] PATH
dieter file create
Usage: dieter file create (--project PROJECT|--card CARD) [--checkout ID] [--kind file|directory] [--content TEXT|--file FILE] PATH
dieter file move
Usage: dieter file move (--project PROJECT|--card CARD) [--checkout ID] SOURCE DESTINATION
dieter file delete
Usage: dieter file delete (--project PROJECT|--card CARD) [--checkout ID] [--recursive] PATH
dieter file cp
Usage: dieter file cp (--project PROJECT|--card CARD) [--checkout ID] [OPTIONS] SOURCE DESTINATION
Exactly one endpoint must start with remote:; other paths are on this CLI machine.
Remote paths are relative to the selected workspace. Directories copy their contents.
Options: --recursive (cp), --dryrun, --delete (sync only), --checksum, --size-only,
--no-clobber, ordered --exclude GLOB / --include GLOB, --concurrency N (1..8),
--bandwidth-limit BYTES_PER_SECOND, --no-progress, --format text|jsonl.
Sync compares size and modification time; --checksum compares SHA-256 instead.
Hidden files are included; .git and transfer partials are protected. Symlinks and
special files are unsupported. Empty directories are not copied. Delete runs only
after a complete successful scan and copy phase; excluded files are protected.
Rerun an interrupted command to resume. Uploads expire after 24 hours.
dieter file sync
Usage: dieter file sync (--project PROJECT|--card CARD) [--checkout ID] [OPTIONS] SOURCE DESTINATION
Exactly one endpoint must start with remote:; other paths are on this CLI machine.
Remote paths are relative to the selected workspace. Directories copy their contents.
Options: --recursive (cp), --dryrun, --delete (sync only), --checksum, --size-only,
--no-clobber, ordered --exclude GLOB / --include GLOB, --concurrency N (1..8),
--bandwidth-limit BYTES_PER_SECOND, --no-progress, --format text|jsonl.
Sync compares size and modification time; --checksum compares SHA-256 instead.
Hidden files are included; .git and transfer partials are protected. Symlinks and
special files are unsupported. Empty directories are not copied. Delete runs only
after a complete successful scan and copy phase; excluded files are protected.
Rerun an interrupted command to resume. Uploads expire after 24 hours.
dieter file stat
Usage: dieter file stat (--project PROJECT|--card CARD) [--checkout ID] [--checksum] PATH
dieter file scan (--project PROJECT|--card CARD) [--checkout ID] [--after NAME] [--revision REV] [--page-size N] PATH
dieter file upload <begin|chunk|show|commit|abort> [OPTIONS]
stat and scan emit protobuf JSON. scan returns a bounded directory page; carry
its revision and next name into the following request. Restart on conflict.
Upload protocol commands (JSON output):
begin (--project PROJECT|--card CARD) [--checkout ID] --operation ID
--revision REV|missing --size BYTES --sha256 HASH --modified-nanos NS
[--mode 420] PATH
chunk --offset BYTES --file FILE UPLOAD_ID
show UPLOAD_ID
commit UPLOAD_ID
abort UPLOAD_ID
Chunks are at most 1 MiB; offsets must be aligned except at the end of a file.
Replay uses identical input and operation ID. Commit is idempotent. Sessions
expire after 24 hours. Use cp/sync for automatic chunking, checksums and resume.
dieter file scan
Usage: dieter file stat (--project PROJECT|--card CARD) [--checkout ID] [--checksum] PATH
dieter file scan (--project PROJECT|--card CARD) [--checkout ID] [--after NAME] [--revision REV] [--page-size N] PATH
dieter file upload <begin|chunk|show|commit|abort> [OPTIONS]
stat and scan emit protobuf JSON. scan returns a bounded directory page; carry
its revision and next name into the following request. Restart on conflict.
Upload protocol commands (JSON output):
begin (--project PROJECT|--card CARD) [--checkout ID] --operation ID
--revision REV|missing --size BYTES --sha256 HASH --modified-nanos NS
[--mode 420] PATH
chunk --offset BYTES --file FILE UPLOAD_ID
show UPLOAD_ID
commit UPLOAD_ID
abort UPLOAD_ID
Chunks are at most 1 MiB; offsets must be aligned except at the end of a file.
Replay uses identical input and operation ID. Commit is idempotent. Sessions
expire after 24 hours. Use cp/sync for automatic chunking, checksums and resume.
dieter file upload
Usage: dieter file stat (--project PROJECT|--card CARD) [--checkout ID] [--checksum] PATH
dieter file scan (--project PROJECT|--card CARD) [--checkout ID] [--after NAME] [--revision REV] [--page-size N] PATH
dieter file upload <begin|chunk|show|commit|abort> [OPTIONS]
stat and scan emit protobuf JSON. scan returns a bounded directory page; carry
its revision and next name into the following request. Restart on conflict.
Upload protocol commands (JSON output):
begin (--project PROJECT|--card CARD) [--checkout ID] --operation ID
--revision REV|missing --size BYTES --sha256 HASH --modified-nanos NS
[--mode 420] PATH
chunk --offset BYTES --file FILE UPLOAD_ID
show UPLOAD_ID
commit UPLOAD_ID
abort UPLOAD_ID
Chunks are at most 1 MiB; offsets must be aligned except at the end of a file.
Replay uses identical input and operation ID. Commit is idempotent. Sessions
expire after 24 hours. Use cp/sync for automatic chunking, checksums and resume.
dieter terminal (alias: terminals)
Usage: dieter terminal <action>
Actions:
list [scope] List daemon-owned terminal sessions
create [scope] Create a PTY on the target daemon
attach TERMINAL Stream output and forward stdin until exit
watch TERMINAL Stream terminal frames as content or JSON Lines
write --data TEXT TERMINAL Write bytes to a running PTY
resize --columns N --rows N TERMINAL
rename --name NAME TERMINAL
close TERMINAL Stop and remove a terminal session
Create scope is exactly one of --project PROJECT, --card CARD, or --home.
--home starts in the target daemon user's home and works without a project.
dieter terminal list
Usage: dieter terminal list [--project PROJECT|--card CARD] [--format table|json|jsonl|ids]
dieter terminal create
Usage: dieter terminal create (--project PROJECT|--card CARD|--home) [--name NAME] [--shell PATH] [--directory PATH] [--columns N] [--rows N] [--format json|id]
dieter terminal attach
Usage: dieter terminal attach [--after SEQUENCE] [--no-input] TERMINAL
dieter terminal watch
Usage: dieter terminal watch [--after SEQUENCE] [--format content|jsonl] [--count N] TERMINAL
Read subscriptions renew credentials and resume from their last delivered checkpoint
after transient failures (up to five retries between frames). Revocation stops
recovery. Mutations, process starts, and stdin writes are never replayed.
dieter terminal write
Usage: dieter terminal write (--data TEXT|--file FILE|--file -) TERMINAL
dieter terminal resize
Usage: dieter terminal resize --columns N --rows N TERMINAL
dieter terminal rename
Usage: dieter terminal rename --name NAME TERMINAL
dieter terminal close
Usage: dieter terminal close TERMINAL
dieter remote
Usage: dieter remote <action>
Agent-oriented remote execution uses exact argv values, explicit exit status,
separate stdout/stderr, bounded resumable output, and optional PTY input. Every
action honors global --machine and uses verified direct TLS before relay.
Actions:
exec SCOPE -- COMMAND [ARG...] Run exact argv and wait for its exit
shell SCOPE Open and attach a native remote PTY shell
list [SCOPE] List retained executions
show EXECUTION Show execution state
watch EXECUTION Resume output from a sequence
wait EXECUTION Wait for exit and propagate its exit code
attach EXECUTION Watch output and forward stdin
input EXECUTION Write bounded stdin bytes or EOF
signal EXECUTION Send interrupt, terminate, kill, or hangup
resize EXECUTION Resize a PTY execution
cancel EXECUTION Gracefully terminate an execution
close EXECUTION Stop and remove an execution
SCOPE is exactly one of --project PROJECT or --card CARD. Use IDs rather than
names in automation. A disconnected watch never cancels the remote process.
Output subscriptions renew credentials and resume after transient failures, with
five retries between delivered frames. Recovery never repeats process starts or
stdin writes; revoked credentials stop recovery.
Use exec --card CARD --detach to register a background process in that
conversation's native Processes workspace tab. Its output remains available
after the agent turn or tab closes; only explicit stop/timeout/daemon shutdown
ends it. The harness start_background_process tool uses the same execution API.
dieter remote exec
Usage: dieter remote exec (--project PROJECT|--card CARD) [--checkout ID] [options] -- COMMAND [ARG...]
Options: --name NAME --directory PATH --env KEY=VALUE --input TEXT --input-file FILE|- --stdin --keep-input --timeout DURATION --idempotency-key KEY --pty --columns N --rows N --max-output BYTES --detach --format content|jsonl|json|id
dieter remote shell
Usage: dieter remote shell (--project PROJECT|--card CARD) [--checkout ID] [--name NAME] [--shell PATH] [--directory PATH] [--env KEY=VALUE] [--columns N] [--rows N] [--timeout DURATION] [--idempotency-key KEY] [--detach] [--format content|jsonl|json|id]
dieter remote list
Usage: dieter remote list [--project PROJECT|--card CARD] [--status STATUS] [--format table|json|jsonl|ids]
dieter remote show
Usage: dieter remote show EXECUTION
dieter remote watch
Usage: dieter remote watch [--after SEQUENCE] [--format content|jsonl] [--count N] EXECUTION
Read subscriptions renew credentials and resume from their last delivered checkpoint
after transient failures (up to five retries between frames). Revocation stops
recovery. Mutations, process starts, and stdin writes are never replayed.
dieter remote wait
Usage: dieter remote wait [--after SEQUENCE] [--format content|jsonl] EXECUTION
Read subscriptions renew credentials and resume from their last delivered checkpoint
after transient failures (up to five retries between frames). Revocation stops
recovery. Mutations, process starts, and stdin writes are never replayed.
dieter remote attach
Usage: dieter remote attach [--after SEQUENCE] [--format content|jsonl] EXECUTION
Read subscriptions renew credentials and resume from their last delivered checkpoint
after transient failures (up to five retries between frames). Revocation stops
recovery. Mutations, process starts, and stdin writes are never replayed.
dieter remote input
Usage: dieter remote input [--data TEXT|--file FILE|-] [--eof] EXECUTION
dieter remote signal
Usage: dieter remote signal --signal interrupt|terminate|kill|hangup EXECUTION
dieter remote resize
Usage: dieter remote resize --columns N --rows N EXECUTION
dieter remote cancel
Usage: dieter remote cancel EXECUTION
dieter remote close
Usage: dieter remote close EXECUTION
dieter screen (alias: screens)
Usage: dieter screen <action>
Actions:
capabilities Inspect displays, codecs, permissions, and readiness
permissions [--request-control] Probe capture and input permission through the daemon
start --request FILE Start WebRTC signaling; stream daemon signals as JSON Lines
signal --file FILE Send one trickle ICE/heartbeat signal to a session
sessions List viewers, controller, and capture resources
control take|release SESSION Transfer or release control
status SESSION Show current stream configuration and performance
configure SESSION [options] Change display, quality and stream ceilings live
virtual ACTION SESSION Experimental virtual desktop: status, set, presented, restore
resolution ACTION SESSION Experimental physical desktop modes: modes, set, restore
refresh SESSION Request a fresh keyframe, including an idle screen
clipboard ACTION SESSION Read, write, copy, paste, or toggle clipboard sharing
close SESSION Close a remote-desktop session
Hosting is automatically available when the required OS permissions are granted.
Use "dieter daemon permissions" on the host for guided setup; capabilities reports
ready, permission required, or unsupported. There is no enable/disable setting.
"start" accepts protobuf JSON from FILE or stdin (-). It can also consume
additional RemoteDesktopSignal JSON Lines from --signal-input FILE while the
daemon response stream remains open. Use "dieter machine rtc" to obtain signed
ICE configuration for remote sessions. Media and encrypted control travel over
the negotiated WebRTC connection, never through the CLI RPC transport.
Configure supports 1–120 fps; above 60 fps geometry is capped at 1920x1080.
Check capabilities.maxFps for older hosts. Motion trades pixels before cadence;
auto/detail preserve their cadence-first policy. All limits are adaptive.
dieter screen virtual
Usage: dieter screen virtual <status|set|presented|restore> SESSION [options]
Experimental macOS virtual desktop, owned by the controlling session.
Enable DIETER_SCREEN_VIRTUAL_DISPLAY=1 on the host before starting its daemon.
set requires --width PIXELS --height PIXELS [--scale 1|2] [--disable-physical].
Dimensions must fit H.264 3840x2160 or HEVC 1920x1080, with even logical pixels.
The actual host desktop changes. Only one controlling session can own it.
presented requires --display ID --generation N: send ONLY after rendering a frame
from that exact display/media generation. An unseen desktop restores after 15s.
Physical disabling additionally requires DIETER_SCREEN_VIRTUAL_DISABLE=1 and
hardware qualification; the physical main is disabled only after presentation.
restore re-enables physical output before removing the virtual display. Control
handoff, disconnect, helper failure, and local display changes also restore it.
Supports local, verified direct TLS, and gateway relay with --machine ID|NAME.
dieter screen virtual status
Usage: dieter screen virtual <status|set|presented|restore> SESSION [options]
Experimental macOS virtual desktop, owned by the controlling session.
Enable DIETER_SCREEN_VIRTUAL_DISPLAY=1 on the host before starting its daemon.
set requires --width PIXELS --height PIXELS [--scale 1|2] [--disable-physical].
Dimensions must fit H.264 3840x2160 or HEVC 1920x1080, with even logical pixels.
The actual host desktop changes. Only one controlling session can own it.
presented requires --display ID --generation N: send ONLY after rendering a frame
from that exact display/media generation. An unseen desktop restores after 15s.
Physical disabling additionally requires DIETER_SCREEN_VIRTUAL_DISABLE=1 and
hardware qualification; the physical main is disabled only after presentation.
restore re-enables physical output before removing the virtual display. Control
handoff, disconnect, helper failure, and local display changes also restore it.
Supports local, verified direct TLS, and gateway relay with --machine ID|NAME.
dieter screen virtual set
Usage: dieter screen virtual <status|set|presented|restore> SESSION [options]
Experimental macOS virtual desktop, owned by the controlling session.
Enable DIETER_SCREEN_VIRTUAL_DISPLAY=1 on the host before starting its daemon.
set requires --width PIXELS --height PIXELS [--scale 1|2] [--disable-physical].
Dimensions must fit H.264 3840x2160 or HEVC 1920x1080, with even logical pixels.
The actual host desktop changes. Only one controlling session can own it.
presented requires --display ID --generation N: send ONLY after rendering a frame
from that exact display/media generation. An unseen desktop restores after 15s.
Physical disabling additionally requires DIETER_SCREEN_VIRTUAL_DISABLE=1 and
hardware qualification; the physical main is disabled only after presentation.
restore re-enables physical output before removing the virtual display. Control
handoff, disconnect, helper failure, and local display changes also restore it.
Supports local, verified direct TLS, and gateway relay with --machine ID|NAME.
dieter screen virtual presented
Usage: dieter screen virtual <status|set|presented|restore> SESSION [options]
Experimental macOS virtual desktop, owned by the controlling session.
Enable DIETER_SCREEN_VIRTUAL_DISPLAY=1 on the host before starting its daemon.
set requires --width PIXELS --height PIXELS [--scale 1|2] [--disable-physical].
Dimensions must fit H.264 3840x2160 or HEVC 1920x1080, with even logical pixels.
The actual host desktop changes. Only one controlling session can own it.
presented requires --display ID --generation N: send ONLY after rendering a frame
from that exact display/media generation. An unseen desktop restores after 15s.
Physical disabling additionally requires DIETER_SCREEN_VIRTUAL_DISABLE=1 and
hardware qualification; the physical main is disabled only after presentation.
restore re-enables physical output before removing the virtual display. Control
handoff, disconnect, helper failure, and local display changes also restore it.
Supports local, verified direct TLS, and gateway relay with --machine ID|NAME.
dieter screen virtual restore
Usage: dieter screen virtual <status|set|presented|restore> SESSION [options]
Experimental macOS virtual desktop, owned by the controlling session.
Enable DIETER_SCREEN_VIRTUAL_DISPLAY=1 on the host before starting its daemon.
set requires --width PIXELS --height PIXELS [--scale 1|2] [--disable-physical].
Dimensions must fit H.264 3840x2160 or HEVC 1920x1080, with even logical pixels.
The actual host desktop changes. Only one controlling session can own it.
presented requires --display ID --generation N: send ONLY after rendering a frame
from that exact display/media generation. An unseen desktop restores after 15s.
Physical disabling additionally requires DIETER_SCREEN_VIRTUAL_DISABLE=1 and
hardware qualification; the physical main is disabled only after presentation.
restore re-enables physical output before removing the virtual display. Control
handoff, disconnect, helper failure, and local display changes also restore it.
Supports local, verified direct TLS, and gateway relay with --machine ID|NAME.
dieter screen resolution
Usage: dieter screen resolution <modes|set|restore> SESSION [options]
Experimental physical desktop resolution, independent of video stream ceilings.
"modes" lists the selected display's supported modes and current mode ID.
"set" requires --display ID --mode ID --expected-current ID from a fresh modes
response. It requires the controlling session and temporarily changes the actual
remote monitor for everyone using it. "restore" restores the leased original mode.
Control handoff, display selection, session closure, and helper exit also restore
the mode. A later local display change takes precedence. Supports --machine ID|NAME.
dieter screen resolution modes
Usage: dieter screen resolution modes SESSION
List the selected display's supported modes and its current mode ID.
dieter screen resolution set
Usage: dieter screen resolution set SESSION --display ID --mode ID --expected-current ID
Change the physical monitor's mode for everyone using it; IDs come from a fresh
modes response. Requires the controlling session.
dieter screen resolution restore
Usage: dieter screen resolution restore SESSION
Restore the leased original mode.
dieter screen clipboard
Usage: dieter screen clipboard read|write|paste|copy|cut|enable|disable SESSION [options]
Share text, images and regular files with an existing controlling screen session.
write updates the host clipboard; paste also invokes the native paste shortcut
once. copy/cut invoke the host shortcut and return the copied content. read returns
protobuf JSON (binary data is base64). enable/disable controls session sharing.
write/paste require exactly one format:
--file FILE|- UTF-8 text, at most 1 MiB (use - for stdin)
--image FILE PNG, JPEG, TIFF or WebP, at most 8 MiB
--attach FILE Regular file; repeat for up to 64 files, 8 MiB combined
read/copy/cut optionally accept:
--output-dir DIR Save binary items under a new private directory; never overwrite
Folders, links and duplicate filenames are rejected. Temporary native clipboard
files use DIETER_HOME/clipboard; the next transfer prunes old (24h) batches
and retains at most eight batches.
Mutations are never automatically retried. Supports global --machine ID|NAME
with direct TLS and relay fallback. Binary sharing requires an updated daemon.
dieter screen clipboard read
Usage: dieter screen clipboard read|write|paste|copy|cut|enable|disable SESSION [options]
Share text, images and regular files with an existing controlling screen session.
write updates the host clipboard; paste also invokes the native paste shortcut
once. copy/cut invoke the host shortcut and return the copied content. read returns
protobuf JSON (binary data is base64). enable/disable controls session sharing.
write/paste require exactly one format:
--file FILE|- UTF-8 text, at most 1 MiB (use - for stdin)
--image FILE PNG, JPEG, TIFF or WebP, at most 8 MiB
--attach FILE Regular file; repeat for up to 64 files, 8 MiB combined
read/copy/cut optionally accept:
--output-dir DIR Save binary items under a new private directory; never overwrite
Folders, links and duplicate filenames are rejected. Temporary native clipboard
files use DIETER_HOME/clipboard; the next transfer prunes old (24h) batches
and retains at most eight batches.
Mutations are never automatically retried. Supports global --machine ID|NAME
with direct TLS and relay fallback. Binary sharing requires an updated daemon.
dieter screen clipboard write
Usage: dieter screen clipboard read|write|paste|copy|cut|enable|disable SESSION [options]
Share text, images and regular files with an existing controlling screen session.
write updates the host clipboard; paste also invokes the native paste shortcut
once. copy/cut invoke the host shortcut and return the copied content. read returns
protobuf JSON (binary data is base64). enable/disable controls session sharing.
write/paste require exactly one format:
--file FILE|- UTF-8 text, at most 1 MiB (use - for stdin)
--image FILE PNG, JPEG, TIFF or WebP, at most 8 MiB
--attach FILE Regular file; repeat for up to 64 files, 8 MiB combined
read/copy/cut optionally accept:
--output-dir DIR Save binary items under a new private directory; never overwrite
Folders, links and duplicate filenames are rejected. Temporary native clipboard
files use DIETER_HOME/clipboard; the next transfer prunes old (24h) batches
and retains at most eight batches.
Mutations are never automatically retried. Supports global --machine ID|NAME
with direct TLS and relay fallback. Binary sharing requires an updated daemon.
dieter screen clipboard paste
Usage: dieter screen clipboard read|write|paste|copy|cut|enable|disable SESSION [options]
Share text, images and regular files with an existing controlling screen session.
write updates the host clipboard; paste also invokes the native paste shortcut
once. copy/cut invoke the host shortcut and return the copied content. read returns
protobuf JSON (binary data is base64). enable/disable controls session sharing.
write/paste require exactly one format:
--file FILE|- UTF-8 text, at most 1 MiB (use - for stdin)
--image FILE PNG, JPEG, TIFF or WebP, at most 8 MiB
--attach FILE Regular file; repeat for up to 64 files, 8 MiB combined
read/copy/cut optionally accept:
--output-dir DIR Save binary items under a new private directory; never overwrite
Folders, links and duplicate filenames are rejected. Temporary native clipboard
files use DIETER_HOME/clipboard; the next transfer prunes old (24h) batches
and retains at most eight batches.
Mutations are never automatically retried. Supports global --machine ID|NAME
with direct TLS and relay fallback. Binary sharing requires an updated daemon.
dieter screen clipboard copy
Usage: dieter screen clipboard read|write|paste|copy|cut|enable|disable SESSION [options]
Share text, images and regular files with an existing controlling screen session.
write updates the host clipboard; paste also invokes the native paste shortcut
once. copy/cut invoke the host shortcut and return the copied content. read returns
protobuf JSON (binary data is base64). enable/disable controls session sharing.
write/paste require exactly one format:
--file FILE|- UTF-8 text, at most 1 MiB (use - for stdin)
--image FILE PNG, JPEG, TIFF or WebP, at most 8 MiB
--attach FILE Regular file; repeat for up to 64 files, 8 MiB combined
read/copy/cut optionally accept:
--output-dir DIR Save binary items under a new private directory; never overwrite
Folders, links and duplicate filenames are rejected. Temporary native clipboard
files use DIETER_HOME/clipboard; the next transfer prunes old (24h) batches
and retains at most eight batches.
Mutations are never automatically retried. Supports global --machine ID|NAME
with direct TLS and relay fallback. Binary sharing requires an updated daemon.
dieter screen clipboard cut
Usage: dieter screen clipboard read|write|paste|copy|cut|enable|disable SESSION [options]
Share text, images and regular files with an existing controlling screen session.
write updates the host clipboard; paste also invokes the native paste shortcut
once. copy/cut invoke the host shortcut and return the copied content. read returns
protobuf JSON (binary data is base64). enable/disable controls session sharing.
write/paste require exactly one format:
--file FILE|- UTF-8 text, at most 1 MiB (use - for stdin)
--image FILE PNG, JPEG, TIFF or WebP, at most 8 MiB
--attach FILE Regular file; repeat for up to 64 files, 8 MiB combined
read/copy/cut optionally accept:
--output-dir DIR Save binary items under a new private directory; never overwrite
Folders, links and duplicate filenames are rejected. Temporary native clipboard
files use DIETER_HOME/clipboard; the next transfer prunes old (24h) batches
and retains at most eight batches.
Mutations are never automatically retried. Supports global --machine ID|NAME
with direct TLS and relay fallback. Binary sharing requires an updated daemon.
dieter screen clipboard enable
Usage: dieter screen clipboard read|write|paste|copy|cut|enable|disable SESSION [options]
Share text, images and regular files with an existing controlling screen session.
write updates the host clipboard; paste also invokes the native paste shortcut
once. copy/cut invoke the host shortcut and return the copied content. read returns
protobuf JSON (binary data is base64). enable/disable controls session sharing.
write/paste require exactly one format:
--file FILE|- UTF-8 text, at most 1 MiB (use - for stdin)
--image FILE PNG, JPEG, TIFF or WebP, at most 8 MiB
--attach FILE Regular file; repeat for up to 64 files, 8 MiB combined
read/copy/cut optionally accept:
--output-dir DIR Save binary items under a new private directory; never overwrite
Folders, links and duplicate filenames are rejected. Temporary native clipboard
files use DIETER_HOME/clipboard; the next transfer prunes old (24h) batches
and retains at most eight batches.
Mutations are never automatically retried. Supports global --machine ID|NAME
with direct TLS and relay fallback. Binary sharing requires an updated daemon.
dieter screen clipboard disable
Usage: dieter screen clipboard read|write|paste|copy|cut|enable|disable SESSION [options]
Share text, images and regular files with an existing controlling screen session.
write updates the host clipboard; paste also invokes the native paste shortcut
once. copy/cut invoke the host shortcut and return the copied content. read returns
protobuf JSON (binary data is base64). enable/disable controls session sharing.
write/paste require exactly one format:
--file FILE|- UTF-8 text, at most 1 MiB (use - for stdin)
--image FILE PNG, JPEG, TIFF or WebP, at most 8 MiB
--attach FILE Regular file; repeat for up to 64 files, 8 MiB combined
read/copy/cut optionally accept:
--output-dir DIR Save binary items under a new private directory; never overwrite
Folders, links and duplicate filenames are rejected. Temporary native clipboard
files use DIETER_HOME/clipboard; the next transfer prunes old (24h) batches
and retains at most eight batches.
Mutations are never automatically retried. Supports global --machine ID|NAME
with direct TLS and relay fallback. Binary sharing requires an updated daemon.
dieter screen sessions
Usage: dieter screen sessions
List the connected viewers, active controller, four-client limit, shared capture
streams, and hardware encoders as JSON. Supports --machine ID|NAME.
dieter screen control
Usage: dieter screen control take|release SESSION
Give a connected control-capable client exclusive keyboard/mouse control, or
release its current grant. Taking control first releases the previous client's
held input. Viewers keep streaming. Control handoff uses revocable grants.
Prints session state as JSON. Supports --machine ID|NAME.
dieter screen control take
Usage: dieter screen control take|release SESSION
Give a connected control-capable client exclusive keyboard/mouse control, or
release its current grant. Taking control first releases the previous client's
held input. Viewers keep streaming. Control handoff uses revocable grants.
Prints session state as JSON. Supports --machine ID|NAME.
dieter screen control release
Usage: dieter screen control take|release SESSION
Give a connected control-capable client exclusive keyboard/mouse control, or
release its current grant. Taking control first releases the previous client's
held input. Viewers keep streaming. Control handoff uses revocable grants.
Prints session state as JSON. Supports --machine ID|NAME.
dieter screen capabilities
Usage: dieter screen capabilities
dieter screen permissions
Usage: dieter screen permissions [--request-control]
Ask the running daemon to discard one captured frame and check event-posting
permission. Prints the daemon/helper paths and both results as JSON. Does not
inject input or change settings. --request-control explicitly allows a macOS
Accessibility prompt or verifies the Linux XTest/RemoteDesktop portal path on
the daemon host. A Linux portal prompt can remain open for up to two minutes.
Supports --machine ID|NAME.
dieter screen start
Usage: dieter screen start --request FILE|- [--signal-input FILE|-] [--count N] [--codec auto|h264|hevc] [--reference-recovery]
HEVC requires a compatible signed H265 offer and hardware at up to 1080p60; codec changes require a new session.
Reference recovery requires the generic RTP frame descriptor and acknowledgements after decoder completion. Omitted flags preserve request JSON.
dieter screen signal
Usage: dieter screen signal --file FILE|-
dieter screen close
Usage: dieter screen close SESSION
dieter screen status
Usage: dieter screen status SESSION
JSON includes paced sendMs, approximate captureToSendMs, receiver jitterBufferMs and renderMs; queueMs measures socket work only. Stages overlap and are not a glass-to-glass total.
renderMeasurement distinguishes Metal presentation from Android EGL submission. Optional decoder/encoder diagnostics report accepted configuration, not measured latency gains. mediaRtpBytes, repairRtpBytes, probeRtpBytes and fecRtpBytes exclude transport overhead. recoveryDiagnostics reports bounded packet history and repair decisions.
dieter screen configure
Usage: dieter screen configure SESSION [--display ID] [--quality auto|detail|motion] [--width N] [--height N] [--fps N] [--bitrate N] [--embedded-cursor=true|false]
Ceilings are adaptive; unspecified values retain the current session configuration.
dieter screen refresh
Usage: dieter screen refresh SESSION
dieter schedule (alias: schedules)
Usage: dieter schedule <action>
Actions:
create Create a recurring project schedule
list List one bounded page of schedules
show SCHEDULE Show a schedule and recent occurrences
preview Preview cron occurrence times
update SCHEDULE Replace a schedule definition
run SCHEDULE Dispatch one manual occurrence
pause SCHEDULE Disable automatic occurrences
resume SCHEDULE Enable automatic occurrences
runs SCHEDULE List one bounded page of occurrence history
delete SCHEDULE Delete the definition; cards and history remain
dieter schedule create
Usage: dieter schedule create --project PROJECT --board BOARD --name NAME --cron EXPRESSION --title TITLE --prompt TEXT [options]
Options:
--timezone AREA/LOCATION IANA timezone (default UTC)
--action draft|run Create a draft or immediately run it
--workspace project|worktree Conversation workspace selection
--labels ID,ID Board-label IDs
--provider HARNESS --model MODEL --effort EFFORT
--provider-option KEY=VALUE Repeatable harness option
--enabled=true|false
--open-card skip_if_open|always
--vault=true|false Cards it creates may use the account vault
--mail=true|false Cards it creates may send you mail (dieter mail --help)
dieter schedule list
Usage: dieter schedule list [--project PROJECT] [--page-size N] [--page-token TOKEN] [--format table|json|jsonl|ids]
dieter schedule show
Usage: dieter schedule show [--runs N] SCHEDULE
dieter schedule preview
Usage: dieter schedule preview --cron EXPRESSION [--timezone AREA/LOCATION] [--count N]
dieter schedule update
Usage: dieter schedule update --project PROJECT --board BOARD --name NAME --cron EXPRESSION --title TITLE --prompt TEXT [options] SCHEDULE
Options:
--timezone AREA/LOCATION IANA timezone (default UTC)
--action draft|run Create a draft or immediately run it
--workspace project|worktree Conversation workspace selection
--labels ID,ID Board-label IDs
--provider HARNESS --model MODEL --effort EFFORT
--provider-option KEY=VALUE Repeatable harness option
--enabled=true|false
--open-card skip_if_open|always
--vault=true|false Cards it creates may use the account vault
--mail=true|false Cards it creates may send you mail (dieter mail --help)
dieter schedule run
Usage: dieter schedule run SCHEDULE
dieter schedule pause
Usage: dieter schedule pause SCHEDULE
dieter schedule resume
Usage: dieter schedule resume SCHEDULE
dieter schedule runs
Usage: dieter schedule runs [--page-size N] [--page-token TOKEN] SCHEDULE
dieter schedule delete
Usage: dieter schedule delete SCHEDULE
dieter kv
Usage: dieter kv <get|list|put|delete|move|watch> [options]
Account-scoped portable JSON state replicated between daemons. Writes acknowledge
local durability, not a quorum. Revisions are local compare-and-set checks.
Use global --machine ID|NAME for verified TLS, WebRTC, or relay targeting.
get Read a key, its deterministic value and all causal siblings
list Read a bounded snapshot page including tombstones
put Write JSON with an observed revision (empty means create only)
delete Persist a causal tombstone
move Position one ordered key using stable neighboring keys
watch Stream bounded changes; apply reset before replacement snapshots
dieter kv get
Usage: dieter kv get --namespace NS --key KEY [--account ID]
Read the selected value and all causal siblings.
dieter kv list
Usage: dieter kv list [--namespace NS] [--prefix PREFIX] [--after KEY --epoch EPOCH --sequence N]
Read up to 64 entries. Pass nextKey and cursor for subsequent pages.
dieter kv put
Usage: dieter kv put --namespace NS --key KEY --file FILE [--revision REV] [--operation ID]
Write JSON (maximum 32 KiB). Read all siblings before resolving conflicts.
Pass --account ID --daemon ID to pin an uncertain retry, and retry identical
input and --operation only on that same daemon.
dieter kv delete
Usage: dieter kv delete --namespace NS --key KEY --revision REV [--operation ID]
Retain a tombstone; deleting does not remove causal history.
Pass --account ID --daemon ID to pin an uncertain retry, and retry identical
input and --operation only on that same daemon.
dieter kv move
Usage: dieter kv move --namespace NS --key KEY [--parent ID] [--after KEY] [--before KEY] [--revision REV] [--operation ID]
Write an atomic parent/rank position. Empty neighbors append to this list.
Pass --account ID --daemon ID to pin an uncertain retry, and retry identical
input and --operation only on that same daemon.
dieter kv watch
Usage: dieter kv watch [--namespace NS] [--prefix PREFIX] [--epoch EPOCH --sequence N] [--count N]
Watch until canceled or count frames. Reset replaces the cache; publish at caughtUp.
dieter channel (alias: channels)
Usage: dieter channel <list|messages|post|inbox|check|claims|release|pin|read|settings|watch|hook> [options]
Agent channels (experimental): one message channel per project, shared by
every machine of the account, with direct messages to cards, threads, pinned
decisions and file claims that keep agents sharing a checkout from overwriting
each other. A channel post interrupts nobody: agents read it when their next
turn starts. A direct message (--to) reaches a running agent in its turn, and
a person's --here reaches every running agent. Inside an agent turn
(DIETER_TURN_TOKEN) the caller is that card's agent; otherwise you act as a
person. Channels are off until switched on with "channel settings".
list List project channels with unread counts and members on every machine
messages Page a project channel or one thread
post Post to the project channel, a thread, or directly to cards
inbox Read a card's undelivered messages (an agent's own by default)
check Show who else is changing files, pinned decisions and recent notes
claims List live file claims
release Release a card's file claims
pin Pin a message as a decision, or remove the pin with --off
read Mark a project channel read for humans
settings Show or change the experimental switch (global, project, board)
watch Stream a project channel as JSON Lines
hook Harness hook adapter: reads hook JSON on stdin, prints the decision
dieter channel list
Usage: dieter channel list [--format table|json]
List project channels: enabled state, unread count, live claims and members on every machine.
dieter channel messages
Usage: dieter channel messages --project PROJECT [--thread ID] [--after SEQ] [--before SEQ] [--limit N] [--format table|json]
Page a project channel in sequence order (default: the newest 50 messages).
dieter channel post
Usage: dieter channel post [--project PROJECT] [--to CARD]... [--here] [--thread ID] [--kind note|request|done|decision] [--file PATH]... [--wake] [--operation ID] [--stdin] TEXT...
Post at most 4096 bytes to the project channel. Agents post to their own project. A post without
--to interrupts nobody; agents read it when their next turn starts. --to sends a direct message
that reaches a running recipient in its turn, and --wake also starts idle direct recipients
within their wake budget. --here (people only) reaches every running agent of the project.
A decision is pinned.
dieter channel inbox
Usage: dieter channel inbox [--card CARD] [--peek] [--format text|json]
Print a card's undelivered messages (direct messages, and channel posts from the last 24 hours)
and mark them delivered (--peek keeps them). Agents read their own inbox; humans name --card.
Only the card's machine marks them; elsewhere, add --peek or --machine.
dieter channel check
Usage: dieter channel check [--card CARD] [--intent TEXT] [--format text|json] FILE...
Show live claims by other cards on FILEs (relative to the card's workspace), pinned decisions
and recent notes that mention them. An agent whose files are held is woken when they are free.
Claims in other machines' checkouts are listed as advisory: coordinate before you push.
dieter channel claims
Usage: dieter channel claims [--project PROJECT] [--format table|json]
List live file claims: path, holder card, since when, waiting cards and the machine.
Claims on other machines are advisory; they never block a write here.
dieter channel release
Usage: dieter channel release [--card CARD] [PATH...]
Release a card's claims (all without PATHs). Agents release their own; humans name --card.
dieter channel pin
Usage: dieter channel pin --project PROJECT [--off] MESSAGE_ID
Pin a message as a decision that check returns for the files it mentions, or unpin it.
dieter channel read
Usage: dieter channel read --project PROJECT [--seq N]
Mark the project channel read for humans up to N (default: the newest message).
dieter channel settings
Usage: dieter channel settings [--global on|off | --project PROJECT --set on|off|inherit | --board BOARD --set on|off|inherit]
Show or change the replicated experimental switch. A board overrides its project, a project
overrides the global switch. Agents cannot change settings.
dieter channel watch
Usage: dieter channel watch --project PROJECT [--after SEQ] [--count N]
Stream the project channel as JSON Lines: a reset frame with the newest page, then new and
changed messages, claims and the summary.
Read subscriptions renew credentials and resume from their last delivered checkpoint
after transient failures (up to five retries between frames). Revocation stops
recovery. Mutations, process starts, and stdin writes are never replayed.
dieter channel hook
Usage: dieter channel hook
Harness hook adapter for agent channel file claims. Reads one hook JSON object (Claude Code or
Codex PreToolUse format, at most 1 MiB) on stdin, prints the hook decision and exits 0.
Prints nothing (no opinion) outside an agent turn or when the daemon is unavailable.
dieter mail
Usage: dieter mail <send|list|show|mark|delete> [options]
Dieter Mail: one-way Markdown reports for you. Messages stay on the machine
that received them, with their read, flag and folder state (Inbox, Archive,
Trash; the Trash empties after 30 days), and every client shows them in Mail.
There is no reply: mail never reaches an agent.
Inside an agent turn (DIETER_TURN_TOKEN) the caller is that conversation's
agent. It may only send, and only when its card, chat or schedule was created
with --mail. Anyone else is the operator: scripts and jobs send with an
optional --from label, and people read and organize the mailbox.
send Send a Markdown report
list List messages, newest first
show Print one message with its Markdown body
mark Mark messages read or unread, flag them, or move them to a folder
delete Delete messages for good, or empty the Trash
dieter mail send
Usage: dieter mail send --subject TEXT (--body TEXT | --body-file PATH|-) [options]
Send a Markdown report to Dieter Mail on the target machine.
Options:
--subject TEXT One line, at most 200 characters
--body TEXT The Markdown body
--body-file PATH|- Read the body from PATH or stdin
--important Mark a failure or finding that needs action
--operation-id ID Retry key (at most 128 characters): a repeated send
returns the original message instead of a duplicate
--from LABEL Operators only: who is sending, e.g. backup.sh
(at most 64 characters)
--format text|json|id Output format (default text)
The body is GitHub-flavored Markdown of at most 128 KiB and 4,000 lines (each
at most 8 KiB): headings, emphasis, inline code, links, lists, task lists,
quotes, rules, fenced code and tables. macOS, Android and iOS render mermaid,
vega-lite (or vegalite) and vega fences offline. Charts require inline JSON data;
external datasets and resource loads are blocked. Invalid or unsupported blocks
keep readable source. Raw HTML shows as text and images as links, never loaded.
Agent turns may send only when their conversation has mail access, at
most 10 messages per turn and 50 per conversation in any 24 hours.
dieter mail list
Usage: dieter mail list [--folder inbox|archive|trash|all] [--unread] [--flagged] [--limit N] [--before ID] [--format table|json]
List the target machine's mail, newest first: the Inbox unless --folder names
another folder or all of them, at most --limit messages (default 50, at most
500). --before continues after a message ID. MARK shows ● unread, ⚑ flagged
and ! important.
dieter mail show
Usage: dieter mail show [--raw] [--format text|json] ID
Print one message: its header, then its Markdown body. --raw prints only the
body. Showing a message does not mark it read; run dieter mail mark ID --read.
dieter mail mark
Usage: dieter mail mark [--read|--unread] [--flag|--unflag] [--folder inbox|archive|trash] [--format table|json] ID...
Change the state of up to 500 messages: read or unread, flagged or not, and
the folder. Combine the changes as needed; at least one is required. Move a
message to the Trash with --folder trash, and back with --folder inbox.
dieter mail delete
Usage: dieter mail delete (ID... | --empty-trash) [--format text|json]
Delete up to 500 messages for good, or every message in the Trash. To keep a
way back, move messages to the Trash instead: dieter mail mark ID --folder
trash. The Trash empties itself after 30 days.
dieter vault
Usage: dieter vault <action> [options]
An account-wide password and TOTP vault shared by your machines. Items
replicate end-to-end encrypted, and every route to a machine is TLS between
your devices, so the gateway relays only ciphertext. Each machine joins once.
Setup and machines:
status Show vault state, members and this caller's access
init Create the vault on the first machine; prints a recovery key
join Join from another machine (approval code or recovery key)
approve Approve a joining machine after comparing its code
remove-member Revoke a machine and rotate to a new key
rotate Rotate the vault key; --recovery-key replaces the recovery key
Items:
list List items (no secrets)
show Show one item's metadata
add Add an item with name, URLs, username, password, TOTP, notes
edit Change fields of an item
remove Delete an item
get Print one field; secret fields require --reveal
totp Print the current TOTP code
exec Run a command with item fields in its environment
audit Show this machine's vault access log
ITEM is an exact vi_ ID or a unique case-insensitive name. Secrets are never
accepted as command-line arguments: use --password-file -, --prompt or
--generate. Agent turns may use the vault only when their card, chat or
schedule was created with --vault; agents cannot change membership or keys.
Prefer exec over get so secrets do not enter transcripts.
dieter vault status
Usage: dieter vault status [--format table|json]
Show vault state, machine members, pending join codes and this caller's access.
dieter vault members
Usage: dieter vault status [--format table|json]
Show vault state, machine members, pending join codes and this caller's access.
dieter vault init
Usage: dieter vault init [--name NAME] [--format text|json]
Create the account vault with this machine as its first member. The printed
recovery key is shown once and never stored: keep it offline. It unlocks the
vault on any machine with dieter vault join --recovery-key-stdin.
dieter vault join
Usage: dieter vault join [--name NAME] [--recovery-key-stdin] [--format text|json]
Without a recovery key, publish this machine's vault key and print a join code.
On an existing member, compare that code and run:
dieter vault approve MEMBER --code CODE
The code is derived from both machines' views, so a relay that substitutes keys
produces a different code. With --recovery-key-stdin, read the recovery key
from stdin and unlock immediately.
dieter vault approve
Usage: dieter vault approve MEMBER --code CODE
Approve a pending machine. Compare CODE with the code its dieter vault join printed;
dieter vault status lists pending members with the code this machine expects.
dieter vault remove-member
Usage: dieter vault remove-member MEMBER
Revoke a machine and rotate to a key it never receives. It keeps anything it
already decrypted: change those passwords. Unenroll a lost machine too.
dieter vault rotate
Usage: dieter vault rotate [--recovery-key]
Create a new vault key, reseal it to every member and re-encrypt all items.
--recovery-key also replaces the recovery key and prints the new one once.
dieter vault list
Usage: dieter vault list [--query TEXT] [--url URL] [--format table|json|jsonl|ids]
List item metadata. --url matches items for that host and its subdomains.
dieter vault show
Usage: dieter vault show ITEM
Print item metadata as JSON. Secret values are never included.
dieter vault add
Usage: dieter vault add --name NAME [--url URL]... [--username USER] [options]
Add an item. Secrets are read from files, stdin or a no-echo prompt.
Options:
--name NAME Unique item name
--url URL Login URL; repeat for several
--username USER Account user name or email
--password-file FILE|- Read the password from FILE or stdin
--generate Generate the password on the daemon; it is not printed
--length N Generated length (default 24)
--no-symbols Generate letters and digits only
--totp-file FILE|- Read an otpauth://totp URI or base32 TOTP secret
--notes-file FILE|- Read notes
--prompt Prompt for password and TOTP without echo (terminal)
--format json|id Output format
Example:
printf '%s' "$PASSWORD" | dieter vault add --name GitHub --url https://github.com/login --username me --password-file -
dieter vault edit
Usage: dieter vault edit ITEM [options]
Change item fields. Unspecified fields keep their value. Editing an item with
a conflict keeps the shown version and resolves the conflict.
Options:
--name NAME Rename
--url URL Add a URL; repeat for several
--replace-urls Replace all URLs with the given --url values
--username USER Set the user name
--clear-totp Remove the TOTP secret
--clear-notes Remove notes
--password-file FILE|- Read the password from FILE or stdin
--generate Generate the password on the daemon; it is not printed
--length N Generated length (default 24)
--no-symbols Generate letters and digits only
--totp-file FILE|- Read an otpauth://totp URI or base32 TOTP secret
--notes-file FILE|- Read notes
--prompt Prompt for password and TOTP without echo (terminal)
dieter vault remove
Usage: dieter vault remove ITEM
Delete an item on every member machine.
dieter vault get
Usage: dieter vault get ITEM [--field FIELD]... [--reveal] [--format value|json]
Print item fields: password (default), username, url, name, totp or notes.
password, totp and notes require --reveal. One field prints its raw value;
several print JSON. Prefer dieter vault exec so secrets stay out of output.
dieter vault totp
Usage: dieter vault totp ITEM [--no-wait] [--format value|json]
Print the current TOTP code. With fewer than 5 seconds left, wait for the next
code unless --no-wait is set.
dieter vault exec
Usage: dieter vault exec ITEM --env NAME=FIELD... -- COMMAND [ARG...]
Run COMMAND locally with item fields in its environment. FIELD is password,
username, url, name, totp or notes. Arguments run without a shell; wrap in
sh -c only when needed. stdin, stdout and stderr pass through and the exit
status is preserved. Secrets are not printed.
Example:
dieter vault exec GitHub --env GH_USER=username --env GH_PASS=password -- ./login.sh
dieter vault audit
Usage: dieter vault audit [--item ITEM] [--card CARD] [--limit N] [--format table|jsonl]
Show this machine's vault access log, newest first. It never contains secret values.
dieter device (alias: devices)
Usage: dieter device <action> [options]
The account's devices: a signed, append-only roster of device keys that every
machine and app verifies itself. Remote calls run mutually authenticated TLS
between roster devices, so the gateway relays bytes but can neither read them,
impersonate a device, nor add one. A new device shows a one-time code; type
that code on a trusted device to approve it. Never share a code you did not
just see on your own new device.
Actions:
status Show trust state, roster head, pairing code and devices
roster List the verified roster entries
sync Refresh the roster from the gateway; offer ours with --machine
init Start the account's roster on this machine; prints a recovery key
requests List devices waiting for approval (names only, never codes)
approve Approve the device that shows CODE
revoke Remove a device from the roster
recover Rejoin this machine with the recovery key
status, roster, sync, requests, approve and revoke accept --machine ID|NAME.
init and recover run only on the machine itself. Agent turns cannot change
device trust.
dieter device status
Usage: dieter device status [--format text|json]
Show the target machine's device trust: its state (NO_ROSTER, PENDING,
TRUSTED, REVOKED or CONFLICT), the pinned roster's root and head, the
devices of the account, and, while PENDING, the one-time code to type on a
trusted device.
dieter device roster
Usage: dieter device roster [--from SEQUENCE] [--format text|json]
List the entries of the target machine's verified device roster from
SEQUENCE: who added or removed which device, signed by which member.
dieter device sync
Usage: dieter device sync [--format text|json]
Refresh the target machine's roster from the gateway. With --machine, also
offer this machine's pinned roster to the target, so it learns entries the
gateway withholds; it adopts only entries that extend its own pinned chain.
dieter device init
Usage: dieter device init [--replace] [--format text|json]
Start the account's device roster with this machine as its first device and
print a one-time recovery key. Run it once, on the first machine. If other
devices already use Dieter, do not run it: pair this machine instead. Without
--replace it refuses an account that already has a roster; --replace starts a
new roster that every previously paired device rejects: apps reset and pair
again, other machines run `dieter daemon unenroll` and enroll again.
dieter device requests
Usage: dieter device requests [--format text|json]
List the devices waiting to join the account, by name. Their codes are never
listed: approve a device only with the code its own screen shows you.
dieter device approve
Usage: dieter device approve [--format text|json] CODE
Approve the new device that shows CODE (16 characters, e.g. ABCD-EFGH-JKMN-PQRS;
case, spaces and hyphens do not matter). The code proves which key the new
device posted, so approving signs exactly that device into the roster. Only
type a code you see on your own new device.
dieter device revoke
Usage: dieter device revoke [--format text|json] DEVICE_ID
Remove DEVICE_ID (dv_…, see dieter device status) from the roster. Machines
and apps stop accepting it as soon as they see the signed revocation; the last
device that can connect cannot be removed. Revoking this machine is allowed.
dieter device recover
Usage: dieter device recover --recovery-key KEY|- [--format text|json]
Add this machine to the roster with the recovery key printed by
dieter device init, when no trusted device can approve it. "-" reads the key
from stdin, which keeps it out of shell history. The key commits to the
roster it was made for and never signs into another one.
dieter peer
Usage: dieter peer <status|show|changes|list|put|delete|merge> [options]
Leaderless account settings replicated by enrolled daemons, including while clients
are closed. Local commits work offline after first account discovery. Concurrent
values and deletions are preserved; read all versions and put with their revision
to resolve. Shared project and board operations use these records directly.
Use global --machine ID|NAME to address another daemon over authenticated routes.
show Read one shared record and all conflicting values
changes Read an incremental change page using a durable sequence cursor
status Account, actor, conflicts, and bounded per-peer sync progress/blockers
list One bounded snapshot page, including conflicts and tombstones
put Resolve a typed shared field from a JSON file
delete Write a causal deletion using the current record revision
merge Import a bounded protobuf JSON MergePeerRecordsRequest (recovery/sync)
dieter peer show
Usage: dieter peer show --kind KIND --id ID
Read one shared record and all conflicting values.
dieter peer changes
Usage: dieter peer changes [--account HASH] [--epoch EPOCH] [--sequence N]
Read a bounded incremental change page.
dieter peer status
Usage: dieter peer status
Show the enrolled account, conflicts, and bounded per-peer attempts, successes,
directions, checkpoints and sanitized record blockers. Catchup means durable page
progress with more work pending. A successful exchange is not acknowledgement by
every machine.
dieter peer list
Usage: dieter peer list [--account HASH] [--after KEY --snapshot REVISION]
Return up to 64 records. Pass nextKey and snapshotRevision for the next page.
dieter peer put
Usage: dieter peer put --kind KIND --id ENTITY.FIELD --file FILE [--revision HASH]
FILE contains the JSON value for the typed shared field. Prefer project and board
commands for normal edits; the daemon rejects unknown kinds and fields. Omit
--revision only for a new record; resolve conflicts with the current revision.
dieter peer delete
Usage: dieter peer delete --kind KIND --id ID --revision HASH
Persist a tombstone; concurrent unseen writes remain visible as conflicts.
dieter peer merge
Usage: dieter peer merge --file FILE
Import at most 64 records (2 MiB total) from protobuf JSON with account and
records fields. This joins causal versions; it never replaces the store or runs
an agent.
dieter settings
Usage: dieter settings <action>
Actions:
show Show global prompt settings
options List valid projects, boards, and harnesses
update [options] Update global prompt settings
Update requires --file FILE containing the Settings JSON object emitted by "show".
dieter settings show
Usage: dieter settings show
dieter settings options
Usage: dieter settings options
dieter settings update
Usage: dieter settings update --file FILE
dieter prompt (alias: prompts)
Usage: dieter prompt <action>
Actions:
show Show global prompt and skill templates
update [options] Update global templates
project [options] PROJECT Set or inherit a project prompt template
board [options] BOARD Set or inherit a board prompt template
preview [options] Render the effective prompt for a scope
dieter prompt show
Usage: dieter prompt show
dieter prompt update
Usage: dieter prompt update [--template TEXT|--template-file FILE] [--board-skill TEXT|--board-skill-file FILE] [--chat-skill TEXT|--chat-skill-file FILE] [--reset template|board-skill|chat-skill]...
The template opens every turn's instructions; the board skill follows it for
cards and the chat skill for standalone chats. dieter prompt show lists their
variables and dieter prompt preview renders them. --reset restores a template
to this release's default, which then follows later releases.
dieter prompt project
Usage: dieter prompt project [--inherit|--template TEXT|--template-file FILE] PROJECT
dieter prompt board
Usage: dieter prompt board [--inherit|--template TEXT|--template-file FILE] BOARD
dieter prompt preview
Usage: dieter prompt preview [--project PROJECT] [--board BOARD] [--card CARD] [--labels ID,ID] [--scope board|chat]
dieter watch
Usage: dieter watch changes [--count N]
Stream this machine's change frames as JSON Lines until interrupted, the same
stream native clients hold for every online machine. Frames name the
machine's peer identity and account and carry its replica of the account's
shared records (projects, boards, labels, cards, checkouts and KV, with every
causal sibling and its rank), then what only it knows: owner-only details of
the cards it runs and of its checkouts (paths, validation commands), the live
activity of its conversations and its peer replication issues.
resetRecords or resetLocal replaces what was received for that half. A frame
with caughtUp has delivered everything the machine held; heartbeats repeat the
cursor. Use --machine to watch another machine.
Read subscriptions renew credentials and resume from their last delivered checkpoint
after transient failures (up to five retries between frames). Revocation stops
recovery. Mutations, process starts, and stdin writes are never replayed.
dieter watch changes
Usage: dieter watch changes [--count N]
Stream this machine's change frames as JSON Lines until interrupted, the same
stream native clients hold for every online machine. Frames name the
machine's peer identity and account and carry its replica of the account's
shared records (projects, boards, labels, cards, checkouts and KV, with every
causal sibling and its rank), then what only it knows: owner-only details of
the cards it runs and of its checkouts (paths, validation commands), the live
activity of its conversations and its peer replication issues.
resetRecords or resetLocal replaces what was received for that half. A frame
with caughtUp has delivered everything the machine held; heartbeats repeat the
cursor. Use --machine to watch another machine.
Read subscriptions renew credentials and resume from their last delivered checkpoint
after transient failures (up to five retries between frames). Revocation stops
recovery. Mutations, process starts, and stdin writes are never replayed.
dieter storage
Usage: dieter storage
dieter doctor
Usage: dieter doctor [--format table|json]
Check the local daemon's runtime, storage, service-manager, shell, and optional
durability dependencies. Doctor is read-only and does not initialize storage.
dieter setup
Usage: dieter setup [--gateway URL] [--name NAME] [--no-open] [--no-start]
Authorize this machine with GitHub and start the platform-managed daemon service.
On macOS, setup also registers the signed background privacy helper and guides
Screen Recording, Accessibility, Login Items approval and Input Monitoring.
Privacy stays off until explicitly enabled. --no-open and --no-start skip privacy
helper registration; use "dieter machine privacy setup" later on this Mac.
Project registration is separate; use
"dieter project open PATH" explicitly after setup.
The default gateway is https://gateway.getdieter.com; use --gateway for self-hosting.
Retrying incomplete enrollment updates the gateway while preserving the machine key.
dieter daemon
Usage: dieter daemon <action>
Actions:
start Run the local data plane and persistent gateway tunnel
service Install and manage the platform daemon service
enroll Enroll this machine with the Dieter gateway
recover Restore a revoked local daemon ID with this replacement key
unenroll Revoke this machine and remove its local gateway credential
status Show service, local API, enrollment, and gateway health
logs Show or follow the daemon service log
permissions Verify screen/input permissions through the running daemon
dieter daemon service
Usage: dieter daemon service <action>
Install and manage Dieter's per-user daemon service. Service commands never
delete DIETER_HOME or project data.
Actions:
install Install or refresh the service definition and enable it
start Start the installed service
restart Gracefully restart the installed service
stop Stop the installed service
status Show the native service-manager status
uninstall Disable and remove the service definition, preserving all data
dieter daemon service install
Usage: dieter daemon service install
dieter daemon service start
Usage: dieter daemon service start
dieter daemon service restart
Usage: dieter daemon service restart
dieter daemon service stop
Usage: dieter daemon service stop
dieter daemon service status
Usage: dieter daemon service status
dieter daemon service uninstall
Usage: dieter daemon service uninstall
dieter daemon enroll
Usage: dieter daemon enroll [--gateway URL] [--name NAME] [--no-open]
Enroll this machine with the GitHub account configured by the Dieter gateway.
Retry incomplete enrollment with --gateway to correct the origin without changing
the machine key. Completed enrollments retain their identity.
Gateway URLs require HTTPS; HTTP is allowed only on literal loopback addresses.
dieter daemon unenroll
Usage: dieter daemon unenroll
Revoke this machine at its Dieter gateway, remove it from the account's
trusted devices, and delete its enrollment key and credential. A later
enrollment creates a new key that a trusted device approves again. Projects,
conversations, schedules, and harness settings remain.
dieter daemon recover
Usage: dieter daemon recover --old-id ID --confirm RECOVER
Restore a revoked daemon ID using this enrolled replacement's matching key.
This changes the saved local credential only after the gateway accepts and the
returned certificate is verified. Restart the daemon service manually afterward;
verify the restored daemon before revoking the replacement ID.
dieter daemon status
Usage: dieter daemon status [--format table|json]
dieter daemon logs
Usage: dieter daemon logs [--lines N] [--follow]
dieter daemon permissions
Usage: dieter daemon permissions [--check] [--no-open]
Verify capture and input permission through the running daemon, including with
--machine ID|NAME. --check discards one encoded frame and checks event-posting
permission without injecting input or changing settings. No local fallback is
used when the daemon is unavailable. Screen sharing is always available when
the required permissions are granted. Onboarding never restarts the daemon.
dieter serve
Alias for “dieter daemon start”.
dieter daemon start
Usage: dieter daemon start [--addr ADDRESS] [--direct-addr ADDRESS --direct-host HOST [--direct-network lan|tailscale|public|loopback]] [--env-file PATH] [--service [--runtime PATH]] [--verbose]
Run the machine-local Dieter data plane and, when enrolled, its persistent
outbound gateway tunnel. The local API is always loopback-only. An enrolled
daemon automatically advertises an authenticated loopback route; direct flags
add an optional LAN (the default --direct-network), Tailscale, or public route.
A package manager may supply --runtime with a fixed executable directory.
Service startup activates a staged verified release there before workers begin.
An enrolled daemon also verifies any gateway-signed endpoint relocation at startup,
preserving its enrolled identity and shared account. Discovery failure retains
its current address. Status reports the selected network endpoint.
dieter version
Print the version.