{"id":45607274,"url":"https://github.com/brian14708/isola","last_synced_at":"2026-04-02T11:56:32.611Z","repository":{"id":330818026,"uuid":"952303237","full_name":"brian14708/isola","owner":"brian14708","description":"🏝️ Fast, secure Python sandbox for AI apps.","archived":false,"fork":false,"pushed_at":"2026-03-29T00:42:45.000Z","size":6607,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-29T03:17:50.259Z","etag":null,"topics":["code-execution","python3","wasm"],"latest_commit_sha":null,"homepage":"https://brian14708.github.io/isola/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brian14708.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-03-21T04:07:45.000Z","updated_at":"2026-03-29T00:42:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"71cc1889-4604-401a-b57b-db38c5c410be","html_url":"https://github.com/brian14708/isola","commit_stats":null,"previous_names":["brian14708/promptkit","brian14708/isola"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/brian14708/isola","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brian14708%2Fisola","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brian14708%2Fisola/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brian14708%2Fisola/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brian14708%2Fisola/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brian14708","download_url":"https://codeload.github.com/brian14708/isola/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brian14708%2Fisola/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31305953,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T09:48:21.550Z","status":"ssl_error","status_checked_at":"2026-04-02T09:48:19.196Z","response_time":89,"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":["code-execution","python3","wasm"],"created_at":"2026-02-23T16:11:23.444Z","updated_at":"2026-04-02T11:56:32.605Z","avatar_url":"https://github.com/brian14708.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Isola\n\n[![crates.io](https://img.shields.io/crates/v/isola?logo=rust)](https://crates.io/crates/isola)\n[![PyPI](https://img.shields.io/pypi/v/isola?logo=python\u0026logoColor=white)](https://pypi.org/project/isola/)\n[![npm](https://img.shields.io/npm/v/isola-core?logo=npm)](https://www.npmjs.com/package/isola-core)\n[![License](https://img.shields.io/badge/license-Apache%202.0-2563eb)](LICENSE)\n\nIsola runs untrusted Python and JavaScript inside reusable WebAssembly\nsandboxes, with host SDKs for Python and Node.js.\n\nIt is for cases where embedding an interpreter feels too open, but starting a\ncontainer or microVM for every execution feels too heavy. It compiles a\nreusable sandbox template once, then instantiates isolated sandboxes with\nexplicit policy around memory, filesystem mounts, environment variables,\noutbound HTTP, and host callbacks.\n\n## Highlights\n\n- Raw-source execution at runtime for Python and JavaScript guests, without a\n  per-script build step\n- Reusable sandbox templates that amortize startup work across many isolated\n  instances\n- A CPython-based Python guest built for WASI, with native `async`/`await`\n  support inside the sandbox\n- Python and Node.js host SDKs with explicit capabilities for mounts, env,\n  HTTP, and hostcalls\n\n## Quick Start\n\nInstall the Python SDK:\n\n```bash\npip install isola\n```\n\nIf you are embedding from Node.js instead, install `isola-core`.\n\n```python\nimport asyncio\n\nfrom isola import build_template\n\n\nasync def main() -\u003e None:\n    # First run downloads and precompiles the runtime.\n    template = await build_template(\"python\")\n\n    async with template.create(http=True) as sandbox:\n        await sandbox.load_script(\n            \"from sandbox.http import fetch\\n\"\n            \"\\n\"\n            \"async def main(url):\\n\"\n            \"    async with fetch('GET', url) as resp:\\n\"\n            \"        return await resp.ajson()\\n\"\n        )\n        print(await sandbox.run(\"main\", \"https://httpbin.org/get\"))\n\n\nasyncio.run(main())\n```\n\n## Potential Good Fits\n\n- AI code execution, where an agent writes short Python or JavaScript helpers\n  and the host decides what external effects are allowed\n- Multi-tenant plugin systems that want per-request sandboxes without starting a\n  container for every call\n- User-authored automation or ETL steps that need streaming outputs and\n  policy-wrapped access to internal services\n- Internal extension points where teams want Python or JavaScript ergonomics\n  without giving scripts full host access\n\nIsola is not a full Linux environment or a replacement for containers or\nmicroVMs. If you need arbitrary native extensions, subprocesses, or\ninfrastructure-level isolation, use something stronger.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrian14708%2Fisola","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrian14708%2Fisola","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrian14708%2Fisola/lists"}