Skip to content

Filesystem Reference

Your agent’s persistent storage is mounted at /data. This reference documents all standard directories and files.

/data
├── MEMORY.md # Agent's persistent memory
├── config.json # Agent preferences (model, etc.)
├── skills/ # Custom per-agent skills
├── sessions/
│ └── {id}.jsonl # Conversation history files
├── outbox/
│ ├── email/ # Pending outgoing emails
│ ├── sent/ # Successfully sent emails
│ └── failed/ # Failed email attempts
└── events/
└── {name}/ # Scheduled event files

Your agent’s persistent memory. Read at the start of every turn on every channel.

Default contents:

# agentname — Agent Memory
## Identity
- Email: agentname@tinyfat.com
- Owner: you@example.com
## Email Response Pattern
To send an email, write a JSON file to /data/outbox/email/:
...
## Rules
[Default behavior rules]

Best practices:

  • Keep it focused — it’s read every turn
  • Use for persistent preferences and context
  • Don’t store large data here

Agent configuration and preferences:

{
"model": "sonnet"
}

Fields:

  • model — Claude model to use (haiku, sonnet, opus)

Default model is claude-sonnet-4-6. Change via /model command or ask your agent.

/data/sessions/ contains conversation history files.

JSONL (JSON Lines) format, one entry per line:

{"role":"user","content":"Hello!","timestamp":"2026-01-04T12:00:00Z"}
{"role":"assistant","content":"Hi! How can I help?","timestamp":"2026-01-04T12:00:05Z"}

Each session has:

  • ID — Full UUID (e.g., a1b2c3d4-e5f6-7890-abcd-ef1234567890)
  • Hash — First 4 characters (e.g., a1b2)

Use the hash with /resume a1b2 to continue a session.

Send /resume (no argument) to get a list of recent sessions.

/data/outbox/ is where your agent writes outgoing emails.

Pending emails waiting to be sent. Agent writes JSON files here:

{
"to": ["recipient@example.com"],
"cc": ["cc@example.com"],
"subject": "Email subject",
"body": "Email body text",
"in_reply_to": "<message-id@example.com>",
"references": "<msg1@example.com>",
"attachments": [
{
"filename": "report.pdf",
"content": "base64-encoded-content"
}
],
"status": "pending"
}

Successfully sent emails are moved here with metadata:

{
...original fields...,
"status": "sent",
"sent_at": "2026-01-04T12:00:00Z",
"resend_id": "abc123"
}

Emails that couldn’t be sent after retries:

{
...original fields...,
"status": "failed",
"error": "Error message",
"failed_at": "2026-01-04T12:00:00Z"
}

/data/events/ stores scheduled event files. Your agent can create events that fire on a cron-like schedule. The platform wakes the container at the right time, even if it’s asleep.

/data/skills/ is for custom per-agent skills. Files here override system skills of the same name.

Three-tier priority:

  1. System skills (/opt/fat-skills/) — lowest
  2. Workspace skills (/data/skills/) — middle
  3. Channel-specific skills — highest

Besides /data, the container has:

PathPurpose
/opt/fat-skillsPlatform skills (browser-tools, gh-login, pdf-gen)
/opt/troublemakerAgent runtime (troublemaker)

Available in the container:

ToolCommandNotes
GitgitVersion control
HTTPcurl, wgetNetwork requests
JSONjqJSON processing
YAMLyqYAML processing
Searchrg (ripgrep)Fast text search
FindfdfindFast file finding
TreetreeDirectory visualization
SQLitesqlite3Database
PostgreSQLpsqlDatabase client
Pythonpython3, uvPython + package manager
Nodenode, npmJavaScript runtime
GitHubghGitHub CLI
Browserbrowser-nav.js, browser-screenshot.js, browser-eval.jsHeadless Chrome

Ask your agent: “Show me the contents of /data/MEMORY.md”

File browser coming soon.

Contact support for R2 data export.