{
  "schemaVersion": "1.0",
  "item": {
    "slug": "paperpod",
    "name": "PaperPod",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/shassingh09/paperpod",
    "canonicalUrl": "https://clawhub.ai/shassingh09/paperpod",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/paperpod",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=paperpod",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/shell-tools.md",
      "references/api-reference.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/paperpod"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/paperpod",
    "agentPageUrl": "https://openagent3.xyz/skills/paperpod/agent",
    "manifestUrl": "https://openagent3.xyz/skills/paperpod/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/paperpod/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "PaperPod",
        "body": "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."
      },
      {
        "title": "Quick Start",
        "body": "curl -X POST https://paperpod.dev/login -d '{\"email\":\"you@email.com\"}'  # Verify and get token\nnpm install -g @paperpod/cli\nppod login <token> && ppod help"
      },
      {
        "title": "Authentication",
        "body": "Step 1: Get a token\n\ncurl -X POST https://paperpod.dev/login -d '{\"email\":\"you@email.com\"}'\n# Check email → click magic link → copy token (pp_sess_...)\n\nStep 2: Use the token (pick one method)\n\nMethodHowBest forCLI loginppod login pp_sess_...Everyday, Interactive useEnv varexport PAPERPOD_TOKEN=pp_sess_...Scripts, CI/CDPer-request-H \"Authorization: Bearer pp_sess_...\"HTTP one-shots\n\nTokens expire in 15 days. On EXPIRED_TOKEN error, re-authenticate via POST /login."
      },
      {
        "title": "CLI (Recommended)",
        "body": "The CLI is the easiest way to use PaperPod. It handles streaming, sessions, and reconnection automatically."
      },
      {
        "title": "CLI Commands",
        "body": "CategoryCommandDescriptionSandboxppod exec <cmd>Run shell commandppod write <path> [file]Write file (stdin if no file)ppod read <path>Read fileppod ls <path>List directoryProcessesppod start <cmd>Start background processppod psList processesppod kill <id>Stop processPortsppod expose <port>Get public URL (-q for URL only)Browserppod browser:screenshot <url>Capture webpageppod browser:pdf <url>Generate PDFppod browser:scrape <url> [sel]Scrape elements (default: body)ppod browser:markdown <url>Extract markdownppod browser:content <url>Get rendered HTMLppod browser:test <url> '<json>'Run Playwright testsppod browser:acquireAcquire reusable sessionppod browser:connect <id>Connect to existing sessionppod browser:sessionsList active sessionsppod browser:limitsCheck browser limitsAIppod ai <prompt>Text generationppod ai:embed <text>Generate embeddingsppod ai:image <prompt>Generate imageppod ai:transcribe <audio>Transcribe audioppod ai:modelsList available AI modelsCodeppod interpret <code>Rich output (charts)Memoryppod mem:write <path>Persist datappod mem:read <path>Read persisted datappod mem:lsList memory filesppod mem:rm <path>Delete from memoryppod mem:usageCheck quotaAccountppod balanceCheck creditsppod statusConnection infoppod helpShow all commandsppod <cmd> --helpHelp for specific command\n\nUpdate CLI: npm update -g @paperpod/cli"
      },
      {
        "title": "CLI Examples",
        "body": "# Execute code\nppod exec \"python -c 'print(2+2)'\"\nppod exec \"npm init -y && npm install express\"\n# Start server + expose (--bind 0.0.0.0 required for public access)\nppod start \"python -m http.server 8080 --bind 0.0.0.0\"\nppod expose 8080  # → https://8080-{sandbox-id}-p8080_v1.paperpod.work (stable URL)\n# Browser with tracing\nppod browser:screenshot https://example.com --trace debug.zip\n# Persistent storage (survives sandbox reset)\necho '{\"step\":3}' | ppod mem:write state.json\n# Built-in tools (50+ available: ffmpeg, sqlite3, pandoc, imagemagick, git, jq, ripgrep...)\nppod exec \"ffmpeg -i input.mp4 -vf scale=640:480 output.mp4\"  # Video processing\nppod exec \"sqlite3 data.db 'SELECT * FROM users'\"             # Database queries\nppod exec \"convert image.png -resize 50% thumbnail.png\"       # Image manipulation"
      },
      {
        "title": "HTTP Endpoints",
        "body": "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."
      },
      {
        "title": "Quick Reference",
        "body": "EndpointPurposePOST /executeRun code (python, javascript, shell)POST /execute/streamStream output (SSE)POST /files/writeWrite filePOST /files/readRead filePOST /files/listList directoryPOST /process/startStart background processPOST /process/listList processesPOST /exposeGet preview URL for portPOST /memory/writePersist dataPOST /memory/readRead persisted dataPOST /browser/screenshotCapture screenshotPOST /browser/pdfGenerate PDFPOST /browser/markdownExtract markdownPOST /ai/generateText generationPOST /ai/embedEmbeddingsPOST /ai/imageImage generationGET /ai/modelsList models"
      },
      {
        "title": "HTTP Example",
        "body": "# Execute shell command\ncurl -X POST https://paperpod.dev/execute \\\n  -H \"Authorization: Bearer $PAPERPOD_TOKEN\" \\\n  -d '{\"code\": \"ls -la\", \"language\": \"shell\"}'"
      },
      {
        "title": "Capabilities",
        "body": "CategoryWhat you can doCode ExecutionPython, JavaScript, shell commandsProcessesBackground servers, long-running jobsPreview URLsExpose ports → https://8080-{sandbox-id}-p8080_v1.paperpod.workAgent Memory10MB persistent storage (R2)BrowserScreenshots, PDFs, scraping (Playwright)AI ModelsText, embeddings, images, transcriptionFilesRead/write, git, bulk operations"
      },
      {
        "title": "Pre-installed Tools (50+)",
        "body": "CategoryToolsRuntimespython, node, npm, bun, pipVersion Controlgit, gh (GitHub CLI)HTTP & Networkingcurl, httpie, jq, dig, ssSearch & Textripgrep (rg), find, sed, awk, treeMedia & Docsffmpeg, imagemagick, pandocBuild & Datamake, sqlite3, tar, gzip, zip, unzip"
      },
      {
        "title": "Key Notes",
        "body": "Sandboxes are isolated — each user gets their own container with a full Linux environment; you can only affect your own ephemeral sandbox\nSandbox is ephemeral — use Agent Memory (/memory/*) for persistence\nWorking directory is /workspace — relative paths like file.txt resolve to /workspace/file.txt\nServers must bind to 0.0.0.0 for public access\nPorts 3000-3010 are reserved — use 8080, 5000, 4000, etc.\nBrowser sessions — Each command creates an ephemeral session. Use browser:acquire for multi-command session reuse, --trace to capture Playwright traces"
      },
      {
        "title": "Billing",
        "body": "$0.0001/sec compute + browser, $0.02/1K neurons AI. New accounts get $5 free (~14 hours), no credit card required."
      },
      {
        "title": "Discovery",
        "body": "ppod help — CLI command reference\nGET https://paperpod.dev/ — API schema (JSON)\nGET https://paperpod.dev/docs — Full documentation"
      }
    ],
    "body": "PaperPod\n\nIsolated, 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.\n\nQuick Start\ncurl -X POST https://paperpod.dev/login -d '{\"email\":\"you@email.com\"}'  # Verify and get token\nnpm install -g @paperpod/cli\nppod login <token> && ppod help\n\nAuthentication\n\nStep 1: Get a token\n\ncurl -X POST https://paperpod.dev/login -d '{\"email\":\"you@email.com\"}'\n# Check email → click magic link → copy token (pp_sess_...)\n\n\nStep 2: Use the token (pick one method)\n\nMethod\tHow\tBest for\nCLI login\tppod login pp_sess_...\tEveryday, Interactive use\nEnv var\texport PAPERPOD_TOKEN=pp_sess_...\tScripts, CI/CD\nPer-request\t-H \"Authorization: Bearer pp_sess_...\"\tHTTP one-shots\n\nTokens expire in 15 days. On EXPIRED_TOKEN error, re-authenticate via POST /login.\n\nCLI (Recommended)\n\nThe CLI is the easiest way to use PaperPod. It handles streaming, sessions, and reconnection automatically.\n\nCLI Commands\nCategory\tCommand\tDescription\nSandbox\tppod exec <cmd>\tRun shell command\n\tppod write <path> [file]\tWrite file (stdin if no file)\n\tppod read <path>\tRead file\n\tppod ls <path>\tList directory\nProcesses\tppod start <cmd>\tStart background process\n\tppod ps\tList processes\n\tppod kill <id>\tStop process\nPorts\tppod expose <port>\tGet public URL (-q for URL only)\nBrowser\tppod browser:screenshot <url>\tCapture webpage\n\tppod browser:pdf <url>\tGenerate PDF\n\tppod browser:scrape <url> [sel]\tScrape elements (default: body)\n\tppod browser:markdown <url>\tExtract markdown\n\tppod browser:content <url>\tGet rendered HTML\n\tppod browser:test <url> '<json>'\tRun Playwright tests\n\tppod browser:acquire\tAcquire reusable session\n\tppod browser:connect <id>\tConnect to existing session\n\tppod browser:sessions\tList active sessions\n\tppod browser:limits\tCheck browser limits\nAI\tppod ai <prompt>\tText generation\n\tppod ai:embed <text>\tGenerate embeddings\n\tppod ai:image <prompt>\tGenerate image\n\tppod ai:transcribe <audio>\tTranscribe audio\n\tppod ai:models\tList available AI models\nCode\tppod interpret <code>\tRich output (charts)\nMemory\tppod mem:write <path>\tPersist data\n\tppod mem:read <path>\tRead persisted data\n\tppod mem:ls\tList memory files\n\tppod mem:rm <path>\tDelete from memory\n\tppod mem:usage\tCheck quota\nAccount\tppod balance\tCheck credits\n\tppod status\tConnection info\n\tppod help\tShow all commands\n\tppod <cmd> --help\tHelp for specific command\n\nUpdate CLI: npm update -g @paperpod/cli\n\nCLI Examples\n# Execute code\nppod exec \"python -c 'print(2+2)'\"\nppod exec \"npm init -y && npm install express\"\n# Start server + expose (--bind 0.0.0.0 required for public access)\nppod start \"python -m http.server 8080 --bind 0.0.0.0\"\nppod expose 8080  # → https://8080-{sandbox-id}-p8080_v1.paperpod.work (stable URL)\n# Browser with tracing\nppod browser:screenshot https://example.com --trace debug.zip\n# Persistent storage (survives sandbox reset)\necho '{\"step\":3}' | ppod mem:write state.json\n# Built-in tools (50+ available: ffmpeg, sqlite3, pandoc, imagemagick, git, jq, ripgrep...)\nppod exec \"ffmpeg -i input.mp4 -vf scale=640:480 output.mp4\"  # Video processing\nppod exec \"sqlite3 data.db 'SELECT * FROM users'\"             # Database queries\nppod exec \"convert image.png -resize 50% thumbnail.png\"       # Image manipulation\n\nHTTP Endpoints\n\nUse 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.\n\nQuick Reference\nEndpoint\tPurpose\nPOST /execute\tRun code (python, javascript, shell)\nPOST /execute/stream\tStream output (SSE)\nPOST /files/write\tWrite file\nPOST /files/read\tRead file\nPOST /files/list\tList directory\nPOST /process/start\tStart background process\nPOST /process/list\tList processes\nPOST /expose\tGet preview URL for port\nPOST /memory/write\tPersist data\nPOST /memory/read\tRead persisted data\nPOST /browser/screenshot\tCapture screenshot\nPOST /browser/pdf\tGenerate PDF\nPOST /browser/markdown\tExtract markdown\nPOST /ai/generate\tText generation\nPOST /ai/embed\tEmbeddings\nPOST /ai/image\tImage generation\nGET /ai/models\tList models\nHTTP Example\n# Execute shell command\ncurl -X POST https://paperpod.dev/execute \\\n  -H \"Authorization: Bearer $PAPERPOD_TOKEN\" \\\n  -d '{\"code\": \"ls -la\", \"language\": \"shell\"}'\n\nCapabilities\nCategory\tWhat you can do\nCode Execution\tPython, JavaScript, shell commands\nProcesses\tBackground servers, long-running jobs\nPreview URLs\tExpose ports → https://8080-{sandbox-id}-p8080_v1.paperpod.work\nAgent Memory\t10MB persistent storage (R2)\nBrowser\tScreenshots, PDFs, scraping (Playwright)\nAI Models\tText, embeddings, images, transcription\nFiles\tRead/write, git, bulk operations\nPre-installed Tools (50+)\nCategory\tTools\nRuntimes\tpython, node, npm, bun, pip\nVersion Control\tgit, gh (GitHub CLI)\nHTTP & Networking\tcurl, httpie, jq, dig, ss\nSearch & Text\tripgrep (rg), find, sed, awk, tree\nMedia & Docs\tffmpeg, imagemagick, pandoc\nBuild & Data\tmake, sqlite3, tar, gzip, zip, unzip\nKey Notes\nSandboxes are isolated — each user gets their own container with a full Linux environment; you can only affect your own ephemeral sandbox\nSandbox is ephemeral — use Agent Memory (/memory/*) for persistence\nWorking directory is /workspace — relative paths like file.txt resolve to /workspace/file.txt\nServers must bind to 0.0.0.0 for public access\nPorts 3000-3010 are reserved — use 8080, 5000, 4000, etc.\nBrowser sessions — Each command creates an ephemeral session. Use browser:acquire for multi-command session reuse, --trace to capture Playwright traces\nBilling\n\n$0.0001/sec compute + browser, $0.02/1K neurons AI. New accounts get $5 free (~14 hours), no credit card required.\n\nDiscovery\nppod help — CLI command reference\nGET https://paperpod.dev/ — API schema (JSON)\nGET https://paperpod.dev/docs — Full documentation\nAdvanced: WebSocket (not recommended for normal workflows). For programmatic integrations or custom apps, connect via WebSocket. GET https://paperpod.dev/docs to learn more."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/shassingh09/paperpod",
    "publisherUrl": "https://clawhub.ai/shassingh09/paperpod",
    "owner": "shassingh09",
    "version": "2.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/paperpod",
    "downloadUrl": "https://openagent3.xyz/downloads/paperpod",
    "agentUrl": "https://openagent3.xyz/skills/paperpod/agent",
    "manifestUrl": "https://openagent3.xyz/skills/paperpod/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/paperpod/agent.md"
  }
}