error_code, class, exit_code, title, error, detail and hint, so scripts and agents can branch on it. See Use the CLI from AI agents.
SH-<DOMAIN>-<NUMBER>. They are stable: search for them in your shell history, put them in support tickets, and branch on them in scripts. A code is never reassigned to a different meaning.
Error codes
Command line
synheart ui with --json, --format json or --quiet fails with a plain error instead of a code: TUI is not available with --format json (or --quiet).
Sign-in
Install, sync and runtime
Network and registry
The
synheart org, project and api-key commands return SH-AUTH-001 for an HTTP 401.
Config, update, usage and Syni
Environment variables
The CLI reads these variables. Each is checked against the CLI source.
Two further variables,
SYNHEART_INSECURE_SKIP_MANIFEST_VERIFY and SYNHEART_REGISTRY_PINNED_KEYS_FILE, exist only for CLI developers testing against an unsigned or local registry. Never set them in a real environment.
Troubleshooting
Install or sync asks me to sign in
Install or sync asks me to sign in
Run
synheart login. Artifact commands need a valid session. If you keep getting sent back to login, run synheart auth status to see where the CLI loads credentials from and when they expire. Then synheart logout and synheart login again.Sign-in does not work in CI or in an agent
Sign-in does not work in CI or in an agent
The browser flow needs a person. Create a CI token in the dashboard, set
SYNHEART_CI_TOKEN, and run synheart login.Mock stream port already in use
Mock stream port already in use
Pass
--port to synheart mock start, or check a port with synheart doctor --port 8787. The defaults are 8787 (WebSocket), 8788 (SSE) and 8789 (UDP). --port N moves all three together: WebSocket on N, SSE on N+1, UDP on N+2.I need the same runtime version in CI
I need the same runtime version in CI
Commit
synheart.lock, and run synheart sync in CI. If the lockfile no longer matches the registry, sync fails with SH-INST-004 or SH-INST-005 instead of installing something different. synheart doctor also reports modified runtime files (SH-RT-FILES).synheart local --https fails to write /etc/hosts
synheart local --https fails to write /etc/hosts
The HTTPS mode adds an
/etc/hosts entry and trusts a local certificate, which can need administrator rights. Run it with the permissions the error asks for, or use plain HTTP (synheart local). Undo the changes with synheart local cleanup --remove-certs.The receiver cannot be reached from my phone
The receiver cannot be reached from my phone
Check that your phone and computer are on the same network, and that your firewall allows the receiver’s port (default 8787). The receiver listens on every interface unless you pass
--host. synheart doctor --port 8787 checks that the port is free.SYNHEART_API_URL is not picked up
SYNHEART_API_URL is not picked up
The CLI reads environment variables on every run. Check that the variable is exported in the shell that runs the CLI, and run
synheart env to confirm.The colours look wrong on my terminal
The colours look wrong on my terminal
Set
SYNHEART_THEME_MODE=light or dark if the CLI guessed your background wrongly. Pick another theme with --theme, or turn colour off with NO_COLOR=1.synheart doctor, and include the output of synheart version --build when you ask for help.