The core layer
Composable agent capabilities, including the loop, tools, context, the event bus, and the model client.
Bub is a lightweight agent runtime written in Python. It ships with a ready-to-use CLI app and a composable SDK, so you can run it directly or embed agent capabilities in your own programs.
An agent is at heart a loop: the model reads the context and decides which tool to call, the tool result goes back into the context, and the model reads it again. The loop ends when the model stops asking for tools and answers directly.
So an agent rests on four things: a model, tools, a context, and the loop that drives them. Working from that shared understanding, Bub keeps a small core and builds a ready-to-run application around it:
The core layer
Composable agent capabilities, including the loop, tools, context, the event bus, and the model client.
The app layer
A harness on top of the core that provides configuration, plugins, hooks, skills, message channels, and a gateway.
Which one should you use?
Bub is built around simplicity, composability, and extensibility. You can combine its capabilities as needed or build your own agent on top of it. Its key features include:
Append-only context
Conversation history is appended to the tape without modifying existing entries.
Event-driven
Every model and tool call emits events when it starts, finishes, and returns a result, so you can observe, modify, or intervene in the run.
Tools are functions
Write tools as ordinary Python functions and take advantage of the existing Python ecosystem.
Pluggable
Capabilities can be extended through plugins. A plugin can provide a tool, an event listener, a message channel, or a complete set of skills.
Now you can explore the Bub docs freely, or follow the next page and start your own journey with Bub.