Key Features
Framework Core
- Hook-first architecture powered by
pluggy.
- Deterministic turn pipeline in
BubFramework.process_inbound().
- Safe fallback to prompt text when
run_model returns no value (with on_error notification).
- Automatic fallback outbound when
render_outbound produces nothing.
Runtime And Commands
- Builtin CLI commands:
run, hooks, message, chat.
- Builtin
RuntimeEngine:
- normal input goes through model + tool loop (Republic)
- comma-prefixed input enters internal command mode (
,help, ,tools, ,fs.read, etc.)
- unknown internal commands fall back to shell execution via the
bash tool
- Runtime events are persisted to tapes (default under
~/.bub/tapes).
Channel Capability
- Builtin channels:
cli and telegram.
message mode runs the same framework pipeline for channel-driven traffic.
- Outbound delivery is routed by
ChannelManager, keeping business hooks channel-agnostic.
Plugin Extensibility
- External plugins are loaded via Python entry points (
group="bub").
- Later-registered plugins run first and can override builtin behavior.
- Supports both first-result hooks (override style) and broadcast hooks (observer style).
Current Boundaries
- No strict envelope schema:
Envelope is intentionally flexible.
- No centralized key contract for shared plugin
state.
- Core repository does not currently ship a builtin Discord channel adapter.