~/.sorat/. No external database is required.
Directory tree
File formats
sessions/index.json
sessions//messages.json
memory/facts.md
memory/soul.md
Free-form Markdown appended to the system prompt after the persona template.agent/persona.md
Go template with system instructions:skills//SKILL.md
cron/jobs.json
auth/credentials.json
OAuth tokens (file permissions0600):
logs/YYYY-MM-DD.log
Newline-delimited JSON (one entry per line):Initialization
On first run,~/.sorat/ is created with:
- Default
config.json - Empty
sessions/index.json([]) - Empty
memory/facts.mdandmemory/soul.md - Default
agent/persona.md(expanded from template) - Default
user.md(# User Profile) - All required subdirectories
Atomic writes
All file writes use the atomic pattern: write topath.tmp, then os.Rename(tmp, path). This prevents partial writes from corrupting data on crashes.