Contributing
How to contribute to Colony — development setup, coding standards, and contribution guidelines.
Colony will be released under the Functional Source License (FSL). The repository is currently private during pre-launch development — contributions will be welcome once we open the source.
Prerequisites
- Nix with Flakes enabled (manages all dev dependencies)
- An Anthropic API key (for agent features)
Getting Started
# Clone the repository
git clone https://github.com/colonydev/colony.git
cd colony
# Install deps, generate proto, setup DNS
make init
# Start all services
make dev
# Run tests
make test
Project Structure
colony/
├── mycelium/ # Gleam + OTP orchestration layer
├── stem/ # Rust TUI
├── bloom/ # SolidJS web dashboard
├── proto/ # Shared Protobuf definitions
├── canopy/ # Marketing website (this site)
├── seed/ # Demo projects and starter templates
├── scripts/ # Setup and utility scripts
└── docs/ # ADRs and internal documentation
Development Workflow
- Pick an issue or open one describing what you want to work on
- Create a Jujutsu workspace for your changes
- Write tests first — Colony targets high test coverage
- Run the full test suite before submitting
make test # All tests (Gleam + Rust + Bloom)
make mycelium-test # Gleam tests only
make stem-test # Rust tests only
make bloom-test # SolidJS tests only
Coding Standards
- Gleam: Follow Gleam community conventions, format with
gleam format - Rust: Follow Rust conventions, format with
cargo fmt, lint withcargo clippy - TypeScript/SolidJS: ESLint + Prettier configuration in
bloom/ - No warnings in CI — treat warnings as errors
License
By contributing, you agree that your contributions will be licensed under the same FSL terms as Colony, including the automatic Apache 2.0 conversion after 2 years.