Thank you for your interest in contributing to BoxLite!
- Rust 1.75+ (stable)
- macOS (Apple Silicon) or Linux (x86_64/ARM64) with KVM
- Python 3.10+ (for Python SDK development)
# Clone the repository
git clone https://github.com/boxlite-ai/boxlite.git
cd boxlite
# Initialize submodules
git submodule update --init --recursive
# Build
make setup
make dev:pythonFor detailed build instructions, see docs/guides.
make testKey test entry points:
make test/make test:all- full test matrix (unit + integration)make test:unit- all unit suitesmake test:integration- all integration suitesmake test:all:python- Python unit + integration suitesmake test:all:c- C SDK suite via CMake/CTest
- Use GitHub Issues
- Include OS, architecture, and BoxLite version
- Provide minimal reproduction steps
- Security vulnerabilities: do not open a public issue. See SECURITY.md for the private reporting process.
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Make your changes
- Run quality and tests (
make lint && make fmt:check && make test) - Commit with clear messages — see Commit & PR messages
- Open a Pull Request
- Sign the BoxLite Contributor License Agreement when CLA Assistant asks you to do so
Write for a reviewer skimming in ~30 seconds. Describe the change, not the process that produced it.
Commits — Conventional Commits:
- Subject:
type(scope): summary— imperative, ≤72 chars, no trailing period. Types:featfixdocsrefactortestchoreperfcibuild. - Body (only when it adds value): the why and what at a high level; wrap ~72.
PRs:
- Title: a Conventional-Commit subject (same rule as above).
- Description: fill in
.github/pull_request_template.md; delete sections that don't apply.
Never put in a commit or PR the process that produced the change (conversation / AI / step-by-step narrative), pasted logs or tickets, or secrets.
Follow the Rust Style Guide which includes:
- Microsoft Rust Guidelines
- BoxLite-specific patterns (async-first, centralized errors, thread-safe types)
Quick reference:
make fmt/make fmt:checkfor formatting checksmake lint/make lint:fixfor lint checks and safe autofix- Keep functions focused (single responsibility)
- Add tests for new functionality
- Update documentation as needed
src/
boxlite/ # Core runtime (Rust)
cli/ # CLI
server/ # Distributed server
shared/ # Shared types and protocol
ffi/ # FFI layer for SDKs
guest/ # Guest agent (runs inside VM)
test-utils/ # Test utilities
deps/ # Vendored C sys crates
sdks/
python/ # Python SDK
c/ # C SDK
node/ # Node.js SDK
examples/ # Example code
BoxLite is licensed under the Apache License, Version 2.0.
By contributing, you agree that your contributions will be licensed under the Apache License, Version 2.0. Pull requests must satisfy CLA Assistant using the BoxLite Contributor License Agreement.