Problem
The daemon currently stores all durable state (SQLite DB, WAL, worktrees, run file) under the platform-default os.UserConfigDir() path, which on macOS expands to:
~/Library/Application Support/agent-orchestrator/
This is buried, hard to find for debugging, and inconsistent with the CLI-tool convention of keeping state in a visible dotdir.
Proposed change
Move the default root to ~/.ao/, so the layout becomes:
| Path |
Purpose |
~/.ao/data/ |
SQLite DB + WAL (AO_DATA_DIR default) |
~/.ao/running.json |
Daemon PID/port handshake (AO_RUN_FILE default) |
~/.ao/worktrees/<project>/<session>/ |
Per-session git worktrees |
AO_DATA_DIR and AO_RUN_FILE env overrides remain unchanged — only the fallback changes.
Affected code
backend/internal/config/config.go — resolveDataDir() (line ~202) and resolveRunFilePath() (line ~192): replace os.UserConfigDir() + "agent-orchestrator/..." with os.UserHomeDir() + ".ao/...".
Notes
- Existing installs will lose their data on upgrade unless they set
AO_DATA_DIR explicitly or migrate manually — worth a note in the release.
- Cross-platform:
~/.ao/ works fine on macOS, Linux, and Windows (WSL). Native Windows (AppData) is a separate discussion.
Problem
The daemon currently stores all durable state (SQLite DB, WAL, worktrees, run file) under the platform-default
os.UserConfigDir()path, which on macOS expands to:This is buried, hard to find for debugging, and inconsistent with the CLI-tool convention of keeping state in a visible dotdir.
Proposed change
Move the default root to
~/.ao/, so the layout becomes:~/.ao/data/AO_DATA_DIRdefault)~/.ao/running.jsonAO_RUN_FILEdefault)~/.ao/worktrees/<project>/<session>/AO_DATA_DIRandAO_RUN_FILEenv overrides remain unchanged — only the fallback changes.Affected code
backend/internal/config/config.go—resolveDataDir()(line ~202) andresolveRunFilePath()(line ~192): replaceos.UserConfigDir()+"agent-orchestrator/..."withos.UserHomeDir()+".ao/...".Notes
AO_DATA_DIRexplicitly or migrate manually — worth a note in the release.~/.ao/works fine on macOS, Linux, and Windows (WSL). Native Windows (AppData) is a separate discussion.