Thanks for your interest in contributing! Here's how to get started.
- Fork the repo and clone your fork
- Install dependencies:
npm install - Install Playwright:
npx playwright install chromium(required for Browser tab) - Set up environment:
cp .env.example .env # Edit .env with your gateway URL and token # Find token: openclaw config get gateway.auth.token
- Run dev server:
npm run dev - Make your changes on a feature branch
- Open a PR against
main
# Install dependencies
npm install
# Install Playwright browser
npx playwright install chromium
# Dev server (default: localhost:3000)
npm run dev
# Type check
npm run typecheck
# Lint
npm run lint
# Build for production
npm run buildFirst-time setup:
- Copy
.env.exampleto.env - Set
CLAWDBOT_GATEWAY_URL(default:ws://127.0.0.1:18789) - Set
CLAWDBOT_GATEWAY_TOKEN(find withopenclaw config get gateway.auth.token) - See README.md for detailed environment variable documentation
- One PR per feature/fix — keep them focused
- Test your changes — make sure the app builds and runs
- Describe what you changed — clear PR title + description
- No secrets — never commit API keys, tokens, or passwords
- Follow existing patterns — match the code style you see
- Framework: TanStack Start + React
- Styling: Tailwind CSS
- State: TanStack Query + React hooks
- Gateway communication: WebSocket via OpenClaw RPC
Key directories:
src/
├── components/ # Shared UI components
├── hooks/ # Custom React hooks
├── lib/ # Utilities and helpers
├── routes/ # TanStack Router pages + API routes
├── screens/ # Major screen layouts (chat, dashboard)
└── server/ # Server-side gateway communication
- Use GitHub Issues
- Include: what you expected, what happened, steps to reproduce
- Screenshots help!
By contributing, you agree that your contributions will be licensed under the MIT License.