Contributing to Tau
Thanks for helping. Tau is a young project: expect the interfaces to move, and open an issue before you start on anything bigger than a bug fix, so we can agree on where it belongs first.
Set up#
You need Node.js 22 and Git. Pi, Codex and the other agent runtimes are optional; Tau runs without them.
npm install
npm run dev # Electron with hot reload
npm run dev:web # the UI in a browser, with fixture data
docs/architecture.md explains the architecture; docs/CORE.md and docs/EXTENSIONS.md describe the core and the extension API; CONTEXT.md defines the words the code uses.
Where a change goes#
- Core stays small.
src/owns threads, the transcript, the composer and placement. A feature belongs in a kit (kits/<name>/, see kits/README.md). If a kit needs something no kit can do today, add a small, generic, documented seam to core first, then the kit. The boundary tests (src/shared/core-boundary.test.tsand its siblings) enforce this. - Kits don't import each other. They talk through services and host commands (ADR 0020).
- Decisions are recorded as ADRs in docs/adr/. A change that reverses one needs a new ADR.
Before you open a pull request#
npm run lint && npm run typecheck && npm test
- Tests live next to the code (Vitest). A test must not depend on timing.
- Performance budgets live in docs/PERFORMANCE.md; don't raise a budget to make a change fit.
- Commits follow Conventional Commits
in English (
feat(review): …,fix(core): …). Keep them small. - Describe what changed, why, and how you checked it. For UI changes, add a screenshot.
- For a change you checked in the running app, say so; for one you could not check (another OS, a runtime you don't have), say that too.
Licence#
Tau is licensed under the MIT License. By contributing, you agree that your contribution is licensed under the same terms. Don't add code copied from another project unless its licence allows it; if you do, keep its copyright notice and say where it came from in the pull request.
Security#
Report vulnerabilities privately; see SECURITY.md.
This page is CONTRIBUTING.md in Tau's repository.