Contributing to OpenCrust

February 20, 2026 ยท View on GitHub

Thanks for your interest in contributing to OpenCrust!

Quick Start

# Clone the repo
git clone https://github.com/opencrust-org/opencrust.git
cd opencrust

# Build
cargo build

# Run tests
cargo test

# Run linter
cargo clippy

# Format code
cargo fmt

Documentation

To build the documentation locally:

# Install mdBook
cargo install mdbook

# Build the book
mdbook build docs

# Serve the book (auto-reload)
mdbook serve docs

# Generate rustdoc
cargo doc --no-deps

Finding Work

  • Check the Issues page
  • Issues labeled good-first-issue are great starting points
  • Issues labeled help-wanted are open for anyone to pick up
  • Comment on an issue before starting work to avoid duplicate effort

Current Priorities

PriorityIssueDescription
P0#104Website: opencrust.org with alternatives pages
P0#105Discord community
P1#106Built-in starter skills
P1#107Scheduling hardening
P1#108Multi-agent routing and session orchestration
P1#80MCP: resources, prompts, HTTP transport
P1#74Security hardening
P2#72Comprehensive test suite and benchmarks
P2#73CI/CD: matrix builds, crates.io, Docker
P2#77Discord full spec: streaming, threads

Pull Request Process

  1. Fork the repository
  2. Create a feature branch from main
  3. Make your changes
  4. Ensure all checks pass: cargo check && cargo test && cargo clippy && cargo fmt --check
  5. Submit a PR with a clear description of what changed and why

Code Guidelines

  • Each crate has a focused responsibility. Keep boundaries clean.
  • Prefer Result<T, E> over panics. Use opencrust_common::Error for crate-level errors.
  • Write tests for new functionality. Place unit tests in the same file, integration tests in tests/.
  • Keep functions short. If a function is doing too much, split it.
  • Document public APIs with doc comments.

Crate Overview

CratePurpose
opencrust-cliCLI binary, command parsing, daemon management, init wizard
opencrust-gatewayWebSocket server, HTTP API, session management, channel bootstrap
opencrust-configConfig file loading (YAML/TOML), hot-reload watcher, MCP config
opencrust-channelsChannel trait + Discord, Telegram, Slack, WhatsApp, iMessage implementations
opencrust-agentsLLM providers (Anthropic, OpenAI, Ollama), tools, MCP client, agent runtime
opencrust-dbSQLite memory store, vector search (sqlite-vec)
opencrust-pluginsWASM plugin loading and execution
opencrust-mediaMedia format handling and conversion
opencrust-securityCredential vault, allowlists, pairing codes, input validation
opencrust-skillsSKILL.md parser, scanner, installer
opencrust-commonShared types, error enum, message model

License

By contributing, you agree that your contributions will be licensed under the MIT License.