Local storage
Every file Dreadnode writes under ~/.dreadnode/ — config, profiles, transcripts, spans, caches, and auth tokens.
Dreadnode keeps its local state under ~/.dreadnode/. Managed sessions also sync the state needed by the platform, while credentials and local caches remain in this directory. Back it up and you back up every local session, profile, and cached artifact.
~/.dreadnode/├── config.yaml profiles and identity├── prompt-history.jsonl composer history (last 500 entries)├── mcp-auth.json OAuth tokens for MCP servers (0600)├── capabilities/ installed capabilities├── packages/ pulled artifacts (datasets, models, agents, environments)├── cas/ content-addressed blob store├── artifacts/ log outputs from runs├── reports/ saved deliverables from the `report` tool├── logs/ bounded TUI, worker, MCP, and diagnostic files├── tool-output/ offloaded tool output (large results spilled to disk)├── projects/│ └── <project_key>/│ └── <run_id>/│ ├── spans.jsonl│ └── metrics.jsonl└── sessions/ ├── sessions.sqlite3 └── <session_id>/ └── spans_<session_id>.jsonlWhat each file is for
Section titled “What each file is for”| Path | Owner | What’s in it |
|---|---|---|
config.yaml | CLI / TUI | Saved profiles (server URL, API key, default org/workspace/project), active profile pointer |
prompt-history.jsonl | TUI composer | Last 500 unique prompts you typed. Deduped, appended, rotated |
mcp-auth.json | MCP client | OAuth access/refresh tokens for MCP servers. File mode 0600 |
capabilities/<name>/ | Capability loader | Installed capability bundles, one directory per capability |
packages/{datasets,models,agents,environments}/ | dn pull / SDK | Hub artifacts pulled into local cache |
cas/sha256/ | Storage layer | Content-addressed blobs backing packages + artifacts |
artifacts/ | Run exports | Structured outputs from agent runs (CAS-backed) |
reports/ | report tool | Saved deliverables (markdown / text). Filenames derive from the report title |
logs/tui.log | TUI | Current bounded TUI self-log (DEBUG and above, never TRACE); two newest rotations retained |
logs/worker-*.log, logs/mcp-*.log | Runtime services | Bounded component logs and their previous rotations |
logs/dreadnode-report-*.zip | Bug reporter | Diagnostic bundles you explicitly save for review or support |
tool-output/ | Agent runtime | Offloaded tool output when a single tool call exceeds the in-context threshold |
projects/<project>/<run>/spans.jsonl | Tracing | OpenTelemetry spans per run |
projects/<project>/<run>/metrics.jsonl | Tracing | Metrics per run |
sessions/sessions.sqlite3 | Session store | Local index of sessions, transcripts, runtime state |
sessions/<id>/spans_<id>.jsonl | Tracing | Trace spans for the session (local mirror) |
Safe to delete?
Section titled “Safe to delete?”| Path | Effect of deletion |
|---|---|
prompt-history.jsonl | Composer history resets. No other effect |
mcp-auth.json | Every MCP server re-prompts for OAuth |
cas/, packages/ | Artifacts re-download on next use |
sessions/<id>/ | That session becomes unrecoverable locally. If synced to the platform, still on the server |
config.yaml | All saved profiles gone. Log in again with /login |
cas/ and packages/ can grow large — they’re the only directories worth periodically clearing for disk space.
Storage in managed sandboxes
Section titled “Storage in managed sandboxes”Inside a Dreadnode-managed sandbox, ~/.dreadnode/ and /home/user/workspace are local to that sandbox. They are not object-storage mounts. Pausing and resuming an E2B sandbox preserves its local filesystem because it resumes the same sandbox.
Resetting, replacing, or deleting a sandbox discards files that were not synced elsewhere. Managed session state is synchronized through the platform API, and SDK remote-storage operations access object storage explicitly.