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
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, 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#