Thanks for your interest in contributing to Supervisor! This guide will help you get started.
- Fork the repo and clone your fork locally.
- Install dependencies:
npm install
- Run in dev mode:
npm run tauri dev
- Rust (latest stable) — install via rustup
- Node.js v18+
- npm or pnpm
- Claude Code installed (the app manages Claude Code instances)
├── src/ # React frontend (Vite + TypeScript)
│ ├── components/ # UI components (canvas, chat, panels, sidebar)
│ ├── stores/ # Zustand state management
│ ├── hooks/ # Custom React hooks
│ └── types/ # TypeScript interfaces
├── src-tauri/ # Tauri backend (Rust)
│ └── src/ # Process management, IPC, database, socket server
├── cm/ # CLI tool (Rust binary)
└── docs/ # Design specs and architecture docs
Open an issue with:
- Steps to reproduce
- Expected vs actual behavior
- OS and app version
- Logs if available (check the dev console or
src-tauri/logs/)
Open a feature request. Describe:
- The problem you're trying to solve
- Your proposed solution
- Any alternatives you've considered
- Create a branch from
main:git checkout -b feat/my-feature
- Make your changes. Keep commits focused and atomic.
- Test your changes:
# Frontend linting npm run lint # Rust checks cargo check --manifest-path src-tauri/Cargo.toml cargo clippy --manifest-path src-tauri/Cargo.toml
- Push and open a PR against
main.
- Keep PRs small and focused on a single change.
- Write a clear title and description.
- Reference related issues with
Fixes #123orCloses #123. - Add screenshots for UI changes.
- Make sure CI passes before requesting review.
- Use functional components with hooks.
- Keep components small and focused.
- Use Zustand for shared state.
- Follow existing patterns in the codebase.
- Run
cargo clippyand fix warnings. - Use
Resulttypes for error handling. - Follow the existing module structure.
Use conventional commits:
feat: add agent-to-agent handoff
fix: resolve crash on startup when no projects exist
docs: update README with new shortcuts
refactor: simplify socket server connection handling
Open a discussion or reach out via issues.