Get started in Python#
Embed the Bashkit sandbox in a Python application or agent. The package ships as pre-built binary wheels on PyPI, install and go, no Rust toolchain needed.
Install#
pip install bashkit
First script#
from bashkit import Bash
bash = Bash()
result = bash.execute_sync("echo 'Hello, World!'")
print(result.stdout)
Persistent state#
A Bash instance keeps its environment and virtual filesystem across calls:
from bashkit import Bash
bash = Bash()
bash.execute_sync("export APP_ENV=dev")
print(bash.execute_sync("echo $APP_ENV").stdout) # dev
Sync vs async#
execute_sync() runs scripts that complete without suspending, plain bash and
jq. If you register an async custom builtin (e.g. one that issues an HTTP
request), use the awaitable execute() instead:
result = await bash.execute("echo hi | my_async_tool")
Embedded Python#
Bashkit can also run Python inside the shell via the embedded Monty runtime,
enable it with Bash(python=True). That is a different feature from embedding
Bashkit in your Python app; see the Python builtin guide.
Examples#
Runnable Python examples in the repo:
bash_basics.py, first scripts and persistent statedata_pipeline.py, pipes and data processingllm_tool.py, exposing Bashkit as an LLM tool- Agent integrations: deepagents, Pydantic AI
Next steps#
- Sandbox configuration & limits, resource limits and sandbox options.
- LLM tools, expose Bashkit as a sandboxed tool for agent frameworks.
- Security, sandbox boundaries and what scripts cannot do.