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.)
├── sessions/
│ └── {id}.jsonl # Conversation history files
├── outbox/
│ ├── email/ # Pending outgoing emails
│ ├── sent/ # Successfully sent emails
│ └── failed/ # Failed email attempts
└── events/
└── {timestamp}.jsonl # Run events for dashboard

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

Default contents:

# Agent Memory
## Identity
- Name: {agent_name}
- Email: {agent_email}
- Owner: {owner_email}
## Outbox Instructions
To send an email, write a JSON file to /data/outbox/email/:
...
## Notes
[Your custom notes and instructions]

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": "haiku"
}

Fields:

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

Changed via /model email command.

/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:

**Recent Sessions**
• `a1b2` (Jan 4, 2026 12:00 PM) - Hello! How can I help...
• `c3d4` (Jan 3, 2026 3:30 PM) - Can you analyze this...
Reply with `/resume <hash>` to continue a session.

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

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

{
"to": ["[email protected]"],
"cc": ["[email protected]"],
"subject": "Email subject",
"body": "Email body text",
"in_reply_to": "<[email protected]>",
"references": "<[email protected]>",
"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 real-time events from agent runs. Used by the dashboard for live updates.

JSONL files named by timestamp:

{"type":"start","timestamp":"2026-01-04T12:00:00Z","runId":"..."}
{"type":"tool_call","name":"bash","args":{"command":"ls"},"timestamp":"..."}
{"type":"tool_result","output":"file1.txt\nfile2.txt","timestamp":"..."}
{"type":"text","content":"Here are the files...","timestamp":"..."}
{"type":"end","usage":{"input":100,"output":50},"timestamp":"..."}

Besides /data, the container has:

PathPurpose
/inboxInput from platform (input.json, attachments)
/outboxContainer-level outbox (deprecated, use /data/outbox)
/opt/skillsPre-installed skill documentation
/workspaceAdditional working directory

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

Currently unlimited during launch. Future limits:

  • Free tier: TBD
  • Tiny tier: TBD

Outbox files are automatically cleaned up after processing.

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

File browser coming soon.

Contact support for R2 data export.