Contributing
June 25, 2026 · View on GitHub
Thanks for wanting to help. Issues, PRs, and ideas are all welcome.
Quick start
pnpm install
pnpm tauri dev
Prereqs: Rust (stable), Node 20+, pnpm, plus your platform's Tauri prerequisites.
Before opening a PR
Run these and make sure they pass:
pnpm exec tsc --noEmit # frontend types
cd src-tauri && cargo clippy # Rust lint
cd src-tauri && cargo fmt # Rust format
Build a release bundle at least once if you touched anything in src-tauri/:
pnpm tauri build
What we want
- Bug fixes — always.
- Features — open an issue first if it's non-trivial. We'd rather discuss the approach than reject a finished PR.
- Docs / typos / small UX fixes — just send the PR.
- New AI providers — see
src/modules/ai/providers/. Keep BYOK; no hardcoded keys. - Themes / icon packs — yes, but keep the bundle size in check.
What we don't want
- Telemetry, analytics, or anything that phones home.
- Hardcoded API keys or accounts. Labonair stays BYOK.
- Large dependencies for small wins. The bundle is ~7 MB and we want it to stay light.
- Sweeping refactors with no functional change.
Code style
- Follow the existing patterns. Read adjacent files before adding new ones.
- TypeScript: no
anyunless you really mean it. - Rust:
cargo fmt+clippyclean. - Few comments. Code should explain itself; comments are for the why, not the what.
- No emoji in code or commit messages.
Commits & PRs
- Commit titles short and contextual:
area: what changed. Look atgit logfor examples. - One logical change per PR. Don't bundle unrelated fixes.
- Describe what and why in the PR body, plus how you tested it. Screenshots / GIFs for UI changes.
Project layout
src-tauri/ Rust backend — PTY, FS, shell, plugins
src/
modules/
terminal/ xterm.js sessions + OSC handlers
editor/ CodeMirror stack
explorer/ File tree
tabs/ Tab model
ai/ Agents, sessions, tools, mini-window
header/ Top bar + search
statusbar/ Bottom bar
shortcuts/ Keymap
components/ shadcn/ui + AI Elements
Security issues
Don't file them as issues — see SECURITY.md.
License
By contributing you agree your work is licensed under Apache-2.0.