Chibi aims to be a minimal, secure core with extensibility through plugins.
- Core binary: Small, stable, few dependencies. Changes here need strong justification.
- Plugins: Where features live. Most contributions should be plugins, not core changes.
- see justfile for workflow
- cargo fmt your patches
- don't make clippy sad
- test-driven development appreciated
- documentation bugs are serious bugs
- be nice to the chibis
Before adding code to the Rust binary, ask: can this be a plugin?
Plugins can:
- Add new capabilities for the LLM (tool calls)
- Hook into lifecycle events (pre_message, post_tool, etc.)
- Inject content into system prompts
- Intercept and modify behavior
The core handles: API communication, context management, plugin loading, streaming.
Stable plugins may eventually be incorporated in the Rust binary.
Commands use flags (-l, -s, -C). Bare words are prompts.
chibi -l # command: list contexts
chibi list # prompt: sends "list" to LLMTests in src/cli.rs codify this behavior.
cargo test # all tests
cargo test cli # CLI parsing testsFor plugin contributions, see chibi-plugins.