{"id":33509997,"url":"https://github.com/computesdk/computesdk","last_synced_at":"2026-05-21T23:11:17.282Z","repository":{"id":303712812,"uuid":"1016281868","full_name":"computesdk/computesdk","owner":"computesdk","description":"A free and open-source toolkit for running other people's code in your applications.","archived":false,"fork":false,"pushed_at":"2026-04-10T20:09:14.000Z","size":5816,"stargazers_count":155,"open_issues_count":22,"forks_count":27,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-10T20:26:03.066Z","etag":null,"topics":["agent","ai","ai-runtime","ai-sandboxes","code-execution","development","javascript","python","react","sandbox","typescript"],"latest_commit_sha":null,"homepage":"https://computesdk.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/computesdk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-08T19:07:12.000Z","updated_at":"2026-04-10T20:08:30.000Z","dependencies_parsed_at":"2026-04-01T19:02:06.100Z","dependency_job_id":null,"html_url":"https://github.com/computesdk/computesdk","commit_stats":null,"previous_names":["computesdk/computesdk"],"tags_count":1310,"template":false,"template_full_name":null,"purl":"pkg:github/computesdk/computesdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/computesdk%2Fcomputesdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/computesdk%2Fcomputesdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/computesdk%2Fcomputesdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/computesdk%2Fcomputesdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/computesdk","download_url":"https://codeload.github.com/computesdk/computesdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/computesdk%2Fcomputesdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31810846,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"ssl_error","status_checked_at":"2026-04-14T18:05:01.765Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","ai","ai-runtime","ai-sandboxes","code-execution","development","javascript","python","react","sandbox","typescript"],"created_at":"2025-11-26T04:02:25.528Z","updated_at":"2026-05-19T19:01:54.318Z","avatar_url":"https://github.com/computesdk.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://www.computesdk.com/_astro/hv_main_logo_light.CpYMD9-V.svg\" alt=\"ComputeSDK\" width=\"300\" /\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cstrong\u003eA unified SDK for running code in remote sandboxes.\u003c/strong\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![npm version](https://badge.fury.io/js/computesdk.svg)](https://badge.fury.io/js/computesdk)\n[![TypeScript](https://img.shields.io/badge/TypeScript-100%25-blue.svg)](https://www.typescriptlang.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Documentation](https://img.shields.io/badge/docs-computesdk.com-blue)](https://computesdk.com)\n\n\u003c/div\u003e\n\n---\n\n## What is ComputeSDK?\n\nComputeSDK provides a consistent TypeScript interface for executing code in remote sandboxes. Whether you're using E2B for data science, Modal for GPU workloads, or Vercel for serverless functions - ComputeSDK provides one unified API.\n\n**Perfect for:**\n- 🤖 AI code execution agents\n- 📊 Data science platforms\n- 🎓 Educational coding environments\n- 🧪 Testing \u0026 CI/CD systems\n- 🔧 Developer tools\n\n## Quick Start\n\n```bash\nnpm install computesdk @computesdk/e2b\n```\n\nConfigure a provider and use the SDK:\n\n```typescript\nimport { compute } from 'computesdk';\nimport { e2b } from '@computesdk/e2b';\n\ncompute.setConfig({\n  provider: e2b({ apiKey: process.env.E2B_API_KEY }),\n});\n\nconst sandbox = await compute.sandbox.create();\n\nconst result = await sandbox.runCommand('python -c \"print(\\'Hello World!\\')\"');\nconsole.log(result.stdout); // \"Hello World!\"\n\nawait sandbox.destroy();\n```\n\n## Features\n\n- 🔄 **Multi-provider support** - E2B, Modal, Daytona, Vercel, and more\n- 📁 **Filesystem operations** - Read, write, create directories across providers\n- 🖥️ **Command execution** - Run shell commands in sandboxes\n- 🧵 **Terminals** - Interactive (PTY) and exec-mode command tracking\n- 🛡️ **Type-safe** - Full TypeScript support with comprehensive error handling\n- 🔧 **Extensible** - Easy to add custom providers via [@computesdk/provider](./packages/provider)\n\n## Supported Providers\n\nInstall provider packages and pass instances into `compute.setConfig`:\n\n| Provider | Environment Variables | Use Cases |\n|----------|----------------------|-----------|\n| **E2B** | `E2B_API_KEY` | Data science, Python/Node.js, interactive terminals |\n| **Modal** | `MODAL_TOKEN_ID`, `MODAL_TOKEN_SECRET` | GPU computing, ML inference |\n| **Daytona** | `DAYTONA_API_KEY` | Development workspaces |\n| **Runloop** | `RUNLOOP_API_KEY` | Code execution, automation |\n| **Vercel** | `VERCEL_TOKEN` or `VERCEL_OIDC_TOKEN` | Serverless functions |\n| **Cloudflare** | `CLOUDFLARE_SANDBOX_URL`, `CLOUDFLARE_SANDBOX_SECRET` | Edge computing |\n| **CodeSandbox** | `CSB_API_KEY` | Collaborative development |\n| **Tensorlake** | `TENSORLAKE_API_KEY` | Stateful MicroVM sandboxes |\n\n## Configuration\n\n### Direct Provider Mode\n\nPass a provider instance directly to `setConfig()`:\n\n```typescript\nimport { compute } from 'computesdk';\nimport { e2b } from '@computesdk/e2b';\n\ncompute.setConfig({\n  provider: e2b({ apiKey: process.env.E2B_API_KEY }),\n});\n\nconst sandbox = await compute.sandbox.create();\n```\n\n### Multi-Provider Configuration\n\nConfigure multiple providers for resilience and routing:\n\n```typescript\nimport { compute } from 'computesdk';\nimport { e2b } from '@computesdk/e2b';\nimport { modal } from '@computesdk/modal';\n\ncompute.setConfig({\n  providers: [\n    e2b({ apiKey: process.env.E2B_API_KEY }),\n    modal({\n      tokenId: process.env.MODAL_TOKEN_ID,\n      tokenSecret: process.env.MODAL_TOKEN_SECRET,\n    }),\n  ],\n  providerStrategy: 'priority', // or 'round-robin'\n  fallbackOnError: true,\n});\n\n// Uses configured strategy\nconst sandbox = await compute.sandbox.create();\n\n// Force a specific provider for one call\nconst modalSandbox = await compute.sandbox.create({ provider: 'modal' });\n```\n\n### Switching Providers at Runtime\n\n```typescript\nimport { compute } from 'computesdk';\nimport { e2b } from '@computesdk/e2b';\nimport { modal } from '@computesdk/modal';\n\n// Use E2B for data science\ncompute.setConfig({\n  provider: e2b({ apiKey: process.env.E2B_API_KEY }),\n});\n\nconst e2bSandbox = await compute.sandbox.create();\nawait e2bSandbox.runCommand('python -c \"import pandas as pd\"');\nawait e2bSandbox.destroy();\n\n// Switch to Modal for GPU workloads\ncompute.setConfig({\n  provider: modal({\n    tokenId: process.env.MODAL_TOKEN_ID,\n    tokenSecret: process.env.MODAL_TOKEN_SECRET,\n  }),\n});\n\nconst modalSandbox = await compute.sandbox.create();\nawait modalSandbox.runCommand('python -c \"import torch; print(torch.cuda.is_available())\"');\nawait modalSandbox.destroy();\n```\n\n## Core API\n\n### Sandbox Management\n\n```typescript\n// Create sandbox\nconst sandbox = await compute.sandbox.create();\n\n// Create with options\nconst sandbox = await compute.sandbox.create({\n  runtime: 'python',\n  timeout: 300000,\n  metadata: { userId: '123' }\n});\n\n// Get existing sandbox\nconst sandbox = await compute.sandbox.getById('sandbox-id');\n\n// List sandboxes\nconst sandboxes = await compute.sandbox.list();\n\n// Destroy sandbox\nawait sandbox.destroy();\n```\n\n### Command Execution\n\n```typescript\n// Execute Python code\nconst result = await sandbox.runCommand('python -c \"print(\\'Hello\\')\"');\nconsole.log(result.stdout);\nconsole.log(result.exitCode);\n\n// Run shell commands\nconst cmd = await sandbox.runCommand('npm install express');\nconsole.log(cmd.stdout);\nconsole.log(cmd.exitCode);\n```\n\n### Filesystem Operations\n\n```typescript\n// Write file\nawait sandbox.filesystem.writeFile('/tmp/hello.py', 'print(\"Hello\")');\n\n// Read file\nconst content = await sandbox.filesystem.readFile('/tmp/hello.py');\n\n// Create directory\nawait sandbox.filesystem.mkdir('/tmp/data');\n\n// List directory\nconst files = await sandbox.filesystem.readdir('/tmp');\n\n// Check if exists\nconst exists = await sandbox.filesystem.exists('/tmp/hello.py');\n\n// Remove\nawait sandbox.filesystem.remove('/tmp/hello.py');\n```\n\n## Example: Data Science Workflow\n\n```typescript\nimport { compute } from 'computesdk';\n\nconst sandbox = await compute.sandbox.create({ runtime: 'python' });\n\n// Create project structure\nawait sandbox.filesystem.mkdir('/analysis');\nawait sandbox.filesystem.mkdir('/analysis/data');\n\n// Write input data\nconst csvData = `name,age,city\nAlice,25,New York\nBob,30,San Francisco`;\n\nawait sandbox.filesystem.writeFile('/analysis/data/people.csv', csvData);\n\n// Write the analysis script\nawait sandbox.filesystem.writeFile('/analysis/analyze.py', `\nimport json\nimport pandas as pd\n\ndf = pd.read_csv('/analysis/data/people.csv')\nprint(f\"Average age: {df['age'].mean()}\")\n\nresults = {'average_age': df['age'].mean()}\nwith open('/analysis/results.json', 'w') as f:\n    json.dump(results, f)\n`);\n\n// Run it\nconst result = await sandbox.runCommand('python /analysis/analyze.py');\nconsole.log(result.stdout);\n\n// Read results\nconst results = await sandbox.filesystem.readFile('/analysis/results.json');\nconsole.log('Results:', JSON.parse(results));\n\nawait sandbox.destroy();\n```\n\n## Provider Packages\n\nInstall the provider packages you need and pass their instances into `compute.setConfig`:\n\n```bash\nnpm install @computesdk/e2b        # E2B provider\nnpm install @computesdk/modal      # Modal provider\nnpm install @computesdk/daytona    # Daytona provider\nnpm install @computesdk/vercel     # Vercel provider\nnpm install @computesdk/tensorlake # Tensorlake provider\nnpm install @computesdk/just-bash  # Local bash sandbox (no auth needed)\n```\n\nYou can also use a provider's callable form directly, bypassing `compute.setConfig`:\n\n```typescript\nimport { e2b } from '@computesdk/e2b';\n\nconst e2bCompute = e2b({ apiKey: process.env.E2B_API_KEY });\nconst sandbox = await e2bCompute.sandbox.create();\n```\n\nSee individual provider READMEs for details:\n- **[@computesdk/e2b](./packages/e2b)** - Data science, Python/Node.js, terminals\n- **[@computesdk/modal](./packages/modal)** - GPU computing, ML inference\n- **[@computesdk/daytona](./packages/daytona)** - Development workspaces\n- **[@computesdk/vercel](./packages/vercel)** - Serverless functions\n- **[@computesdk/tensorlake](./packages/tensorlake)** - Stateful MicroVM sandboxes for agentic applications, with snapshot support\n- **[@computesdk/just-bash](./packages/just-bash)** - Local bash sandbox with virtual filesystem (no auth required)\n\n## Building Custom Providers\n\nWant to add support for a new compute provider? See **[@computesdk/provider](./packages/provider)** for the provider framework:\n\n```typescript\nimport { defineProvider } from '@computesdk/provider';\n\nexport const myProvider = defineProvider({\n  name: 'my-provider',\n  defaultMode: 'direct',\n  methods: {\n    sandbox: {\n      create: async (config, options) =\u003e {\n        // Your implementation\n      },\n      // ... other methods\n    }\n  }\n});\n```\n\n## Documentation\n\n- 📖 **[Full Documentation](https://computesdk.com)** - Complete guides and API reference\n- 🚀 **[Getting Started](https://computesdk.com/getting-started)** - Quick setup guide\n- 🎯 **[Providers](./packages)** - Provider-specific documentation\n\n## TypeScript Support\n\nFull TypeScript support with comprehensive type definitions:\n\n```typescript\nimport type { \n  Sandbox,\n  SandboxInfo,\n  CodeResult,\n  CommandResult,\n  CreateSandboxOptions\n} from 'computesdk';\n```\n\n## Contributing\n\nComputeSDK is open source and welcomes contributions!\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## Community \u0026 Support\n\n- 💬 **[GitHub Discussions](https://github.com/computesdk/computesdk/discussions)** - Ask questions and share ideas\n- 🐛 **[GitHub Issues](https://github.com/computesdk/computesdk/issues)** - Report bugs and request features\n\n## License\n\nMIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Built with ❤️ by the ComputeSDK team**\n\n[computesdk.com](https://computesdk.com)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcomputesdk%2Fcomputesdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcomputesdk%2Fcomputesdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcomputesdk%2Fcomputesdk/lists"}