Skip to main content

Documentation Index

Fetch the complete documentation index at: https://supermemory.ai/docs/llms.txt

Use this file to discover all available pages before exploring further.

Mount a Supermemory container inside a Daytona sandbox so your agent can read and write memory using standard filesystem commands.
Daytona sandboxes currently cannot reach api.supermemory.ai from their datacenter IPs. The SMFS binary still installs (we download it directly from GitHub Releases), the FUSE mount still starts, and pip install claude-agent-sdk still works — but the runtime sync to Supermemory fails. We’re working with Daytona to resolve this. In the meantime, use E2B or a self-hosted mount.

How it works

There are two ways to wire SMFS into a Daytona sandbox — pick the one that fits your architecture.

Agent inside the sandbox

The agent process runs inside the sandbox and accesses the SMFS mount directly.

Agent outside the sandbox

The agent runs in your orchestrating code and executes commands inside the sandbox remotely.

Prerequisites


Install SMFS in a Daytona sandbox

Both patterns below run the same setup snippet inside the sandbox before mounting. Daytona can’t reach smfs.ai, so we download the binary directly from GitHub Releases and add ~/.local/bin to PATH.
SMFS_INSTALL = (
    "mkdir -p $HOME/.local/bin && "
    "curl -sL https://github.com/supermemoryai/smfs/releases/download/"
    "v0.0.1-rc2/smfs-linux-x64 -o $HOME/.local/bin/smfs && "
    "chmod +x $HOME/.local/bin/smfs && "
    "echo 'user_allow_other' | sudo tee -a /etc/fuse.conf > /dev/null && "
    "pip install claude-agent-sdk"
)

Pattern A: Agent inside the sandbox

Agent code

agent.py
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions

MEMORY = "/home/daytona/memory"

async def main():
    async for message in query(
        prompt=f"You have a persistent memory filesystem at {MEMORY}. "
               "Read profile.md to learn about the user, then create "
               "session_notes.md summarizing what you found.",
        options=ClaudeAgentOptions(
            allowed_tools=["Bash", "Read", "Write"],
            cwd=MEMORY,
        ),
    ):
        print(message)

asyncio.run(main())

Orchestration

run.py
import os
from pathlib import Path
from daytona_sdk import Daytona, DaytonaConfig

daytona = Daytona(DaytonaConfig(
    api_key=os.environ["DAYTONA_API_KEY"],
))
sandbox = daytona.create(
    env_vars={
        "SUPERMEMORY_API_KEY": os.environ["SUPERMEMORY_API_KEY"],
        "ANTHROPIC_API_KEY": os.environ["ANTHROPIC_API_KEY"],
    },
)

# See "Install SMFS in a Daytona sandbox" above
sandbox.process.exec(SMFS_INSTALL)

# Mount memory
sandbox.process.exec("$HOME/.local/bin/smfs login --key $SUPERMEMORY_API_KEY")
sandbox.process.exec(
    "bash -c '$HOME/.local/bin/smfs mount my_agent --ephemeral"
    " --path /home/daytona/memory --foreground &' && sleep 3"
)

# Upload and run the agent
sandbox.fs.upload_file(Path("agent.py").read_bytes(), "agent.py")
result = sandbox.process.exec("python3 agent.py")
print(result.result)

daytona.delete(sandbox)

Pattern B: Agent outside the sandbox

The agent runs in your server process and executes commands inside the sandbox remotely via sandbox.process.exec().
run.py
import os
from daytona_sdk import Daytona, DaytonaConfig

daytona = Daytona(DaytonaConfig(
    api_key=os.environ["DAYTONA_API_KEY"],
))
sandbox = daytona.create(
    env_vars={
        "SUPERMEMORY_API_KEY": os.environ["SUPERMEMORY_API_KEY"],
    },
)

# See "Install SMFS in a Daytona sandbox" above
sandbox.process.exec(SMFS_INSTALL)
sandbox.process.exec("$HOME/.local/bin/smfs login --key $SUPERMEMORY_API_KEY")
sandbox.process.exec(
    "bash -c '$HOME/.local/bin/smfs mount my_agent --ephemeral"
    " --path /home/daytona/memory --foreground &' && sleep 3"
)

# Agent runs here — executes commands in the sandbox
profile = sandbox.process.exec("cat /home/daytona/memory/profile.md")
print("Profile:", profile.result)

sandbox.process.exec(
    "bash -c 'echo \"Session started at $(date)\" > /home/daytona/memory/session_notes.md'"
)

files = sandbox.process.exec("ls /home/daytona/memory")
print("Files:", files.result)

daytona.delete(sandbox)

Tips

  • FUSE is available in Daytona sandboxes but user_allow_other needs to be added to /etc/fuse.conf
  • We invoke SMFS as $HOME/.local/bin/smfs in the examples because Daytona’s default zsh PATH doesn’t include ~/.local/bin. Alternatively, prepend it once with export PATH=$HOME/.local/bin:$PATH
  • Use pip install claude-agent-sdk to install the agent SDK (PyPI is reachable)