| name | paperpod |
| description | Isolated agent runtime for code execution, live preview URLs, browser automation, 50+ tools (ffmpeg, sqlite, pandoc, imagemagick), LLM inference, and persistent memory — all via CLI or HTTP, no SDK or API keys required. |
| metadata | {"author":"PaperPod","version":"2.0.3","homepage":"https://paperpod.dev"} |
PaperPod
Isolated, agent-native sandboxes for code execution, live preview URLs, browser automation, 50+ tools (ffmpeg, sqlite, pandoc, imagemagick), LLM inference, and persistent memory — all via CLI or HTTP, no SDK or API keys required. Billed per second of compute usage and topup via stripe or x402.
Quick Start
curl -X POST https://paperpod.dev/login -d '{"email":"you@email.com"}'
npm install -g @paperpod/cli
ppod login <token> && ppod help
Authentication
Step 1: Get a token
curl -X POST https://paperpod.dev/login -d '{"email":"you@email.com"}'
Step 2: Use the token (pick one method)
| Method | How | Best for |
|---|
| CLI login | ppod login pp_sess_... | Everyday, Interactive use |
| Env var | export PAPERPOD_TOKEN=pp_sess_... | Scripts, CI/CD |
| Per-request | -H "Authorization: Bearer pp_sess_..." | HTTP one-shots |
Tokens expire in 15 days. On EXPIRED_TOKEN error, re-authenticate via POST /login.
CLI (Recommended)
The CLI is the easiest way to use PaperPod. It handles streaming, sessions, and reconnection automatically.
CLI Commands
| Category | Command | Description |
|---|
| Sandbox | ppod exec <cmd> | Run shell command |
| ppod write <path> [file] | Write file (stdin if no file) |
| ppod read <path> | Read file |
| ppod ls <path> | List directory |
| Processes | ppod start <cmd> | Start background process |
| ppod ps | List processes |
| ppod kill <id> | Stop process |
| Ports | ppod expose <port> | Get public URL (-q for URL only) |
| Browser | ppod browser:screenshot <url> | Capture webpage |
| ppod browser:pdf <url> | Generate PDF |
| ppod browser:scrape <url> [sel] | Scrape elements (default: body) |
| ppod browser:markdown <url> | Extract markdown |
| ppod browser:content <url> | Get rendered HTML |
| ppod browser:test <url> '<json>' | Run Playwright tests |
| ppod browser:acquire | Acquire reusable session |
| ppod browser:connect <id> | Connect to existing session |
| ppod browser:sessions | List active sessions |
| ppod browser:limits | Check browser limits |
| AI | ppod ai <prompt> | Text generation |
| ppod ai:embed <text> | Generate embeddings |
|
Update CLI: npm update -g @paperpod/cli
CLI Examples
ppod exec "python -c 'print(2+2)'"
ppod exec "npm init -y && npm install express"
ppod start "python -m http.server 8080 --bind 0.0.0.0"
ppod expose 8080
ppod browser:screenshot https://example.com --trace debug.zip
echo '{"step":3}' | ppod mem:write state.json
ppod exec "ffmpeg -i input.mp4 -vf scale=640:480 output.mp4"
ppod exec "sqlite3 data.db 'SELECT * FROM users'"
ppod exec "convert image.png -resize 50% thumbnail.png"
HTTP Endpoints
Use HTTP for one-shot tasks or when CLI isn't available. Run curl https://paperpod.dev/docs or visit https://paperpod.dev/docs for full API reference.
Quick Reference
| Endpoint | Purpose |
|---|
POST /execute | Run code (python, javascript, shell) |
POST /execute/stream | Stream output (SSE) |
POST /files/write | Write file |
POST /files/read | Read file |
POST /files/list | List directory |
POST /process/start | Start background process |
POST /process/list | List processes |
POST /expose | Get preview URL for port |
POST /memory/write | Persist data |
POST /memory/read | Read persisted data |
POST /browser/screenshot | Capture screenshot |
POST /browser/pdf | Generate PDF |
POST /browser/markdown | Extract markdown |
POST /ai/generate | Text generation |
POST /ai/embed | Embeddings |
POST /ai/image | Image generation |
GET /ai/models | List models |
HTTP Example
curl -X POST https://paperpod.dev/execute \
-H "Authorization: Bearer $PAPERPOD_TOKEN" \
-d '{"code": "ls -la", "language": "shell"}'
Capabilities
| Category | What you can do |
|---|
| Code Execution | Python, JavaScript, shell commands |
| Processes | Background servers, long-running jobs |
| Preview URLs | Expose ports → https://8080-{sandbox-id}-p8080_v1.paperpod.work |
| Agent Memory | 10MB persistent storage (R2) |
| Browser | Screenshots, PDFs, scraping (Playwright) |
| AI Models | Text, embeddings, images, transcription |
| Files | Read/write, git, bulk operations |
Pre-installed Tools (50+)
| Category | Tools |
|---|
| Runtimes | python, node, npm, bun, pip |
| Version Control | git, gh (GitHub CLI) |
| HTTP & Networking | curl, httpie, jq, dig, ss |
| Search & Text | ripgrep (rg), find, sed, awk, tree |
| Media & Docs | ffmpeg, imagemagick, pandoc |
| Build & Data | make, sqlite3, tar, gzip, zip, unzip |
Key Notes
- Sandboxes are isolated — each user gets their own container with a full Linux environment; you can only affect your own ephemeral sandbox
- Sandbox is ephemeral — use Agent Memory (
/memory/*) for persistence
- Working directory is
/workspace — relative paths like file.txt resolve to /workspace/file.txt
- Servers must bind to
0.0.0.0 for public access
- Ports 3000-3010 are reserved — use 8080, 5000, 4000, etc.
- Browser sessions — Each command creates an ephemeral session. Use
browser:acquire for multi-command session reuse, --trace to capture Playwright traces
Billing
$0.0001/sec compute + browser, $0.02/1K neurons AI. New accounts get $5 free (~14 hours), no credit card required.
Discovery
ppod help — CLI command reference
GET https://paperpod.dev/ — API schema (JSON)
GET https://paperpod.dev/docs — Full documentation
Advanced: WebSocket (not recommended for normal workflows). For programmatic integrations or custom apps, connect via WebSocket. GET https://paperpod.dev/docs to learn more.