Thank you for your interest in contributing!
- Fork the repository
- Clone your fork
- Install dependencies:
npm install - Build the project:
npm run build - Run tests:
npm test
- Node.js 18+
- Google Chrome
# Build everything
npm run build
# Build CLI only (with watch mode)
npm run dev
# Build source only
npm run build:src# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Run specific test file
npm test -- session-manager.test.ts# Start MCP server locally
node dist/cli/index.js serve --auto-launch
# Run doctor check
node dist/cli/index.js doctor- Use TypeScript for all code
- Follow existing code patterns
- Use meaningful variable and function names
- Add comments for complex logic
- Keep functions focused and small
Follow conventional commit format:
type(scope): description
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation onlystyle: Formatting, missing semicolons, etc.refactor: Code change that neither fixes a bug nor adds a featuretest: Adding missing testschore: Maintenance
Examples:
feat(session): add session timeout configurationfix(cdp): handle reconnection on detachdocs(readme): update installation instructions
- Create a feature branch from
main - Make your changes
- Add tests if applicable
- Update documentation if needed
- Ensure all tests pass:
npm test - Submit a pull request
- Tests added/updated
- Documentation updated
- Builds successfully (
npm run build) - All tests pass (
npm test) - Commit messages follow convention
src/
├── mcp-server.ts # MCP protocol server (stdio JSON-RPC)
├── session-manager.ts # Browser session lifecycle
├── index.ts # Main entry point
├── cdp/ # Chrome DevTools Protocol layer
│ ├── client.ts # CDP client wrapper
│ └── connection-pool.ts # Connection pooling
├── chrome/ # Chrome process management
│ ├── launcher.ts # Auto-launch Chrome with debugging port
│ └── pool.ts # Browser context pool
├── tools/ # MCP tool implementations (36 tools)
│ ├── index.ts # Tool registration
│ ├── navigation.ts # navigate, page_reload
│ ├── computer.ts # screenshot, click, keyboard, scroll
│ ├── read-page.ts # Accessibility tree parsing
│ ├── find.ts # Natural language element search
│ ├── form.ts # form_input, fill_form
│ ├── orchestration.ts # workflow_init, worker_create, etc.
│ └── ... # Other tool modules
├── orchestration/ # Parallel workflow engine
├── hints/ # Adaptive Guidance system
│ ├── hint-engine.ts # Rule evaluation engine
│ └── rules/ # Error recovery, sequence detection, etc.
├── dashboard/ # Terminal dashboard (optional)
├── resources/ # MCP resources (usage guide)
├── config/ # Global configuration
├── types/ # TypeScript type definitions
└── utils/ # Shared utilities
cli/
├── index.ts # CLI entry point (setup, serve, doctor, etc.)
└── update-check.ts # Version update checker
- CDP-based: Connects to Chrome via Chrome DevTools Protocol (port 9222)
- Session Isolation: Each Worker gets an isolated browser context (separate cookies, localStorage)
- MCP Protocol: Communicates with Claude Code via JSON-RPC over stdio
- Adaptive Guidance: Hint engine injects
_hintfields into tool responses to prevent LLM mistakes - Parallel Workflows: Orchestration engine manages multiple Workers for concurrent tasks
- Test individual functions and classes
- Mock CDP connections and Chrome APIs
- Focus on business logic
- Test component interactions (e.g., multi-worker workflows)
- Use realistic scenarios
- Verify error handling and recovery
- Concurrent operations and race conditions
- Large data handling
- Error recovery under load
Looking for something to work on? Here are the key areas where contributions would make the biggest impact.
OpenChrome is a standard MCP server, but currently only tested with Claude Code. Help us verify and support other MCP clients. Codex CLI now has a dedicated setup/config preset, but runtime validation is still needed across real environments.
| Client | Status | What's Needed |
|---|---|---|
| Claude Code | Verified | - |
| Cursor | Untested | Test all 36 tools, verify instructions field |
| Windsurf | Untested | Test all 36 tools, verify instructions field |
| Codex CLI | Preset added, runtime validation needed | Verify initialize, tools/list, and at least one browser-backed tool call using the documented Codex config |
| VS Code + MCP | Untested | Test basic tool flow |
How to contribute: Pick a client, run the test suite against it, report what works and what doesn't. Adapt oc setup to support the client if needed.
Currently developed and tested on macOS. Windows and Linux need attention.
- Windows: Chrome path detection,
--remote-debugging-portlaunch, named pipes vs Unix sockets - Linux: Headless Chrome in CI environments, Wayland vs X11 screenshot handling
- CI/CD: GitHub Actions workflow for automated testing across platforms
The README claims 80x speedup, but we need reproducible benchmarks.
- Benchmark suite: Automated comparison vs Playwright MCP on standard tasks (navigate, screenshot, form fill)
- Memory profiling: Measure actual memory usage with 5, 10, 20 Workers
- Latency analysis: Tool-by-tool latency comparison with other MCP browser tools
Currently Chrome-only via CDP. Other browsers have similar protocols.
- Edge: Shares CDP — should work with minimal changes (needs testing)
- Firefox: Uses its own remote debugging protocol (significant work)
- Safari: Limited Web Inspector protocol (research needed)
The hint engine (src/hints/) currently has 21 static rules. Areas to improve:
- More error patterns: Catalog common LLM mistakes and add recovery hints
- Client-specific hints: Different LLMs make different mistakes — adapt hints per client
- Learned pattern sharing: Export/import learned patterns across users
- Benchmark hint effectiveness: Measure how hints reduce retry loops and wasted tokens
- Accessibility testing: Tools for WCAG compliance checking
- Visual regression: Screenshot diff between runs
- Network HAR export: Export full network traffic as HAR files
- Video recording: Record browser session as video/GIF
- Multi-tab orchestration: Coordinate actions across tabs within a single Worker
oc setupfor other clients: Auto-configure for Cursor, Windsurf, etc.oc benchmark: Built-in benchmark commandoc replay: Replay a recorded session for debugging- Plugin system: Allow users to register custom tools
- API reference: Auto-generated docs for all 36 tools with examples
- Tutorials: Step-by-step guides (e.g., "Automate your CI dashboard")
- Troubleshooting guide: Common issues and solutions per platform
If you're new to the project, these are good starting points:
- Add a new hint rule to
src/hints/rules/(follow existing patterns) - Test OpenChrome on a non-Claude MCP client and report results
- Add Windows Chrome path detection in
src/chrome/launcher.ts - Write an example script using OpenChrome tools
- Improve error messages for common setup failures
- Open an issue for bugs or feature requests
- Check existing issues before creating new ones
By contributing, you agree that your contributions will be licensed under the MIT License.