Configuration and private state

Configuration

Configuration is optional. Side Dog reads ~/.config/side-dog/config.toml, or $XDG_CONFIG_HOME/side-dog/config.toml when XDG_CONFIG_HOME is set.

pin = ["~/src/side-dog"]
ignore = ["~/.codex/worktrees/*", "~/Documents/Codex/*"]

[display]
order = "newest"       # newest or oldest
detail = "compact"     # compact or expanded
filter = "all"         # all, milestones, or files
layout = "auto"         # auto, columns, or timeline
show_filesystem_activity = false  # background files and lifecycle rows are hidden by default
limit = 8

[board]
group = "repo"         # repo (default), surface, or none
detail = "shown"       # shown or hidden

[notify]
enabled = false         # default; true opts in when Side Dog starts

[spaces]
review = ["~/src/project", "~/src/project-issue-42"]

[usage]
enabled = true
command = ["ccusage"]
agent = "claude-code"
offline = false
block_refresh_seconds = 10
session_refresh_seconds = 180

Activity is stored per project under ~/.local/state/side-dog/projects/. Set SIDE_DOG_STATE_DIR to use a different private location. The append-only events.jsonl remains the authoritative history. Beside it, Side Dog atomically maintains a versioned startup-summary.json containing a validated 500-event tail plus the small amount of GitHub, delivery, cursor, and up to 4,096 most-recent usage-session keys needed at startup. An unchanged history reuses that bounded summary; appended bytes are validated from the saved offset. A missing, damaged, replaced, truncated, moved, or version-incompatible summary is rebuilt from the JSONL history. The summary is subject to the same privacy policy and never contains prompts, responses, raw commands, output, diffs, or file contents.

Saved spaces and privacy

watch --save NAME rewrites ~/.config/side-dog/spaces.toml. Keep hand-authored spaces in [spaces] in config.toml. Do not store secrets in session titles or paths. Side Dog keeps validated metadata including model/session identifiers, relative paths and issue/PR links, never prompts, responses, full command bodies, stdout/stderr, diffs or file contents. The browser panel is local and binds to 127.0.0.1.

State is disposable; deleting it removes recorded contribution history. Back up configuration separately. Malformed TOML falls back to defaults.