{"id":33509997,"url":"https://github.com/computesdk/computesdk","last_synced_at":"2026-04-14T22:02:07.028Z","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-04-14T22:02:06.985Z","avatar_url":"https://github.com/computesdk.png","language":"TypeScript","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\n```\n\nSet your provider credentials:\n\n```bash\nexport E2B_API_KEY=your_api_key\n```\n\nUse the SDK:\n\n```typescript\nimport { compute } from 'computesdk';\n\n// Auto-detects E2B from environment\nconst sandbox = await compute.sandbox.create();\n\nconst result = await sandbox.runCode('print(\"Hello World!\")');\nconsole.log(result.stdout); // \"Hello World!\"\n\nawait sandbox.destroy();\n```\n\nThat's it! No provider configuration needed.\n\n## Features\n\n- ⚡ **Zero-config mode** - Auto-detect provider from environment variables\n- 🔄 **Multi-provider support** - E2B, Modal, Railway, Daytona, Vercel, and more\n- 📁 **Filesystem operations** - Read, write, create directories across providers\n- 🖥️ **Command execution** - Run shell commands in sandboxes\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\nComputeSDK automatically detects providers based on environment variables:\n\n| Provider | Environment Variables |\n|----------|----------------------|\n| **E2B** | `E2B_API_KEY` |\n| **Modal** | `MODAL_TOKEN_ID`, `MODAL_TOKEN_SECRET` |\n| **Railway** | `RAILWAY_TOKEN` |\n| **Daytona** | `DAYTONA_API_KEY` |\n| **HopX** | `HOPX_API_KEY` |\n| **Runloop** | `RUNLOOP_API_KEY` |\n| **Vercel** | `VERCEL_TOKEN` or `VERCEL_OIDC_TOKEN` |\n| **Cloudflare** | `CLOUDFLARE_API_TOKEN` |\n| **CodeSandbox** | `CODESANDBOX_TOKEN` |\n| **just-bash** | *(none - always available)* |\n\nDetection order: **E2B → Railway → Daytona → Modal → Runloop → Vercel → Cloudflare → CodeSandbox → just-bash**\n\n## Configuration\n\n### Zero-Config Mode (Recommended)\n\nJust set environment variables and ComputeSDK auto-detects everything:\n\n```bash\nexport E2B_API_KEY=your_api_key\n```\n\n```typescript\nimport { compute } from 'computesdk';\n\nconst sandbox = await compute.sandbox.create();\n```\n\n### Explicit Configuration\n\nFor more control, use `setConfig()`:\n\n```typescript\nimport { compute } from 'computesdk';\n\ncompute.setConfig({\n  computesdkApiKey: 'your_computesdk_api_key',\n  provider: 'e2b',\n  e2b: { apiKey: 'your_api_key' }\n});\n\nconst sandbox = await compute.sandbox.create();\n```\n\nSwitch providers at runtime:\n\n```typescript\n// Use E2B for data science\ncompute.setConfig({\n  computesdkApiKey: 'your_computesdk_api_key',\n  provider: 'e2b',\n  e2b: { apiKey: process.env.E2B_API_KEY }\n});\n\nconst e2bSandbox = await compute.sandbox.create();\nawait e2bSandbox.runCode('import pandas as pd');\nawait e2bSandbox.destroy();\n\n// Switch to Modal for GPU workloads\ncompute.setConfig({\n  computesdkApiKey: 'your_computesdk_api_key',\n  provider: 'modal',\n  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.runCode('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### Code Execution\n\n```typescript\n// Execute code\nconst result = await sandbox.runCode('print(\"Hello\")', 'python');\nconsole.log(result.stdout);\nconsole.log(result.stderr);\nconsole.log(result.exitCode);\n\n// Run shell commands\nconst result = await sandbox.runCommand('npm', ['install', 'express']);\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// Process data\nconst result = await sandbox.runCode(`\nimport pandas as pd\n\ndf = pd.read_csv('/analysis/data/people.csv')\nprint(f\"Average age: {df['age'].mean()}\")\n\n# Save results\nresults = {'average_age': df['age'].mean()}\n\nimport json\nwith open('/analysis/results.json', 'w') as f:\n    json.dump(results, f)\n`);\n\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\nFor direct SDK usage without the gateway, install individual provider packages:\n\n```bash\nnpm install @computesdk/e2b        # E2B provider\nnpm install @computesdk/modal      # Modal provider\nnpm install @computesdk/railway    # Railway provider\nnpm install @computesdk/daytona    # Daytona provider\nnpm install @computesdk/vercel     # Vercel provider\nnpm install @computesdk/just-bash  # Local bash sandbox (no auth needed)\n```\n\nDirect mode usage:\n\n```typescript\nimport { e2b } from '@computesdk/e2b';\n\nconst compute = e2b({ apiKey: 'your_api_key' });\nconst sandbox = await compute.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/railway](./packages/railway)** - Full-stack deployments\n- **[@computesdk/daytona](./packages/daytona)** - Development workspaces\n- **[@computesdk/vercel](./packages/vercel)** - Serverless functions\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## Examples\n\nCheck out the [examples directory](./examples) for complete implementations:\n\n- **[Next.js](./examples/nextjs)** - API routes with ComputeSDK\n- **[Nuxt](./examples/nuxt)** - Server API integration\n- **[SvelteKit](./examples/sveltekit)** - Endpoints with ComputeSDK\n- **[Remix](./examples/remix)** - Loader/action integration\n- **[Astro](./examples/astro)** - API endpoints\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","funding_links":[],"categories":[],"sub_categories":[],"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"}