bub
Bub it. Build it. A tiny agent runtime, composable with plugins.
Install
git clone https://github.com/bubbuild/bubInstall command taken from the project's README or registry entry. Always review code before running it.
README excerpt
Read full README on GitHub →Bub
A tiny agent runtime, composable with plugins.
Bub is a small Python runtime for building agents in shared environments. It started in group chats, where multiple humans and agents had to work in the same conversation without hidden state, hand-wavy memory, or framework-specific magic.
Built on agents.md and Agent Skills , Bub stays intentionally small. Every turn stage is a pluggy hook. Builtins are included but replaceable. The same runtime drives CLI, Telegram, and any channel you add.
Quick Start
macOS and Linux:
curl -fsSL https://bub.build/install.sh | bash
Windows PowerShell:
powershell -ExecutionPolicy ByPass -c "irm https://bub.build/install.ps1 | iex"
The interactive installer uses a colored preset picker, accepts additional plugin dependencies, and runs bub onboard after installation. For automation, select a preset explicitly; non-interactive installs skip onboarding:
curl -fsSL https://bub.build/install.sh | bash -s -- --preset recommended --dependency extra-plugin
powershell -ExecutionPolicy ByPass -c "& ([scriptblock]::Create((irm https://bub.build/install.ps1))) --preset recommended --dependency extra-plugin"
Or from source:
git clone https://github.com/bubbuild/bub.git
cd bub
uv sync # enough to run Bub from source
For local development, use make install instead so the website toolchain and prek hooks are installed too.
bub chat # interactive session
bub run "summarize this repo" # one-shot task
bub gateway # channel listener mode
Why Bub
- Composable by design. Every turn stage is a plugin hook. Override one stage or replace the whole flow without forking the runtime.
- Tape context. Context is rebuilt from append-only records, not carried around as mutable session state. Easier to inspect, replay, and hand off.
- One runtime across surfaces. The same inbound pipeline runs across CLI, Telegram, and custom channels. Adapters change the surface, not the runtime model.
- Batteries included. CLI, Telegram, tools, skills, and model execution ship with the core runtime. Use the defaults first, replace them later.
- Operator equivalence. Humans and agents work inside the same runtime boundaries, with the same evidence trail and handoff model. No hidden operator class.
How It Works
Every inbound message goes through one turn pipeline. Each stage is a hook.
resolve_session → load_state → build_prompt → run_model
↓
dispatch_outbound ← render_outbound ← save_state
Builtins are registered first. External plugins load after them. At runtime, later plugins take precedence. There are no framework-only shortcuts.
Key source files:
- Turn orchestrator:
src/bub/framework.py - Hook contract:
src/bub/hooks/specs.py - Builtin hooks:
src/bub/builtin/hook_impl.py - Skill discovery:
src/bub/skills.py
Extend It
Similar plugs
CLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies
Bash is all you need - A nano claude code–like 「agent harness」, built from 0 to 1
Documented system prompts from Anthropic - Claude Fable 5.1, Opus 5.5, Claude Design, Claude Code. OpenAI - ChatGPT GPT-6-Astra, Codex. Google - Gemini 3.8 Flash, 3.1 Pro,…
Wrap Antigravity, ChatGPT Codex, Claude Code, Grok Build, Muse Code, Devin as an OpenAI/Gemini/Claude/Codex compatible API service, allowing you to enjoy the free Gemini…