Troubleshoot
Start with the exact command, exact error text, and whether you are using the managed checkout or a source checkout. Most onboarding failures are caused by Node.js version problems, runtime-home drift, missing provider secrets, invalid YAML, or an unexpected workspace.
For a managed install, replace uv run demiurge with:
~/.demiurge/demiurge-agent/.venv/bin/demiurge
Confirm the Command Surface
Running demiurge without a subcommand starts the TUI. The top-level
subcommands are:
initdoctorpackageupdatesetupgateway
Run demiurge setup without another setup subcommand to open the setup wizard.
TUI Does Not Start
The TUI requires Node.js 20 or newer:
node --version
If Node is missing or too old, install Node.js 20 or newer and retry:
uv run demiurge --provider fake
Command Not Found
For a managed install, use the managed command path:
~/.demiurge/demiurge-agent/.venv/bin/demiurge --provider fake
For a source checkout, run commands through uv from the repository:
uv run demiurge --provider fake
Runtime Drift or Missing Runtime Files
Check without writing files:
uv run demiurge init --check
uv run demiurge doctor
Refresh templates only after reviewing the drift and deciding to update runtime files:
uv run demiurge init --refresh assistant
Use init --refresh global only for the global fallback config, and use
init --refresh all only when you intend to refresh all runtime templates.
Runtime Permission Check Fails
demiurge doctor is read-only. On POSIX it reports
runtime.permissions.insecure when the runtime home, .env, config.yaml,
SQLite files, logs, state, or artifacts do not satisfy the Host 0700/0600
policy.
Stop running Demiurge processes, review every path in the finding, and check for unexpected symbolic links or ownership changes. A normal mutating startup or init tightens existing modes without rewriting file contents:
uv run demiurge init
uv run demiurge doctor
If init cannot tighten a path, fix its owner/permissions outside Demiurge and retry. Do not replace a listed runtime path with a symlink; private write paths reject symlinks. Windows uses platform ACL semantics, so numeric POSIX mode findings are not emitted there.
Provider or API Key Fails
Inspect setup state:
uv run demiurge setup status
Use the fake provider to separate runtime issues from live provider issues:
uv run demiurge --provider fake
If fake works, check:
- The selected provider profile exists.
- The provider profile has a base URL.
- The configured
api_key_envis exported or written to~/.demiurge/.env. - The selected core model uses the intended provider and
<model-name>.
Provider resolution order is CLI override, core manifest, global fallback, host
default, then fake.
Core or Slot Does Not Load
Run:
uv run demiurge init --check
Then check the affected files:
agent.yamlagent/pipelines.yaml- the slot
slot.yaml - the slot
module.py - authored tool
tool.yamlwhen a tool fails to load
Compare with ../reference/contracts/slot-modules.md.
Workspace Is Wrong or Tools Are Rejected
Inside the TUI, run:
/status
Workspace resolution order is --workspace, DEMIURGE_WORKSPACE, TUI launch
directory, core runtime.workspace, then ~/.demiurge/workspace.
Run with an explicit workspace:
uv run demiurge --workspace /path/to/project --provider fake
Approvals and sensitive-path checks still apply inside the workspace.
Package Install Fails
Preview first:
uv run demiurge package install <package_id> --core assistant --preview
Check that the repository has:
repository.yaml
packages/<package_id>.yaml
External repositories must be trusted before they can install local Agent Slot code.
Telegram Does Not Respond
Check:
channels.telegram.enabled: trueDEMIURGE_TELEGRAM_BOT_TOKENis setallowed_usersorallowed_chatsincludes the caller- the gateway is running with the intended core
uv run demiurge gateway --core assistant --provider fake
Manual Links Break
Build the site:
cd website
npm run build
Docusaurus is configured to throw on broken regular links and warn on broken Markdown links.