Getting Started
Prerequisites
- Node.js 20+
- pnpm 9.15+
- Git 2.30+
First-Time Setup
1
Clone the repository
2
Install dependencies
3
Build all packages
Building is required before running the dev server.
4
Copy example config
5
Configure your settings
Running the Dev Server
Project Structure
Development Workflow
Making Changes
1
Create a feature branch
2
Make your changes
- Follow CLAUDE.md conventions
- Add tests for new features
- Update documentation
3
Build and test
4
Commit
- Pre-commit hook will scan for secrets
- Use Conventional Commits
5
Push and open PR
Code Conventions
TypeScript
- ESM modules -
.jsextensions in imports node:prefix for builtins (node:fs,node:path)- Strict mode enabled
typeimports for type-only imports- No
any- useunknown+ type guards - Semicolons, double quotes, 2-space indent - enforced by Prettier
Shell Commands
- Always use
execFile(orspawn) - NEVERexec - Always add timeouts -
{ timeout: 30_000 } - Never interpolate user input - pass as array args
- Do NOT use
JSON.stringifyfor shell escaping
Plugin Development
Every plugin implements one of the core interfaces defined inpackages/core/src/types.ts.
Plugin Pattern
Adding a New Plugin
1
Create plugin package
2
Set up package.json
3
Create src/index.ts
Implement the appropriate interface (Runtime, Agent, Workspace, Tracker, etc.).
4
Register in core
Add to
packages/core/src/services/plugin-registry.ts.5
Add tests
Create
src/index.test.ts with test cases.6
Build and test
Plugin Slots
Eight slots available for plugins:All interfaces are defined in
packages/core/src/types.ts - read this file first!Testing
Test Coverage
The project has 3,288 test cases ensuring reliability and correctness.Security
Secret Scanning
A pre-commit hook automatically scans for secrets:What Triggers the Scanner
- API keys:
lin_api_*,ghp_*,gho_*,sk-*,AKIA* - Tokens:
xoxb-*,xoxa-*, etc. - Webhooks:
https://hooks.slack.com/*,https://discord.com/api/webhooks/* - Private keys:
-----BEGIN PRIVATE KEY----- - Database URLs:
postgres://user:pass@host - Generic patterns:
api_key=...,token=...,password=...
False Positives
If you get a false positive:1
Verify it's not a real secret
Double-check the detected pattern is actually safe.
2
Update allowlist
Edit
.gitleaks.toml:3
Commit the change
Working with Worktrees
If using git worktrees for parallel development:Debugging
Enable Verbose Logging
Attach to tmux Session
Inspect Session Metadata
Check Session Status
Submission Guidelines
Pull Request Process
1
Ensure all tests pass
2
Write a clear description
- What does this PR do?
- Why is it needed?
- How does it work?
- Any breaking changes?
3
Link related issues
Use
Fixes #123 or Closes #123 in the PR description.4
Request review
Tag relevant maintainers or wait for automatic review assignment.
Commit Message Format
Use Conventional Commits:Code Review
Expect feedback on:- Code quality and style
- Test coverage
- Documentation updates
- Security considerations
- Performance implications
Resources
- CLAUDE.md — Code conventions and architecture
- SECURITY.md — Security best practices
- packages/core/README.md — Core architecture
- agent-orchestrator.yaml.example — Config reference
Getting Help
Need help contributing?- Check existing issues and discussions
- Review the troubleshooting guide
- Ask questions in GitHub Discussions
- Join the community channels
