Thanks for your interest — we welcome contributions from everyone. Please read this quick guide before opening an issue or pull request.
- Bug reports — file an issue with the bug report template. Minimal reproduction steps make a big difference.
- Feature requests — file an issue with the feature request template. Explain the problem, not just the proposed solution.
- Documentation — typo fixes, clarity improvements, and examples are always welcome.
- Code — bug fixes, performance improvements, and feature implementations. For anything non-trivial please open an issue first to align on approach.
- Plugins / Skills / MCP servers — extend thClaws via its plugin system without modifying the core.
Prerequisites: Rust 1.85+, Node.js 20+, pnpm 9+.
git clone https://github.com/thClaws/thClaws.git
cd thClaws
# One-shot: build frontend then cargo build --features gui
./scripts/build.sh # macOS / Linux
./scripts/build.ps1 # Windows PowerShell
# Verification suite (cargo fmt --check, clippy, tsc, cargo test)
./scripts/build.sh --check
./scripts/build.ps1 -CheckThe helper enforces frontend-before-cargo order — the GUI build embeds
frontend/dist/index.html at compile time via include_str!, so a bare
cargo build --features gui without prior pnpm build fails with a
confusing missing-file error.
If you prefer the underlying commands directly:
cd frontend && pnpm install && pnpm build && cd ..
cargo build --features gui
cargo test --features guiUseful commands:
| Command | Purpose |
|---|---|
cargo test --features gui |
Run the full test suite |
cargo fmt --check |
Verify formatting |
cargo clippy --features gui -- -D warnings |
Lint |
cd frontend && pnpm tsc --noEmit |
Type-check frontend |
cargo run --features gui |
Launch the GUI |
cargo run -- --cli |
Launch the CLI |
- Fork the repo and create a feature branch from
main. - Commit with a descriptive message. We loosely follow Conventional Commits (
feat:,fix:,docs:,refactor:,test:) but it's not strictly enforced. - Test — make sure
cargo test --features guipasses and there are no new warnings. - Format + lint —
cargo fmtand address clippy findings. - Push and open a PR using the PR template.
- Link issues — reference any issues the PR closes or relates to.
- Default to no comments. Only add a comment when the why is non-obvious.
- Favor small, focused PRs over large sweeping changes.
- Match existing style in the surrounding code.
- Keep changes in-scope — don't refactor unrelated code in the same PR.
- For new features, add tests alongside the implementation.
We accept contributions under the dual MIT / Apache-2.0 license (see LICENSE-MIT and LICENSE-APACHE). By submitting a pull request, you agree that your contribution is licensed under the same terms.
- GitHub Discussions — open-ended questions and ideas
- GitHub Issues — bug reports, feature requests
- Email — security and sensitive topics: security@thaigpt.com
By participating in this project you agree to abide by the Code of Conduct.