Thanks for your interest in contributing to Tiny Claw! Every contribution - code, docs, bug reports, or ideas - helps make AI companions more accessible to everyone.
Please read our Code of Conduct before getting started.
By submitting a pull request, you agree to our Contributor License Agreement. The CLA is required because Tiny Claw uses a dual-licensing model (GPL-3.0 + Commercial). First-time contributors will be prompted to sign the CLA automatically via CLA Assistant when opening a PR.
# Fork the repo on GitHub first, then:
git clone https://github.com/YOUR_USERNAME/tinyclaw.git
cd tinyclaw
git remote add upstream https://github.com/warengonzaga/tinyclaw.git
bun installbun dev # Start the CLI in development mode
bun dev:ui # Start the web UI in development mode
bun build # Build all packages
bun test # Run the full test suiteTiny Claw is a Bun workspace monorepo. The core stays tiny - everything else is a plugin.
tinyclaw/
packages/ Core library packages (tiny, focused, no circular deps)
plugins/ Plugin packages (channels, providers, tools)
src/cli/ CLI entry point
src/web/ Web UI (Svelte 5)
See docs/ARCHITECTURE.md for the full architecture overview.
- Create an issue first - describe what you want to work on before writing code.
- Sync with upstream - keep your fork current:
git fetch upstream && git merge upstream/dev - Create a branch from
devusing one of these prefixes:feature/*- new functionalityfix/*- bug fixesdocs/*- documentation changesrefactor/*- code restructuring without behavior changes
- Make your changes - write code, add tests, update docs as needed.
- Verify locally:
bun build # Ensure it compiles bun test # Ensure tests pass
- Submit a PR targeting the
devbranch (nevermain).
This project follows the Clean Commit convention. See AGENTS.md for the full type reference.
| Emoji | Type | What it covers |
|---|---|---|
| 📦 | new |
Adding new features, files, or capabilities |
| 🔧 | update |
Changing existing code, refactoring, improvements |
| 🗑️ | remove |
Removing code, files, features, or dependencies |
| 🔒 | security |
Security fixes, patches, vulnerability resolutions |
| ⚙️ | setup |
Project configs, CI/CD, tooling, build systems |
| ☕ | chore |
Maintenance tasks, dependency updates, housekeeping |
| 🧪 | test |
Adding, updating, or fixing tests |
| 📖 | docs |
Documentation changes and updates |
| 🚀 | release |
Version releases and release preparation |
Examples:
📦 new (core): add conversation memory system
🔧 update (api): improve error handling
🧪 test (memory): add unit tests for temporal decay
📖 docs: update installation instructions
Rules: lowercase type, present tense, no trailing period, under 72 characters.
- An issue exists and is referenced in the PR description (e.g.,
Closes #42) - PR targets the
devbranch - All commits follow the Clean Commit convention
- Code builds successfully (
bun build) - Tests pass (
bun test) - Documentation is updated (if applicable)
- CLA is signed
Include a clear summary of what changed and why. Reference the issue number. If the change is visual, include screenshots or recordings.
- A maintainer will review your PR and may request changes.
- Please respond to feedback promptly - stale PRs may be closed after 30 days of inactivity.
- Once approved, a maintainer will merge your PR.
Tests live in tests/ directories alongside each package's src/. We use Bun's built-in test runner.
bun test # Run all tests
bun test packages/memory # Run tests for a specific package
bun test --watch # Run in watch modeWhen contributing code, please:
- Add tests for new features and bug fixes.
- Keep tests focused - one behavior per test.
- Use descriptive test names that explain what is being tested.
- Use TypeScript with strong typing - avoid
any. - Follow existing patterns and conventions in the codebase.
- Keep functions small and focused with meaningful names.
- Handle errors gracefully - don't swallow exceptions silently.
- No circular dependencies between packages.
Open a new issue and include:
- A clear, descriptive title.
- Steps to reproduce the issue.
- Expected vs. actual behavior.
- Your environment (OS, Bun version, Node version if applicable).
- Relevant logs or error messages.
Please search existing issues first to avoid duplicates.
Feature ideas are welcome! Open an issue with:
- A clear description of the problem the feature solves.
- Your proposed solution or approach.
- Any alternatives you've considered.
- Check the docs/ folder for architecture and design documentation.
- Browse existing issues and discussions.
- Follow @TinyClawAI and @warengonzaga on X for updates.
💻💖☕ Made with ❤️ by the Tiny Claw community