Skip to main content
Mount Airstore in cloud environments like Modal, E2B, Daytona, or any remote VM.

Token-based authentication

Generate a mount token for cloud use:
airstore token create --name="modal-sandbox"
Token created: ast_xxxxxxxxxxxxxxxxxxxx

Use this token to mount in cloud environments:
  airstore mount /airstore --token=ast_xxxxxxxxxxxxxxxxxxxx

Warning: Store this token securely. It cannot be retrieved later.

Mount in cloud

Use the token to mount without interactive login:
airstore mount /airstore --token=ast_xxxxxxxxxxxxxxxxxxxx

Platform examples

import modal

app = modal.App("airstore-agent")

@app.function(
    secrets=[modal.Secret.from_name("airstore-token")],
    image=modal.Image.debian_slim().run_commands([
        "curl -sSL https://airstore.dev/install.sh | sh",
        "apt-get update && apt-get install -y fuse3"
    ])
)
def run_agent():
    import subprocess
    import os
    
    # Mount Airstore
    subprocess.run([
        "airstore", "mount", "/airstore",
        f"--token={os.environ['AIRSTORE_TOKEN']}"
    ])
    
    # Run Claude Code
    subprocess.run(["claude", "Review the PRs"], cwd="/airstore")

E2B

import { Sandbox } from '@e2b/sdk';

const sandbox = await Sandbox.create();

// Install Airstore
await sandbox.process.start({
  cmd: 'curl -sSL https://airstore.dev/install.sh | sh'
});

// Mount with token
await sandbox.process.start({
  cmd: `airstore mount /airstore --token=${process.env.AIRSTORE_TOKEN}`
});

// Run agent
await sandbox.process.start({
  cmd: 'cd /airstore && claude "Analyze the emails"'
});

Daytona

# daytona.yaml
image: ubuntu:22.04
setup:
  - curl -sSL https://airstore.dev/install.sh | sh
  - apt-get update && apt-get install -y fuse3
  - airstore mount /airstore --token=$AIRSTORE_TOKEN

Docker

FROM ubuntu:22.04

# Install dependencies
RUN apt-get update && apt-get install -y \
    curl \
    fuse3 \
    && rm -rf /var/lib/apt/lists/*

# Install Airstore
RUN curl -sSL https://airstore.dev/install.sh | sh

# Mount script
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
#!/bin/bash
# entrypoint.sh

# Mount Airstore
airstore mount /airstore --token=$AIRSTORE_TOKEN

# Run your agent
exec "$@"
docker run -e AIRSTORE_TOKEN=ast_xxx --privileged myagent
Docker requires --privileged or --cap-add SYS_ADMIN --device /dev/fuse for FUSE mounts.

Token management

List tokens

airstore token list
Name              Created              Last used
modal-sandbox     2024-01-15 10:00    2024-01-15 14:30
e2b-dev           2024-01-10 09:00    2024-01-14 16:45

Revoke a token

airstore token revoke modal-sandbox

Token permissions

Create tokens with limited permissions:
# Read-only token
airstore token create --name="readonly" --readonly

# Specific sources only
airstore token create --name="gmail-only" --sources=gmail

# Time-limited token
airstore token create --name="temp" --expires="24h"

Shared filesystem

Multiple cloud instances can mount the same Airstore:
  • All instances see the same sources and smart folders
  • Changes sync across instances periodically
  • Each instance can have different token permissions

Environment variables

Set the token via environment variable:
export AIRSTORE_TOKEN=ast_xxxxxxxxxxxxxxxxxxxx
airstore mount /airstore
See Environment Variables for all options.

Next steps