bashkit

Get started#

Bashkit is a single Rust core, a sandboxed bash interpreter with a virtual filesystem, no fork/exec, and no host access, shipped as a package for every major runtime. Pick the one that matches where your code runs, and follow its quickstart to a first script in a couple of minutes.

Choose your target#

TargetInstallRuns inQuickstart
Rustcargo add bashkitAny Rust appGet started in Rust
C ABINative shared libraryC-compatible native hostsC API
Pythonpip install bashkitCPython 3.9+Get started in Python
Node / Bun / Denonpm i @everruns/bashkitNode ≥ 18, Bun, DenoGet started in Node
Browser (WASM)npm i @everruns/bashkit-wasmBrowser, edge runtimesGet started in the browser
Pyodidemicropip.install("bashkit")Pyodide, JupyterLiteGet started in Pyodide
CLIcargo install bashkit-cliTerminalCLI

Which one?

  • Embedding in a Rust, C-compatible, Python, or Node/Bun/Deno service → the native crate, wheel, or NAPI addon. These share the full feature set.
  • Running in a browser or edge/serverless runtime (Cloudflare Workers, Vercel Edge, Deno Deploy), or anywhere a native addon can’t load → the browser (WASM) package. It even has a live terminal you can try right on the page.
  • Running inside Pyodide or JupyterLite (Python in the browser) → the Pyodide wheel.
  • Running scripts from a terminal → the CLI.

The same core everywhere#

Whichever target you choose, the shell semantics are identical: the same builtins, the same virtual filesystem, the same sandbox. What differs is the host API surface (async vs sync, available features) and packaging, each quickstart calls out its specifics.

Once you have a first script running, Sandbox configuration & limits covers the knobs shared across every binding: resource limits, filesystem backends, identity, and the network allowlist.

Next steps#