dobbe stores all configuration and state in ~/.dobbe/.
| Path | Purpose |
|---|---|
~/.dobbe/config.toml |
User configuration |
~/.dobbe/schedules.toml |
Scheduled task definitions |
~/.dobbe/state.toml |
Persistent state |
~/.dobbe/logs/schedules/{name}/ |
Per-schedule JSON run logs |
~/.dobbe/locks/{name}.lock/ |
Directory-based schedule locks |
~/.dobbe/workflows.toml |
Workflow definitions |
~/.dobbe/sessions/ |
Session continuity data |
~/.dobbe/transcripts/ |
Vuln resolve transcripts |
~/.claude/skills/dobbe-*/ |
Installed skills |
[general]
# Default GitHub organization (used when --org is not specified)
# Type: string
# Default: ""
default_org = "nareshnavinash"
# Default output format for all commands
# Type: string (one of: "table", "json", "markdown")
# Default: "table"
default_format = "table"
# Default severity filter for vulnerability commands
# Type: string (comma-separated: "critical", "high", "medium", "low")
# Default: "critical,high"
default_severity = "critical,high"
[notifications]
# Default Slack channel for --notify slack
# Type: string
# Default: ""
slack_channel = "#security-alerts"
[repos]
# Local repository paths for faster scanning (avoids cloning)
# Type: array of strings (absolute paths, ~ expansion supported)
# Default: []
local_paths = [
"~/projects/api",
"~/projects/web",
"~/projects/mobile",
]
[review]
# Repositories to include in review commands when --org is not specified
# Type: array of strings (org/repo format)
# Default: []
watch_repos = [
"acme/web-app",
"nareshnavinash/web",
]
# GitHub usernames to filter PRs by (default: current user)
# Type: array of strings
# Default: ["@me"]
reviewers = ["@me"]
# Days before a PR is flagged as stale
# Type: integer
# Default: 7
stale_days = 7
# Labels to skip when scanning PRs
# Type: array of strings
# Default: []
skip_labels = ["wip", "do-not-review"]
# Authors to skip when scanning PRs
# Type: array of strings
# Default: []
skip_authors = ["dependabot", "renovate"]
# Maximum diff lines to include in PR analysis
# Type: integer
# Default: 2000
max_diff_lines = 2000
# Codebase context cache TTL in days
# Type: integer
# Default: 7
context_ttl_days = 7
[tools]
# Extra MCP tool prefixes to allow (beyond the built-in set)
# Type: array of strings
# Default: []
extra_allowed = [
"mcp__my_server__",
]
[timeouts]
# Claude subprocess timeout in seconds
# Type: integer
# Default: 300
claude = 300
# Git command timeout in seconds
# Type: integer
# Default: 60
git = 60
# Repository clone timeout in seconds
# Type: integer
# Default: 120
clone = 120
| Variable | Effect |
|---|---|
NO_COLOR |
Disable colored output (any value) |
DOBBE_QUIET |
Set to "1" to suppress all progress output |
CI |
Detected for CI environment behavior |
DOBBE_ORG |
Default organization (used by metrics, insight) |
DOBBE_FORMAT |
Default output format (used by vuln, review, metrics, scan) |
DOBBE_SEVERITY |
Default severity filter (used by vuln) |
DOBBE_TIMEOUT_CLAUDE |
Claude subprocess timeout in seconds |
Managed by dobbe schedule commands. Manual editing is supported but not recommended.
[daily-scan]
command = "vuln scan"
args = "--org nareshnavinash --notify slack --channel #security"
interval = "daily"
enabled = true
last_run = "2026-03-20T09:00:00"
created_at = "2026-03-01T10:30:00"
[weekly-review]
command = "review digest"
args = "--org nareshnavinash --format markdown --output ~/reports/review.md"
interval = "weekly"
enabled = true
last_run = "2026-03-17T08:00:00"
created_at = "2026-03-01T10:35:00"
| Field | Type | Description |
|---|---|---|
command |
str |
dobbe command (e.g., "vuln scan", "review digest") |
args |
str |
Command arguments |
interval |
str |
hourly, every_4h, every_12h, daily, weekly |
enabled |
bool |
Whether the schedule is active |
last_run |
str |
ISO 8601 datetime of last execution |
created_at |
str |
ISO 8601 datetime of creation |
Resolution order (highest priority first):
CLI flag > envvar > config.toml value > built-in default
For example:
--format json overrides everything, including DOBBE_FORMAT and default_format in configDOBBE_SEVERITY=critical overrides default_severity = "critical,high" in configDOBBE_ORG=myorg is used when --org is not passed and default_org is unset