PyBun shim bootstrapper for signed releases
Project description
PyBun (Python Bundle)
🐍 The Agent-First Python Runtime 🤖
pip + venv + test runner + MCP server — all in one Rust binary.
Built for AI agents (JSON-first) and humans alike.
Quick Start • Why PyBun? • MCP Server • Commands • Roadmap
Quick Start
macOS / Linux:
curl -LsSf https://raw.githubusercontent.com/VOID-TECHNOLOGY-INC/PyBun/main/scripts/install.sh | sh
Windows (PowerShell):
irm https://raw.githubusercontent.com/VOID-TECHNOLOGY-INC/PyBun/main/scripts/install.ps1 | iex
Or via pip/pipx (PyPI):
pipx install pybun-cli
# or
pip install pybun-cli
Then run:
pybun add requests
pybun run -c -- "import requests; print('Hello, PyBun!')"
Why PyBun?
Existing Python tools are built for humans. PyBun is designed for both AI Agents and humans.
| Feature | Traditional Tools (pip, uv, Poetry) | PyBun |
|---|---|---|
| Output Format | Human-readable text | 🤖 JSON-first (--format=json) |
| AI Integration | Manual parsing required | 🔌 Built-in MCP Server |
| Error Handling | Unstructured error messages | 📋 Structured diagnostics with hints |
| Agent Automation | Fragile text scraping | ✅ Reliable machine-readable output |
✨ Key Differentiators
- 🤖 AI Native: Every command supports
--format=jsonas a first-class citizen. LLMs can parse outputs reliably without fragile regex. - 🔌 MCP Server Built-in: MCP (Model Context Protocol) lets AI tools like Cursor and Claude Desktop operate your Python environment directly—no extra setup.
- ⚡ Rust Speed: Blazingly fast dependency resolution and installation.
- 🛡️ Sandbox Mode: Run untrusted AI-generated code safely with
--sandbox. - 📦 Single Binary: No dependencies. Just download and run.
💡 Example: AI Agent Workflow
# AI agent asks: "Install pandas and show the version"
$ pybun --format=json add pandas
{"status": "ok", "detail": {"added": ["pandas==2.2.0"], ...}}
$ pybun --format=json run -c -- "import pandas; print(pandas.__version__)"
{"status": "ok", "stdout": "2.2.0\n", ...}
The AI receives structured JSON—no regex parsing needed.
Status
- Current: M1 (Fast Installer), M2 (Runtime Optimization), and M4 (MCP/JSON) are in progress (stable/preview/stub mixed)
- Platforms: macOS/Linux (arm64/amd64), Windows (preview)
For feature maturity (stub/preview/stable) and phased rollout policy, see
docs/SPECS.md.
Installation
The easiest way to install PyBun:
pip install pybun-cli
Other installation methods
macOS / Linux (shell script):
curl -LsSf https://raw.githubusercontent.com/VOID-TECHNOLOGY-INC/PyBun/main/scripts/install.sh | sh
Windows (PowerShell):
irm https://raw.githubusercontent.com/VOID-TECHNOLOGY-INC/PyBun/main/scripts/install.ps1 | iex
From source:
cargo install --path .
Note: If your PATH resolves
pybunto Bun, usepybun-cliinstead.
Command Reference
Package Management
# Install dependencies (generates lockfile)
pybun install --require requests==2.31.0 --index fixtures/index.json
# Add a package (updates pyproject.toml)
pybun add requests
# Remove a package
pybun remove requests
Script Execution
# Run a Python script
pybun run script.py
# Run with arguments
pybun run script.py -- arg1 arg2
# Run inline code
pybun run -c -- "import sys; print(sys.version)"
# Run with profile
pybun run --profile=prod script.py
PEP 723 inline metadata is also supported:
# /// script
# requires-python = ">=3.11"
# dependencies = ["requests>=2.28"]
# ///
import requests
※ Currently, metadata parsing and display are the main features (preview), with auto-install and isolated environment execution planned for phased rollout (see docs/PLAN.md for details).
Ad-hoc Execution (pybun x)
Install a package in a temporary environment and execute it (Python version of npx):
# Temporarily install and run cowsay
pybun x cowsay
# Specify version
pybun x cowsay==6.1
# With arguments
pybun x black -- --check .
Python Version Management
# Show installed versions
pybun python list
# Show all available versions
pybun python list --all
# Install Python
pybun python install 3.12
# Remove Python
pybun python remove 3.12
# Show Python path
pybun python which
pybun python which 3.11
Runtime Optimization
Module Finder
Rust-based high-speed module search:
# Find a module
pybun module-find os.path
# Scan a directory for all modules
pybun module-find --scan -p ./src
# With benchmark
pybun module-find --benchmark os.path
Lazy Import
# Show configuration
pybun lazy-import --show-config
# Check module decision
pybun lazy-import --check numpy
# Generate Python code
pybun lazy-import --generate -o lazy_setup.py
# Specify allow/deny lists
pybun lazy-import --allow mymodule --deny debug_tools --generate
File Watch (Development Mode)
# Watch for file changes and re-run (currently preview)
# Native watching is planned for phased rollout. For now, use --shell-command (external watcher).
pybun watch main.py
# Watch a specific directory
pybun watch main.py -p src
# Show configuration
pybun watch --show-config
# Generate shell command for external watcher
pybun watch --shell-command main.py
Profile Management
# Show available profiles
pybun profile --list
# Show profile settings
pybun profile dev --show
# Compare profiles
pybun profile dev --compare prod
# Export profile
pybun profile prod -o prod-config.toml
Profiles:
dev: Hot reload enabled, verbose loggingprod: Lazy imports enabled, optimizationsbenchmark: Tracing and timing measurement
MCP Server
MCP server for AI agents:
# Start in stdio mode
pybun mcp serve --stdio
Tools: pybun_resolve, pybun_install, pybun_run, pybun_gc, pybun_doctor
Resources: pybun://cache/info, pybun://env/info
※ Currently pybun_gc, pybun_doctor, pybun_run, pybun_resolve, and resources are operational. pybun_install generates lockfiles via resolution. HTTP mode is not yet implemented.
Diagnostics & Maintenance
# Environment diagnostics
pybun doctor
pybun doctor --verbose
# Cache garbage collection
pybun gc
pybun gc --max-size 1G
pybun gc --dry-run
# Self-update check
pybun self update --dry-run
pybun self update --channel nightly
Sandbox usage
Use the sandbox for untrusted scripts or PEP 723 snippets:
pybun --format=json run --sandbox examples/hello.py
pybun --format=json run --sandbox --allow-network -c "print('net ok')"
The sandbox isolates file and network access; add --allow-network only when required. Combine with --profile=prod for production-like runs.
Profiles
Profiles tune defaults for performance vs. development ergonomics:
dev(default): hot reload enabled, verbose logging.prod: lazy imports and optimizations enabled, quieter output.benchmark: stable timing/logging for reproducible benchmarks.
Examples:
pybun profile --list
pybun run --profile=prod app.py
pybun test --profile=benchmark --format=json
MCP server (stdio)
Operate PyBun as an MCP server for agents/IDEs:
pybun mcp serve --stdio
pybun --format=json mcp serve --stdio # JSON envelope for tooling
Tools: pybun_resolve, pybun_install, pybun_run, pybun_gc, pybun_doctor. Resources: pybun://cache/info, pybun://env/info. HTTP mode remains TODO; stdio is the GA path.
JSON output examples
All commands support the --format=json option (schema v1). Examples:
pybun --format=json run -c -- "print('hello')"
{
"version": "1",
"command": "pybun run",
"status": "ok",
"detail": {
"summary": "executed inline code"
},
"events": [],
"diagnostics": []
}
Failure example:
pybun --format=json run missing.py
{
"version": "1",
"command": "pybun run",
"status": "error",
"diagnostics": [
{
"kind": "runtime",
"message": "missing.py not found",
"hint": "pass -c for inline code or a valid path"
}
]
}
Tests/builds emit structured summaries (pass/fail counts, shard info) while keeping the same envelope:
pybun --format=json test --fail-fast
pybun --format=json build
Enable trace IDs for debugging:
PYBUN_TRACE=1 pybun --format=json run script.py
Environment Variables
| Variable | Description |
|---|---|
PYBUN_ENV |
Path to venv to use |
PYBUN_PYTHON |
Path to Python binary |
PYBUN_PROFILE |
Default profile (dev/prod/benchmark) |
PYBUN_TRACE |
Set to 1 to enable trace ID |
PYBUN_LOG |
Log level (debug/info/warn/error) |
Release note automation
- Generate GA release notes from tags:
python scripts/release/generate_release_notes.py --repo . --previous-tag v0.1.0 --tag v0.2.0 --notes-output release/RELEASE_NOTES.md --changelog CHANGELOG.md - Attach the notes to the release manifest (served by installers/self-update via
release_notesin JSON):
python scripts/release/generate_manifest.py --assets-dir release --version 0.2.0 --channel stable --base-url https://github.com/VOID-TECHNOLOGY-INC/PyBun/releases/download/v0.2.0 --output pybun-release.json --release-notes release/RELEASE_NOTES.md - CI-friendly JSON summary:
python scripts/release/generate_release_notes.py --repo . --previous-tag v0.1.0 --tag v0.2.0 --format json
Upgrade guide
See docs/UPGRADE.md for pre-GA → GA migration notes, breaking changes, and the recommended CI checks (doc lint/link + release note automation).
Development
Requirements
- Rust stable (
rustup,cargo)
Basic Commands
# Format
cargo fmt
# Lint
cargo clippy --all-targets --all-features -- -D warnings
# Test
cargo test
# Development scripts
./scripts/dev fmt
./scripts/dev lint
./scripts/dev test
Testing
# All tests
cargo test
# Specific tests
cargo test cli_smoke
cargo test json_schema
cargo test mcp
Roadmap
- M0: Repository & CI scaffold
- M1: Fast installer (lockfile, resolver, PEP 723)
- M2: Runtime optimization (module finder, lazy import, hot reload)
- M3: Test runner (discovery, parallel execution, snapshots)
- M4: JSON/MCP & diagnostics
- M5: Builder & security
- M6: Remote cache, workspaces
See docs/PLAN.md for details.
Privacy & Telemetry
PyBun does not collect telemetry by default (opt-in model).
# Check telemetry status
pybun telemetry status
# Enable telemetry
pybun telemetry enable
# Disable telemetry
pybun telemetry disable
Collected data (when enabled):
- Command usage (anonymized)
- Error diagnostics
- Performance metrics
Never collected: API keys, tokens, credentials, passwords, or file contents.
Environment override: PYBUN_TELEMETRY=0|1
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pybun_cli-0.1.10.tar.gz.
File metadata
- Download URL: pybun_cli-0.1.10.tar.gz
- Upload date:
- Size: 16.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
406b707947b4aa3433a07cf4048fa0db07ff47479aba2650128c1742c6eecf0d
|
|
| MD5 |
6fd43f84816d044d0787baebf8eb026b
|
|
| BLAKE2b-256 |
aa2a1837b5067019f9950a0c2b88edf9c19743845a736e4db60bb59755998376
|
Provenance
The following attestation bundles were made for pybun_cli-0.1.10.tar.gz:
Publisher:
publish-pypi.yml on VOID-TECHNOLOGY-INC/PyBun
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pybun_cli-0.1.10.tar.gz -
Subject digest:
406b707947b4aa3433a07cf4048fa0db07ff47479aba2650128c1742c6eecf0d - Sigstore transparency entry: 812550758
- Sigstore integration time:
-
Permalink:
VOID-TECHNOLOGY-INC/PyBun@cd35c4610ccc48563daa274490828798b66eadc7 -
Branch / Tag:
refs/tags/v0.1.10 - Owner: https://github.com/VOID-TECHNOLOGY-INC
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@cd35c4610ccc48563daa274490828798b66eadc7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pybun_cli-0.1.10-py3-none-any.whl.
File metadata
- Download URL: pybun_cli-0.1.10-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35ae05a8340ec183c3ddadfe43ce812bbc2e0d021da8afa602d3cf53facd626e
|
|
| MD5 |
03830e3e6d3a4ed5540de60f3764ef43
|
|
| BLAKE2b-256 |
5eb878effe26849d32cf484775d0a5b41211c891d857ce9cef03798f92622287
|
Provenance
The following attestation bundles were made for pybun_cli-0.1.10-py3-none-any.whl:
Publisher:
publish-pypi.yml on VOID-TECHNOLOGY-INC/PyBun
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pybun_cli-0.1.10-py3-none-any.whl -
Subject digest:
35ae05a8340ec183c3ddadfe43ce812bbc2e0d021da8afa602d3cf53facd626e - Sigstore transparency entry: 812550759
- Sigstore integration time:
-
Permalink:
VOID-TECHNOLOGY-INC/PyBun@cd35c4610ccc48563daa274490828798b66eadc7 -
Branch / Tag:
refs/tags/v0.1.10 - Owner: https://github.com/VOID-TECHNOLOGY-INC
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@cd35c4610ccc48563daa274490828798b66eadc7 -
Trigger Event:
release
-
Statement type: