Docs/CLI guide

CLI guide

Discover, inspect, and automate the same operations as the native clients.


dieter is both the local daemon executable and its supported automation client. Operational commands call the running daemon API. They do not edit storage files.

Discover commands offline

dieter --help
dieter help card create
dieter remote exec --help

Every group and leaf has offline help. Use it for the exact required arguments, formats, confirmations, and bounds in your installed release. The CLI reference collects the help of every command in the current release. Uppercase IDs in this guide are placeholders; retain real IDs returned by discovery.

Choose a machine

Without --machine, operational commands use the local daemon. Place the global option before the command to target another enrolled host:

dieter machine list --format jsonl
dieter --machine MACHINE_ID status
dieter --machine MACHINE_ID project list --format jsonl

Remote authentication uses the local machine’s enrollment key, which is also its key in the account’s trusted devices ; there is no second CLI login. Both machines must be trusted. Verified direct TLS is preferred, followed by supported WebRTC and the gateway relay; every route is end-to-end encrypted between the two machines. --checkout chooses among checkouts on the selected machine, not a different host. Quota commands are account-wide and reject --machine.

Command map

GroupUse it for
setup, doctor, daemonEnrollment, prerequisites, permissions, service state, logs, and Linux user units
deviceTrusted devices: pairing approvals, removal, roster history, sync and recovery
machineDirectory, routes, live telemetry, contract/release versions, updates, power, and connection signaling
harness, quotaHost model catalogs and account quota windows
project, boardShared project identities, local checkouts, board settings, labels, host mappings, retention
card, chatDurable conversations, follow-ups, queues, read receipts, presentation, archives
workspaceUncommitted changes, revisions, Git and SCM operations
fileDirectory listings, file reads, revision-checked saves
terminalDaemon-owned interactive PTYs
remoteExact-argv processes, resumable output, explicit input and cancellation
screenCapabilities, session signaling, control, quality, clipboard, diagnostics
scheduleTemplates, previews, occurrence history, and dispatch
settings, promptPortable settings and scoped prompt configuration
peer, kvPeer synchronization, portable records, revisions, ordering, and subscriptions
vaultEnd-to-end encrypted logins and TOTP, machine membership, agent use, and the access audit
channelAgent channels (experimental): messages, file claims and decisions between agents on a project
watch, status, storage, versionBounded observation, counts, paths, and build identity

Common recipes

Set up and inspect

dieter setup
dieter project open ~/Development/my-project
dieter doctor
dieter daemon status
dieter daemon logs --follow

Setup defaults to https://gateway.getdieter.com; for self-hosting, pass --gateway https://YOUR-GATEWAY. Run daemon start or serve for foreground operation only when a daemon is not already running.

Pair and manage devices

dieter device status                  # trust state, the pairing code while PENDING, all devices
dieter device requests                # devices waiting to join, by name only
dieter device approve CODE            # approve the new device that shows CODE
dieter device revoke DEVICE_ID        # remove a device
dieter device roster                  # signed history of additions and removals

Type only a code you see on your own new device. dieter device init starts the roster on the account’s first machine and prints a recovery key once; dieter device recover --recovery-key - adds a machine back with it. Both run only on the machine itself, and agent turns cannot change device trust. See trusted devices .

Create and follow a task

dieter project list --format jsonl
dieter board list --project PROJECT_ID --format jsonl
dieter card create --project PROJECT_ID --board BOARD_ID \
  --lane running --auto-title --prompt "Add keyboard navigation" \
  --workspace worktree --format id
dieter card context CARD_ID
dieter card transcript --last 20 CARD_ID
dieter card watch CARD_ID

Creating or sending returns after admission, not after the agent finishes. Do not replay a start or message simply because the connection dropped.

Continue and review

dieter card send CARD_ID --message "Address the review feedback."
dieter card move CARD_ID --lane review
dieter card queue remove CARD_ID --message MESSAGE_ID

Queue removal returns the complete payload and selection so a caller can restore a draft for editing.

Completed, unseen replies appear in Needs attention on Mac and under Needs you in the Android and iOS Inbox. Viewing the latest reply acknowledges it across clients. Automation can use dieter card read --response-seq SEQ CARD_ID with the responseSeq returned by card show after displaying that response. This also works with chat read and global --machine; an old receipt cannot clear a newer reply.

Inspect and commit selected changes

dieter workspace changes --project PROJECT_ID
dieter workspace diff --project PROJECT_ID --section unstaged --path src/main.go
dieter workspace run --project PROJECT_ID --kind stage \
  --revision REVISION --param path=src/main.go --wait
dieter workspace changes --project PROJECT_ID
dieter workspace run --project PROJECT_ID --kind commit \
  --revision NEW_REVISION --param subject="Focused change" --wait

Re-read the changeset after a mutation and use its new revision. Worktree conversations can be addressed by card ID; project-directory changes use --project because they belong to the shared checkout.

Run and observe a process

dieter remote exec --card CARD_ID --detach -- npm run dev
dieter remote list --card CARD_ID
dieter remote wait EXECUTION_ID

The process belongs to the daemon. Leaving an observer does not stop it. Use remote --help for explicit read, stdin, and stop operations.

Inspect schedules and quotas

dieter schedule list --project PROJECT_ID --page-size 50
dieter schedule runs SCHEDULE_ID --page-size 50
dieter quota list
dieter quota watch --count 3

Continue paginated schedule output with its opaque --page-token. Each quota account/window remains separate; provider summaries never combine allowances.

How agents use the CLI

Every agent turn starts with short instructions that name its card or chat and the daemon’s own dieter binary by absolute path, so an older dieter earlier on a login shell’s PATH cannot shadow it. They give the few commands a card needs (re-read the task, move the card when it is done, create a follow-up card when asked, set labels) and point the agent at dieter --help for everything else. Every harness gets the same instructions. The presentation and background process tools come with their own instructions and CLI equivalents.

See exactly what a conversation receives, or replace the defaults:

dieter prompt preview --card CARD_ID
dieter prompt show
dieter prompt update --board-skill-file board-instructions.md
dieter prompt update --reset board-skill

dieter prompt show lists the template variables, such as {{card.id}}, {{board.target_lane}} and {{dieter.cli}} (the daemon’s binary). Templates you have not changed, or have reset, follow the defaults of the installed release.

Automation rules

Use bounded contexts and lists; fetch full tool payloads only when needed. Watches resume read state after transient transport failures, with up to five retries between delivered frames. Revocation and permanent errors stop recovery. A mutation, process start, or stdin frame is not replayed by watch recovery.

Prefer documented idempotency keys when an operation supports them. After an uncertain response, inspect state before retrying. Use CLI operations for all Dieter state changes instead of editing DIETER_HOME.

For deeper command examples and behavioral boundaries, read the maintained Dieter CLI skill .

Improve this page on GitHub ↗

Type to find a guide.