Skip to main content

PyBun shim bootstrapper for signed releases

Reason this release was yanked:

Incomplete release: GitHub binaries were signed with a temporary CI key. Superseded by 0.1.20.

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.

Video DemoQuick StartWhy PyBun?MCP ServerCommandsRoadmap

Platform Rust License


Video Demo

PyBun Video Demo


Quick Start

Open In Colab

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=json as 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 partially stable.
    • pybun install / pybun x (with uv backend) / pybun runs are Stable.
    • pybun watch (Native) / pybun test (Wrapper) are Preview.
    • Windows support is Preview.
  • 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 pybun to Bun, use pybun-cli instead.

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). If uv is available, it is used for faster environment creation.

# Temporarily install and run cowsay
# (Use -t flag for Python cowsay package)
pybun x cowsay -- -t "Hello"

# 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 logging
  • prod: Lazy imports enabled, optimizations
  • benchmark: 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.

Configuration (Claude Desktop)

Add to your claude_desktop_config.json:

Option 1: Using uvx (No install required)

{
  "mcpServers": {
    "pybun": {
      "command": "uvx",
      "args": [
        "--from",
        "pybun-cli",
        "pybun",
        "mcp",
        "serve",
        "--stdio"
      ]
    }
  }
}

Option 2: Using pip install

Requires pip install pybun-cli.

{
  "mcpServers": {
    "pybun": {
      "command": "pybun",
      "args": [
        "mcp",
        "serve",
        "--stdio"
      ]
    }
  }
}

Note: If pybun is not in the PATH, provide the absolute path (e.g., /Users/username/bin/pybun).

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_notes in 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybun_cli-0.1.19.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pybun_cli-0.1.19-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

Details for the file pybun_cli-0.1.19.tar.gz.

File metadata

  • Download URL: pybun_cli-0.1.19.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pybun_cli-0.1.19.tar.gz
Algorithm Hash digest
SHA256 67a13be5bed3bc1eced93f7552d44332c2e7f77205dc7cec2e358279a21838d1
MD5 b6c82c9900fb0f738bd20f0c6e8762b2
BLAKE2b-256 b1e4a2dbbee2a9e095e24490b40912d5aef2d7891a00887c87c2999ea622737f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybun_cli-0.1.19.tar.gz:

Publisher: publish-pypi.yml on VOID-TECHNOLOGY-INC/PyBun

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pybun_cli-0.1.19-py3-none-any.whl.

File metadata

  • Download URL: pybun_cli-0.1.19-py3-none-any.whl
  • Upload date:
  • Size: 13.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pybun_cli-0.1.19-py3-none-any.whl
Algorithm Hash digest
SHA256 72e17ee470ea6c8ea2ce166c173d53f4287258aa31addcb28a4f578bfb11bba1
MD5 07e09ec53f79e8f13c3d352ff2e53113
BLAKE2b-256 9ee5aaa2b870938c19d3f105d765d1bb3db194a44c5a1cd197aab3b4ade6c073

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybun_cli-0.1.19-py3-none-any.whl:

Publisher: publish-pypi.yml on VOID-TECHNOLOGY-INC/PyBun

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page