Thanks for your interest in contributing! This guide will help you get started.
- Docker desktop app
- uv: Python package manager
- pnpm: Node.js package manager
- tmux: terminal multiplexer
- goose: ClickHouse migration tool
git clone https://github.com/traceroot-ai/traceroot.git
cd traceroot
cp .env.example .env
make devOn Windows or in environments without tmux, use make dev-lite instead.
- Check for an existing issue before starting larger work, or open one first so the change has clear scope.
- If an issue has the
needs approvallabel, please wait until a core member removes it before starting work — we want to confirm direction first. Bugs, security, perf, and docs issues are exempt: feel free to start right away. - If you do not have push access, fork the repo first, create your branch from
main, push to your fork, and open the PR back totraceroot-ai/traceroot. - If you have push access, still create a branch from
mainand open a PR instead of working directly onmain. - Keep each pull request focused on one problem and link the related issue when possible.
| Command | Description |
|---|---|
make dev |
Start dev environment. Idempotent - reattaches to existing tmux session if running and installs the pre-commit hook. |
make dev-autoreload |
Same as make dev, but services auto-restart on code changes. |
make dev-lite |
Start the local Docker workflow without tmux and install the pre-commit hook. Helpful on Windows. |
make dev-reset |
Nuclear reset: kills tmux, destroys containers/volumes/node_modules. Run make dev after. |
make prod |
Start all services in Docker with tmux log viewer. |
make prod-lite |
Run the Docker stack directly without tmux. Helpful on Windows and in environments without tmux. |
make dev, make dev-autoreload, and make dev-lite install the pre-commit hook automatically on first run.
The tmux-based commands handle deps, Docker containers, migrations, and launch services in tmux (one window per service).
- Create a branch from
main. - Make the smallest change that fully solves the issue.
- Commit your changes and let the pre-commit hook run automatically.
- Run the relevant tests for your change before pushing.
- Open a pull request and link the issue when applicable.
Please use Conventional Commit style for commit messages and PR titles when possible:
feat: add ci-check make targetfix: handle missing ClickHouse migration binarydocs: improve contribution workflowci: align local checks with GitHub Actions
Helpful defaults:
- Start with a type such as
feat,fix,docs,refactor,test,ci, orchore. - Add a scope when it helps, for example
feat(frontend): add trace filters. - Use the imperative mood, for example
fix: avoid duplicate span writes. - Keep the summary short and specific.
- Keep the PR scoped to one logical change.
- Explain what changed, why it changed, and how it was validated.
- Add or update tests for behavior changes.
- Update documentation for setup, command, or UX changes.
- Include before/after screenshots or a short screen recording. PRs that change the UI without them will not be approved until they are added.
- Reference the issue in the PR body when relevant, for example
Closes #581. - Make sure pre-commit and the relevant tests pass before requesting review.
This project is licensed under Apache 2.0 with additional Enterprise features.
When contributing to the TraceRoot codebase, you need to agree to the Contributor License Agreement. You only need to do this once.
