Documentation
System commands
Doctor, license, sync, cron and the other maintenance commands.
On this page
Overview
Everything on this page lives on the operations side of the
CLI split: hand-parsed subcommands inside the desktop
binary, each with its own usage line and its own output conventions. They do not
take the global --json flag or share the semantic exit-code taxonomy.
tde doctor
A compact, privacy-safe environment diagnostic.
tde doctor
tde doctor --jsonWithout arguments it prints a readable table, one line per item. With --json it
prints the minified, single-line form, which is designed to be pasted into an
agent's prompt as a prelude — so the model knows what OS, shell, terminal and
toolchains it is dealing with before it starts guessing.
Reported fields are all best-effort and simply omitted when unavailable: os,
kernel, shell, term, locale and a derived utf8 boolean, cwd_is_git
and branch, a runtimes object probing node, python3, cargo, rustc,
go and docker, and ms for how long the probe took. Nothing about your
files, your network or your credentials is collected.
tde license
Headless license activation, for machines where nobody will ever open the UI.
tde license activate --key <KEY> [--name <NAME>]
tde license status--key and --name also accept -k / -n and the --key=VALUE form. --name
defaults to the machine's hostname, or to the previously registered device name.
Re-activating with a key that is already active is a successful no-op that prints
already activated.
status prints not activated, or activated (local) / activated (cloud)
with the device name — cloud meaning a remote replica is configured.
Exit codes here are the command's own: 0 for success or an already-activated
no-op, 1 for a network or server error including an invalid key, 2 for usage.
tde sync hydrate
Brings a fresh machine up to the account's state. This is what a newly provisioned TDE Machine runs on boot.
tde sync hydrate
tde sync hydrate --credentials-only
tde sync hydrate --repos-onlyThree things happen, in order: replicated credential files are written to disk,
replicated API keys are merged into the local vault, and every live replicated
project is cloned into ~/.tde/repos and registered so it appears in TDE.
Individual failures are reported and skipped, never fatal.
--credentials-only covers both kinds of auth material — files and vault
secrets — which is the point of the flag: get the box able to talk to GitHub and
to a model provider without cloning anything yet. --repos-only does the inverse.
The two are mutually exclusive.
Hydration requires an activated license. Without one it exits 1 and tells you
to run tde license activate first.
tde bot
Manage the recurring triggers that feed and advance the board.
tde bot list
tde bot create <name> <cron> <action>
tde bot rm <id>list — also the default with no arguments — prints tab-separated id, name, cron
expression, action, and on or off. create takes all three arguments
positionally and prints the new id. rm takes a numeric id.
Bot execution itself belongs to the Runtime, not to the desktop, so a created bot runs whether or not anything is on screen. See Bots for what they can do.
tde cron
The system crontab entries TDE owns, which are distinct from bots.
tde cron list
tde cron run <id>
tde cron synclist — the default — prints id, name, schedule, command and enabled state,
tab-separated. run executes one job immediately, recording the start, the
outcome and the captured output in the run history; a failed job propagates its
output as the command's error. sync writes TDE's jobs into the real system
crontab and prints crontab synced.
tde diff
The CLI counterpart of the in-app Git Diff viewer, reusing the same diff text, parser and renderer so the two cannot drift.
tde diff
tde diff --stat
tde diff HEAD~3
tde diff main..feature-branch
tde diff --color=never > review.txt| Form | Shows |
|---|---|
| no argument | The working tree diff. |
<ref> | That commit against its parent, or against the empty tree for a root commit. |
<a>..<b> | The diff between two refs. |
--stat renders the summary instead of the full patch. --color accepts
always, never or auto; bare --color means always and auto is the
default, colouring only when stdout is a terminal.
The repository root is resolved from your current directory, so it works from any
subdirectory. Each ref is validated before anything is shelled out — a bad
revision is an explicit error, not an empty diff. On a terminal the output is
piped through $PAGER, defaulting to less -R; set PAGER to an empty string to
opt out, and redirect or pipe the command to get plain text.
tde font
tde font install
tde font statusinstall places the brand font in your user font directory and then prints the
per-terminal configuration line for kitty, Alacritty, foot, GNOME Terminal and
WezTerm. status reports whether each font file is present and where the
directory is. With no subcommand, install is assumed.
tde bootstrap
Runs the same provisioning implementation as onboarding, without entering the terminal UI.
tde bootstrap run
tde bootstrap status
tde bootstrap run --state /var/lib/tde/bootstrap.json --no-starter --force| Flag | Effect |
|---|---|
--state PATH | Where progress is recorded. Defaults to bootstrap.json under the TDE state directory. |
--no-starter | Skip the starter app bundle. |
--force | Re-run even when the state file already says Ready. |
--install-system-deps, --kiosk | Accepted for compatibility and ignored — headless provisioning does not install host packages. |
run streams one JSON event per line as provisioning progresses and exits
non-zero if any item fails or if the provisioner ends without a terminal status.
Without --force, a state file already marked Ready short-circuits: the status
is printed and nothing is re-run. status — also the default subcommand — prints
the recorded status as pretty JSON, or a default status when no state file exists.
tde games and tde ui-demo
tde games
tde games snake
tde ui-demotde games with no name lists the bundled games — 2048, mines, snake,
words and boxes — with a one-line description each; with a name it launches
that game in the current terminal. tde ui-demo opens the design-system gallery,
which is the fastest way to see every component TDE apps are built from. Both are
also launchable from the desktop.
MCP stdio servers
TDE ships several Model Context Protocol servers as stdio entry points on the same binary:
| Command | Exposes |
|---|---|
tde control-mcp [--profile NAME] [--socket PATH] | The semantic My Loop API: tasks, projects, pipelines, agents, redacted share status. |
tde brain-mcp | Durable memory and decision records. |
tde recall-mcp | Session recall across prior agent conversations. |
tde database-mcp | Managed database profiles. |
tde graph-mcp | The code graph. |
control-mcp accepts --profile NAME and --socket PATH; with no socket it
resolves — and if necessary starts — the profile's Runtime and uses its semantic
socket. Like the rest of the semantic surface, it refuses any profile other than
default. Its guarantees are documented in
Ask and chat.
See MCP for connecting these to agents you run yourself.