Contributing¶
Development Setup¶
Prerequisites¶
- Rust (stable, latest) — rustup.rs
- Node.js 22+ — for the desktop app
- Python 3.12+ — for the docs site (optional)
Quick Start¶
git clone https://github.com/shakedaskayo/ciab.git
cd ciab
# Build everything
make build
# Run tests
make test
# Start the server locally
cp config.example.toml config.toml
make server
# Run the desktop app (in another terminal)
make desktop-install
make desktop
Running the Docs Site Locally¶
Project Structure¶
ciab/
crates/ # Rust workspace crates
ciab-core/ # Types, traits, errors
ciab-db/ # SQLite persistence
ciab-streaming/ # SSE broker, WebSocket
ciab-sandbox/ # Runtime backends
ciab-agent-*/ # Agent provider implementations
ciab-credentials/ # Encrypted credential store
ciab-provisioning/ # Sandbox provisioning pipeline
ciab-gateway/ # Remote access tunnels
ciab-channels/ # External messaging
ciab-api/ # Axum REST API
ciab-cli/ # CLI binary
desktop/ # Tauri v2 + React desktop app
docs/ # MkDocs Material documentation
tests/integration/ # Integration tests
Code Style¶
- Run
cargo fmt --allbefore committing - Run
cargo clippy --workspaceand fix all warnings - Write tests for new functionality
- Keep crate dependencies minimal
Pull Request Guidelines¶
- Fork the repo and create a feature branch from
main - Write clear commit messages
- Add tests for new functionality
- Ensure CI passes:
make lint && make test - Update documentation if adding new API endpoints or CLI commands
- Open a PR with a description of what changed and why
Adding a New Agent Provider¶
See Custom Provider for a step-by-step guide.
Reporting Issues¶
Use GitHub Issues for bug reports and feature requests. Include your OS, Rust version, and steps to reproduce.