Boop automates a development workflow by chaining BMAD (planning), Ralph (building), and Claude Code teams (review) into a single pipeline. CLI tool distributed via npm (npx boop).
Built as a fork of OpenClaw — an open-source multi-channel AI gateway (Node.js 22+, TypeScript, pnpm).
Repo: https://github.com/openclaw/openclaw.git (MIT license, main branch)
src/gateway/— Core gateway server (message routing, auth, sessions, models, agents)src/channels/— Channel framework (registry, session, targets)src/whatsapp/— WhatsApp adapter (uses@whiskeysockets/baileys)src/telegram/— Telegram adapter (usesgrammy)src/cli/— CLI entry point and commandssrc/agents/— Agent runtimesrc/config/— Configuration systemsrc/sessions/— Session managementsrc/tts/— Text-to-speech integrationsrc/shared/— Shared utilitiessrc/types/— TypeScript typessrc/security/— Security modulesrc/process/— Process managementsrc/logging/— Logging subsystemsrc/browser/— Playwright integrationsrc/hooks/— Hook system- Root config:
tsconfig.json,package.json,pnpm-workspace.yaml,.env.example,vitest.*.config.ts
Remove completely:
extensions/— All 36 plugin extensions (clawhub marketplace plugins)skills/— All 50+ skill directories (clawhub skills)src/plugins/— Plugin framework (loader, registry, hooks, install, manifest)src/plugin-sdk/— Plugin SDKsrc/canvas-host/— Canvas systemapps/— Native iOS/Android/macOS appsSwabble/— Swift packagepackages/— Legacy bot packages (clawdbot, moltbot)ui/— Web UIvendor/— Vendored dependenciesdocs/— OpenClaw docs (we have our own)
Remove channel adapters (keep only WhatsApp + Telegram):
src/discord/src/slack/src/line/src/signal/src/imessage/src/web/(the web/HTTP channel adapter — NOT the browser module)
Remove features not needed for MVP:
src/canvas-host/src/pairing/— Device pairingsrc/link-understanding/— URL content extractionsrc/media-understanding/— Media content analysissrc/macos/— macOS-specific integrationsrc/daemon/— Daemon modesrc/terminal/— Terminal integrationsrc/tui/— Terminal UIsrc/wizard/— Setup wizardsrc/polls.ts— Polling systemsrc/auto-reply/— Auto-reply systemsrc/cron/— Scheduled taskssrc/node-host/— Node hostingsrc/markdown/— Markdown processing
After stripping, update all imports, remove dead references from src/channels/registry.ts, src/gateway/, package.json dependencies. Run typecheck to confirm clean.
boop/
├── package.json
├── pnpm-lock.yaml
├── tsconfig.json
├── CLAUDE.md
├── README.md
│
├── src/
│ ├── cli/
│ │ └── program.ts # CLI entry point (npx boop)
│ │
│ ├── gateway/ # OpenClaw gateway (stripped)
│ │ └── server.ts # Core message routing
│ │
│ ├── channels/ # Notification adapters
│ │ ├── whatsapp/
│ │ └── telegram/
│ │
│ ├── voice/ # ElevenLabs TTS (dormant until Growth)
│ │ └── boop-voice.ts
│ │
│ ├── profile/ # Developer profile system
│ │ ├── onboarding.ts
│ │ ├── schema.ts
│ │ └── defaults.ts
│ │
│ ├── pipeline/ # Core pipeline orchestrator
│ │ ├── orchestrator.ts
│ │ ├── epic-loop.ts
│ │ └── state.ts
│ │
│ ├── planning/ # Planning phase (BMAD-derived)
│ │ ├── viability.ts
│ │ ├── prd.ts
│ │ ├── architecture.ts
│ │ └── stories.ts
│ │
│ ├── bridge/ # BMAD → Ralph format converter
│ │ ├── parser.ts
│ │ └── converter.ts
│ │
│ ├── build/ # Build phase (Ralph-derived)
│ │ ├── ralph-loop.ts
│ │ ├── story-runner.ts
│ │ ├── reality-check.ts
│ │ └── progress.ts
│ │
│ ├── review/ # Review phase (Claude Code team)
│ │ ├── team-orchestrator.ts
│ │ ├── code-reviewer.ts
│ │ ├── tech-debt-auditor.ts
│ │ ├── gap-analyst.ts
│ │ ├── refactoring-agent.ts
│ │ ├── test-hardener.ts
│ │ ├── security-scanner.ts
│ │ ├── qa-smoke-test.ts
│ │ └── fix-runner.ts
│ │
│ ├── scaffolding/ # Project scaffolding from profile
│ │ ├── generator.ts
│ │ └── defaults/
│ │
│ ├── benchmark/ # Benchmark harness
│ │ ├── types.ts # Suite, case, result, metrics interfaces
│ │ ├── metrics-collector.ts # Per-phase timing/token/retry accumulator
│ │ ├── mock-provider.ts # Canned Claude responses for dry-run
│ │ ├── suite-loader.ts # YAML suite parser and validator
│ │ ├── runner.ts # Execute cases against pipeline
│ │ ├── scorecard.ts # JSON + markdown report generation
│ │ ├── history.ts # Persist/load runs to ~/.boop/benchmarks/
│ │ ├── compare.ts # Diff runs, detect regressions
│ │ └── commands.ts # CLI subcommand registration
│ │
│ └── shared/ # Shared utilities
│ ├── logger.ts
│ ├── retry.ts
│ └── types.ts
│
├── prompts/ # BMAD planning prompt library
│ ├── viability/
│ ├── prd/
│ ├── architecture/
│ ├── stories/
│ ├── personas/
│ ├── templates/
│ └── checklists/
│
├── benchmarks/ # Benchmark suite definitions + fixtures
│ ├── suites/ # YAML suite files (smoke, planning-only)
│ └── fixtures/
│ └── mock-responses/ # Canned responses for dry-run mode
│
└── test/
├── unit/
├── integration/
└── fixtures/
User-side directories (created at runtime):
~/.boop/
├── profile.yaml
├── memory/
├── benchmarks/ # Benchmark run history
│ ├── index.json
│ └── runs/
└── logs/
<project>/.boop/
├── state.yaml
├── prd.json
├── progress.txt
├── planning/
└── reviews/
- Runtime: Node.js 22+
- Language: TypeScript 5.x
- Package manager: pnpm
- AI model: Claude Opus 4.6 (all phases)
- Agent runtime: Pi Agent Core (from OpenClaw's
@mariozechner/pi-agent-core) - Test runner: vitest (OpenClaw uses it)
- Linter/formatter: oxlint + oxfmt (OpenClaw's tooling)
- Build: tsdown (OpenClaw's bundler)
- Files:
kebab-case.ts - Classes/Types:
PascalCase - Functions/Variables:
camelCase - Constants:
UPPER_SNAKE_CASE - Directories:
kebab-case
IDLE → PLANNING → BRIDGING → SCAFFOLDING → BUILDING → REVIEWING → SIGN_OFF → DEPLOYING → RETROSPECTIVE → COMPLETE
SCAFFOLDING runs once per project (first epic only). DEPLOYING requires cloudProvider config. State persisted to .boop/state.yaml.
Full architecture doc: docs/architecture.md
Full PRD: docs/PRD.md
Epic breakdown: docs/epics.md
These are the critical packages to keep in package.json after stripping:
@mariozechner/pi-agent-core— Agent execution engine@whiskeysockets/baileys— WhatsAppgrammy— Telegramexpress— Gateway HTTP serverws— WebSocketplaywright-core— Browser automationcommander— CLIsharp— Image processing (if needed)vitest— Testingtsx— TypeScript executiontsdown— Bundlingoxlint/oxfmt— Linting/formatting