Thank you for your interest in contributing to MxClaw! 🦞
# Clone the repository
git clone https://github.com/mxclaw/mxclaw.git
cd mxclaw
# Install dependencies (pnpm required)
pnpm install
# Build all packages
pnpm build
# Run tests
pnpm vitest run
# Start development mode
pnpm gateway:devMxClaw is a pnpm workspace monorepo with the following packages:
| Package | Description |
|---|---|
packages/core |
Shared types, Zod schemas, config loader |
packages/gateway |
Main server — HTTP, WebSocket, message routing |
packages/cli |
CLI interface (mxclaw gateway, mxclaw doctor, etc.) |
packages/tools |
Agent tools (bash, browser, canvas, cron, etc.) |
packages/security |
Pairing, allowlists, token rotation, approval gating |
packages/storage |
JSONL file-based persistence, embeddings |
packages/logging |
Structured logging with subsystem levels |
packages/skills |
SKILL.md parser and skill loader |
packages/voice |
Voice providers (OpenAI Realtime, ElevenLabs, System TTS) |
packages/plugin-system |
Plugin discovery and activation |
packages/control-ui |
React control dashboard |
packages/channel-* |
Channel plugins (Discord, Telegram, Slack, etc.) |
packages/provider-* |
LLM provider plugins (OpenAI, Anthropic, Gemini, etc.) |
- TypeScript strict mode
- Use Zod for all config/API validation
- Export types from
@mxclaw/core - Use
vitestfor testing - Keep functions small and well-documented
- Fork the repo and create a feature branch
- Add tests for new functionality
- Run
pnpm vitest runandpnpm tsc --noEmit - Submit a PR with a clear description
- Create
packages/channel-<name>/ - Add
manifest.jsonwithtype: "channel" - Implement the
ChannelPlugininterface from@mxclaw/core - Export as default from
src/index.ts
- Create
packages/provider-<name>/ - Add
manifest.jsonwithtype: "provider" - Implement the
ProviderPlugininterface - Support both
completeandcompleteStream
- Use GitHub Issues
- Include: OS, Node version, config (redacted), error logs
- For security vulnerabilities, see SECURITY.md
MIT — see LICENSE