
Sandstorm
github.com/tomascupr/sandstorm- Category
- AI Agents
- Rank
- No. 661Tools index
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Agent Building · Workflow Automation
- Interfaces
- CLI · API · Client SDK
- Builder
- @tomascupr
- GitHub
- 448 stars
- Latest release
- v0.9.2
- Date
About
An open-source runtime for running Claude AI agents in secure, isolated cloud sandboxes. Provides CLI, API, Python client, and Slack integration for executing agent workflows that can crawl the web, process files, and generate artifacts like PDFs and reports.
What it does
Sandstorm turns each conversation thread into a resumable agent workspace. It streams model output, carries uploaded and generated files across messages, records run cost and timing, and can repeat a prior session with another model. Scheduled jobs, signed inbound webhooks, Slack reactions, and configurable MCP servers can start work without a person at the command line.
Why it's ranked here
The project combines deployment, conversation continuity, model choice, tracing, and operational checks into one coherent system. Its strongest case is team automation where Slack is the front door and infrastructure control matters. The verdict is tempered by an E2B-only runtime configuration, optional security controls that require explicit setup, and a TypeScript client that is source-only.
What's good
Thread sessions retain files, installed packages, model context, and sandbox identity across messages and server restarts. Replay preserves the original prompt and selected safe configuration while allowing a different model and budget. Preflight checks cover provider credentials, E2B access, optional Slack configuration, and telemetry reachability. OpenTelemetry export, streamed responses, starter workflows, and custom MCP configuration make the runtime practical to operate and extend.
Tradeoffs
E2B is the only accepted runtime provider in configuration, so the abstraction does not currently offer backend choice. API authentication is disabled when no server key is configured, and E2B webhook signature verification is disabled without its secret. Generated-file extraction stops after ten files, limits each file to 25 MB, and caps total extraction at 50 MB. The TypeScript client is not published to npm.
How to use it well
Use Sandstorm for internal agent workflows that need Slack threads, recurring or webhook-driven tasks, persistent working state, and traces sent to your own observability system. Start with a bundled workflow, run the credential checks, enable API and webhook secrets, then add only trusted MCP packages. It is less suitable when you need a choice of sandbox backends or a separately distributed TypeScript SDK.
Technical notes+
pyproject.toml defines a Python 3.11+ Hatch package with FastAPI, E2B, Click, SSE, optional Slack, client, and telemetry extras, plus ds and duvo-sandstorm console entries. src/sandstorm/main.py builds the FastAPI service, mounts SSE, health, run, trigger, Slack, and E2B webhook behavior, and initializes telemetry and authentication during lifespan. src/sandstorm/auth.py uses optional bearer authentication with constant-time comparison and previous-key rollover. src/sandstorm/files.py rejects parent traversal, uploads skills and inputs, and extracts bounded, non-hidden outputs as base64 events. src/sandstorm/store.py persists run transitions in JSONL, keeps a bounded in-memory index, compacts stale history, and whitelists replay configuration fields to avoid storing MCP or environment secrets. src/sandstorm/client.py provides the optional asynchronous SSE client.
Observed
- License
- MIT
- Primary language
- Python
- Python support
- Python 3.11 or newer
- Packaging
- Published as the duvo-sandstorm Python package with optional client, Slack, and telemetry extras
- Interfaces
- Command-line interface, FastAPI HTTP service with SSE, asynchronous Python client, Slack bot, and repo-local TypeScript client source
- Runtime support
- Configuration accepts E2B as the runtime provider
- Deployment surfaces
- Railway template, Docker, Docker Compose, pipx self-hosting, and Kubernetes or Fly deployment are documented
Read from README.md, pyproject.toml, src/sandstorm/cli.py, src/sandstorm/main.py, src/sandstorm/auth.py, src/sandstorm/files.py, src/sandstorm/slack.py, src/sandstorm/store.py, src/sandstorm/client.py, src/sandstorm/config.py, src/sandstorm/doctor.py.
What it can do
Execute AI agent workflows in isolated cloud sandboxes
Agent workflow configuration and requests → Workflow execution results in secure environment
Crawl and extract data from websites
URLs and crawling parameters → Extracted web content and data
Process and analyze uploaded files
Files of various formats → Processed file content and analysis results
Generate PDF documents and reports
Content data and formatting requirements → Generated PDF files and reports
Stream real-time API responses
API requests and streaming parameters → Real-time streamed data responses
Execute commands via CLI interface
Command-line arguments and parameters → Command execution results and status
Integrate with Slack for agent interactions
Slack messages and bot commands → Agent responses and workflow results in Slack
Configure agent behavior through JSON files
sandstorm.json configuration files → Configured agent runtime with specified behavior
Tags
Tech Stack
Media
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.