What Cyberine writes on disk
A reference of every path the product code creates, built from the writers in src/ (2026-10-18). "Secret" marks a file that can hold credentials or private text: keep it out of git, backups you share and screenshots. Nothing here needs hand editing except the files listed as read-only inputs.
Global, under $CYBERINE_HOME (default ~/.cyberine):
| Path | What it holds | Written by | Secret |
|---|---|---|---|
.env (mode 600) | provider keys, CYBERINE_THEME | cyberine auth, setup, the settings view | yes |
copilot.json, api-tokens.json, web-sessions.json (mode 600) | legacy GitHub Copilot token (no longer read since kn16x; safe to delete), HTTP API tokens, web dashboard sessions | cyberine auth, serve / web | yes |
config.json, fleet.json, settings.json, keybindings.json | global config, seats and routing, UI settings, key map | config --global, fleet, the UI, keybindings | no |
runs/<runId>.json | the cross-project run registry (tombstones as runs/<runId>/.cyberine-deleted) | every dispatch | no |
credits/ | spend ledgers and the daily and spend caps (events.jsonl, summary.json, spendcap-*, dailycap-reservations.jsonl) | every metered call | no |
memory/, user-memory/, user-profile.json | episodic run memory, remembered user facts, the learned user profile | runs and chat | yes |
chat-sessions/<id>.json, chat-history.jsonl | saved chat sessions; submitted chat prompts per cwd | cyberine chat | yes |
bus/ | the inter-agent message bus (topics, inboxes, presence) | teammates, send_message | yes |
idempotency/<sha256>.json | cached HTTP API responses for idempotency keys | cyberine web | yes |
handoffs/handoff-<stamp>_<project>.md | long handoffs | handoff write --mode long, tasks end --handoff long, chat handoff | no |
plans/<slug>/ | plan files | cyberine plan | no |
queue.jsonl, cron.json, daemon-status.json, daemon.pid, serve.pid | task queue, schedules, daemon heartbeat and pids | enqueue, schedule, daemon, serve | no |
quota/, liveness/, usage-windows.json, provider-breaker.json, worker-cooldown.json, seat-rotation.json, track-record.jsonl, track-record-summary.json | routing state: seat rate-limit cache, adapter liveness, usage windows, circuit breaker, cooldowns, seat rotation, worker outcomes | dispatch and autopilot | no |
commandcode-catalog.json, commandcode-headroom.json, update-check.json, cache/tasks-banner/ | caches | the free lane, the update check, the board banner hook | no |
cache/repo-map/<hash>.json | the full repo map loop workers get, one entry per repository, HEAD, ripgrep binary and map size, including the "rg is not on PATH" outcome | every loop-worker dispatch with CYBERINE_REPO_MAP on | no |
themes/<id>.json, theme-gallery.html | user themes and the gallery page | theme new, theme gallery | no |
workflows/<name>.ts (or .yaml) | saved workflow scripts | cyberine wf save <name> <path> | no |
supervisor/ | launchd log targets, generated systemd and pm2 templates | cyberine serve install | no |
codex-marketplace/ | the local Codex marketplace that registers the plugin | plugin install --harness codex | no |
Read-only inputs under $CYBERINE_HOME, authored by hand and never written by Cyberine: policy.json, hooks.json, commands.json, groups.json, skills/, rules/, plugins/. In a repository the same holds for .cyberine/hooks.json, .cyberine/rules/, .cyberine/commands.json and .cyberine/workflows/ (project workflows shadow same-named global ones).
Per repository:
| Path | What it holds | Written by | Secret |
|---|---|---|---|
.cyberine/config.json, config.local.json, fleet.json, policy.json | project config, project fleet, policy rules | init, config, fleet | no |
.cyberine/handoffs/<session-id>.md, logs/ | per-session breadcrumbs and the long writer's logs (the directory ignores itself; files older than 14 days are pruned) | handoff write, tasks end | no |
.cyberine/themes/, .cyberine/plans/ | project themes; plans when CYBERINE_PLANS_DIR or plansDir points there | theme new --project, plan | no |
.local/runs/<runId>/ | run.json, events.jsonl, worker outputs, diffs, transcripts, attachments, spill files (or $CYBERINE_RUNS_DIR) | every dispatch | yes |
.local/tasks/ | the board: ACTIVE.md, TASKS_ARCHIVE.md, tasks/<id>.md briefs (and tasks/archive/), journal/<day>.jsonl, status.d/, status.log, TASKS_DEDUPE_LEDGER.jsonl, split-ops.jsonl, board.html, the .reconcile.lock/ lock | cyberine tasks, init | no |
.local/tasks/drafts/ | pending draft-*.md, plus consumed/ (saved), rejected/ (inbox reject) and reports/ (cyberine draft, cyberine converge) | draft, converge, tasks draft, save, inbox reject | no |
.local/autopilot/, .local/autonomy-audit/, .local/evolve/ | autopilot state (STOP file, checkpoints, calibration, logs), the audit ledger, evolve sessions | autopilot, the loop, evolve | no |
.local/research/ | research reports and prior-art reports | cyberine research | no |
.local/repo-skeleton-cache/, .local/git-signal/ | repo skeleton and co-change caches | worker briefing | no |
.local/shadow-git/<taskId>/, .local/bg-shells/ | shadow git snapshots, background shell output | workers, chat | yes |
.local/logs/debug.log, .local/tmp/keylog.txt | debug log; key log only with CYBERINE_KEYLOG=1 | the TUI | yes |
.local/eval/, .local/bench/, .local/dogfood/authored/ | eval, bench and authored-workflow output | eval, bench, workflow authoring | no |
.claude/rules/cyberine-*.md, .claude/settings.local.json, .gitignore entries | the Cyberine rules and the Claude Code wiring | init | no |
When the board lives in .claude/TASKS.md (or .codex/TASKS.md), its briefs, journal, archive and ledger sit beside that file instead of under .local/tasks/.
Outside both:
| Path | What it holds | Written by | Secret |
|---|---|---|---|
~/.claude-profiles/accounts.json, ~/.claude-profiles/<dir>/ (mode 700, its .claude.json mode 600, symlinks to shared ~/.claude entries) | the shared account store and each profile | cyberine account add | yes (profile dirs) |
$CLAUDE_ACCOUNTS_BIN_DIR/claude-<key> (default ~/.local/bin) | per-account launcher symlinks | account add, account link; removed by account remove | no |
~/.claude/skills/cyberine | the plugin symlink (a copy with --copy) | cyberine plugin install | no |
~/.codex/config.toml, ~/.gemini/settings.json, ~/.config/muse/settings.json | MCP server entries | cyberine mcp install | no |
~/Library/LaunchAgents/com.cyberine.loop.plist, ~/.config/systemd/user/*.service | service definitions | cyberine serve install | no |
$TMPDIR/cyberine-* | per-call scratch (tools, judges, merges, trust gate), removed after use | workers and judges | no |
$TMPDIR/cyberine-paste/clipboard-image-*.png, $TMPDIR/cyberine-muse-schema-<hash>.json | pasted images, the Muse output schema | the chat TUI, the Muse adapter | images: yes |
./chat-export-<stamp>.md (current directory) | a chat export | the chat export command | yes |
Development-only outputs of this repository's own scripts: .local/selftest-stamp/<host>/ (npm run sweep) and .local/promote-check/<host>/<runId>/ (npm run promote:check).
Known Limitations and Deferred Work: the list is derived from the source, so a path that a third-party CLI writes on Cyberine's behalf (Claude Code's own ~/.claude/projects/ transcripts, Codex's ~/.codex/sessions/) is not in it. Pasted images under $TMPDIR/cyberine-paste/ and the Muse schema file are never cleaned up by Cyberine; the OS temp cleaner removes them. There is no cyberine command that lists or prunes these paths as a whole: cyberine delete removes runs, cyberine index-prune --fixtures --dry only lists leaked fixture entries in the run registry, cyberine index-prune --missing-runsdir --delete removes registry records whose run directory is gone, and breadcrumbs older than 14 days are pruned when a new one is written.
Background shell jobs inside a worker (run_bash background + bash_jobs)
A loop worker can start a long-running shell command without blocking its tool round: runbash with background: true starts the command immediately and returns a job id; bashjobs with action="list"...
Environment variables
Environment variables: a Cyberine usage recipe.