CLI Overview
Architecture at a glance
Section titled “Architecture at a glance”The Dreadnode terminal client is a full-screen Textual app that talks to the Python agent server. You start it once, it connects to a running server or auto-starts the default local one, and then all chat, sessions, and runtime metadata flow through that server connection.
The primary command is dreadnode. dn is the shortcut.
Start the CLI
Section titled “Start the CLI”$ dreadnodeopens the Textual client$ dnsame TUI, using the shortcutUse dreadnode serve when you want a long-lived local runtime for another client, test harness, or
separate terminal:
$ dreadnode serve --host 127.0.0.1 --port 8787 --working-dir .Startup flags
Section titled “Startup flags”| Flag | Arguments | Description |
|---|---|---|
-s, --server | <url> | Connect to an existing runtime server instead of auto-starting the default local one |
-p, --platform | <url> | Platform API URL override used for authentication and profile selection |
Authentication
Section titled “Authentication”Use dreadnode login to save a platform profile before launching the client. If you omit the API
key, the CLI starts a browser-based device login flow.
$ dreadnode login$ dreadnode login dn_key_... --server http://localhost:3000If you launch dreadnode without a saved profile, the TUI opens its auth modal first. Once you are inside
the client, the in-app /login command remains available.
Serve subcommand flags
Section titled “Serve subcommand flags”Use dreadnode serve when you want to run the runtime server without launching the TUI.
| Flag | Arguments | Description |
|---|---|---|
--host | <host> | Host interface for the local runtime server |
--port | <port> | Port for the local runtime server |
--working-dir | <path> | Working directory for the runtime server |
--platform-server | <url> | Platform API base URL for the local runtime |
--api-key | <key> | Platform API key used by the runtime server |
--organization | <org> | Default organization key for the runtime server |
--workspace | <ws> | Default workspace key for the runtime server |
--project | <proj> | Default project key for the runtime server |
--verbose | — | Enable verbose trace logging for the local server |
Package upload commands
Section titled “Package upload commands”The CLI can also publish reusable assets to the platform OCI registry:
$ dreadnode capability push ./packages/capabilities/web-security$ dreadnode dataset push ./seed-data/datasets/vulnerability-reports$ dreadnode model push ./seed-data/models/vuln-classifier$ dreadnode task push ~/projects/security-tasks/terminal-bench-tasks/security-bandit-bandit-00Use dreadnode task push for task-style environment directories that contain a task.yaml
and a runnable environment definition such as docker-compose.yaml.
For registry-backed package management, the CLI now also supports read and delete flows directly:
$ dreadnode capability list$ dreadnode dataset list$ dreadnode model list$ dreadnode task list$ dreadnode task get security-bandit-bandit-00@latest$ dreadnode task update security-bandit-bandit-00@latest --public$ dreadnode task delete security-bandit-bandit-00@latestDatasets and models are immutable once published. To “update” them, push a new version.
Capabilities and tasks support metadata updates for visibility through the update subcommand.
Task refs use NAME@latest.
Hosted training commands
Section titled “Hosted training commands”The CLI also exposes hosted training submission and management through dreadnode train. See
Training for the SFT and RL command surface.
Hosted optimization commands
Section titled “Hosted optimization commands”The CLI also exposes hosted optimization submission and management through dreadnode optimize. See
Optimization for the hosted GEPA command surface.
AIRT commands
Section titled “AIRT commands”The CLI also exposes AIRT assessment management and analytics through dreadnode airt. See
AIRT for the assessment, report, trace, and project-summary command surface.
Worlds commands
Section titled “Worlds commands”The CLI also exposes Worlds manifest, trajectory, and job management through dreadnode worlds. See
Worlds for the full control-plane command surface.
Platform URL overrides
Section titled “Platform URL overrides”Use the --platform flag or the DREADNODE_SERVER environment variable to target a non-default
platform before the auth modal opens (for example, a local web app):
$ dreadnode --platform http://localhost:3000$ DREADNODE_SERVER=http://localhost:3000 dreadnodePrecedence order:
--platformflagDREADNODE_SERVERenvironment variable- Active profile URL
- Default platform URL
In-app commands
Section titled “In-app commands”The TUI is screen-first. A few commands open overlays or screens, and the rest help you control the current session.
| Command | Arguments | Description |
|---|---|---|
/help | — | Show the in-app command set |
/new | — | Create a new session |
/reset | — | Reset the current session |
/sessions | — | Open the session browser |
/rename | <title> | Rename the current session |
/compact | [guidance] | Compact conversation history |
/export | [filename] | Export the current session transcript |
/agents | — | List loaded agents |
/agent | <name> | Start a session with a specific agent |
/model | [provider/model] | Get or set the active model |
/models | — | Open the model picker |
/thinking | [on|off|low|medium|high|max] | Toggle reasoning effort |
/reload | — | Re-discover capabilities and rebuild the registry |
/login | [api-key] [--server <url>] | Authenticate with the platform and restart the runtime |
/logout | — | Delete the active profile and restart local-only |
/whoami | — | Show the current identity |
/workspace | [key] | View or switch workspace |
/workspaces | — | List workspaces |
/projects | [workspace] | List projects in a workspace |
/runtimes | — | View interactive runtimes |
/environments | — | Browse available environments |
/capabilities | — | Manage runtime capabilities |
/skills | — | Browse and load skills |
/mcp | — | View MCP server status |
/secrets | — | Inspect configured secrets and provider presets |
/traces | — | Browse traces for the current project |
/sandboxes | — | Monitor sandboxes |
/evaluations | — | View evaluation jobs |
/console | — | View backend logs |
/tools | <compact|expanded> | Control tool result rendering |
/update | — | Update the CLI to the latest version |
/copy | — | Copy the last assistant message |
/quit | — | Exit the client |
!<command> | <command> | Run a shell command on the connected runtime |
@<agent> | <agent> | Route a prompt to a specific agent from the current capability |
Keybindings
Section titled “Keybindings”| Keybinding | Description |
|---|---|
Ctrl+B | Open sessions |
Ctrl+O | Open workspaces |
Ctrl+P | Open capabilities |
Ctrl+R | Open runtimes |
Ctrl+T | Open traces |
Ctrl+E | Open evaluations |
Ctrl+A | Open the agent picker |
Ctrl+K | Open the model picker |
Ctrl+Shift+K | Cycle reasoning effort |
Ctrl+N | Start a new session |
F5 | Open console logs |
F9 | Update the CLI |
Tab | Cycle focus |
Esc | Dismiss overlays or interrupt |
j / k | Scroll the conversation up or down |
g / G | Jump to the top or bottom |
y | Copy the last assistant message |
? | Show in-app help |
Environment screen shortcuts
Section titled “Environment screen shortcuts”Use the Environments screen (/environments) to browse tasks and start sandboxes.
| Keybinding | Description |
|---|---|
s / Enter | Start the selected environment |
c | Copy the rendered instruction to the clipboard |
Tool display and streaming behavior
Section titled “Tool display and streaming behavior”The chat panel now follows deterministic event boundaries:
- Assistant text streams live in the draft area during generation.
- Draft text is committed once at stable boundaries (for example when a tool starts or the turn ends).
- Tool calls render as one-line rows (
tool(arg) — summary) so the timeline stays compact. - Use
/tools expandedwhen you want tool rows to include a second detail line with the raw result. - Use
/tools compactto return to summary-only tool rows.
Blocking states and noise filtering
Section titled “Blocking states and noise filtering”heartbeatevents update liveness internally and do not add transcript noise.permissionrequiredanduserinputrequiredevents move the UI into blocking mode and disable composer input until the turn can resume.
Pre-1.0 note
Section titled “Pre-1.0 note”The terminal client is still evolving quickly. The first Textual version focuses on the server session loop first, then broader platform workflows will be layered back in.