Support

Development Guide

Guide for developing and extending Jetpack.

Build & Development Commands

# Install dependencies
pnpm install

# Build all packages (uses Turborepo for caching/parallelization)
pnpm build

# Development mode with watch
pnpm dev

# Run tests
pnpm test

# Run single package tests
cd packages/<package-name> && pnpm test

# Run with coverage
pnpm test -- --coverage

# Lint
pnpm lint

# Clean build artifacts
pnpm clean

# Run CLI after building
pnpm jetpack <command>

# Web UI development
cd apps/web && pnpm dev  # Runs on localhost:3000

# Web UI with custom project directory
JETPACK_WORK_DIR=/path/to/project pnpm --filter @jetpack/web dev

Key Files to Know

FilePurpose
packages/orchestrator/src/SwarmCoordinator.tsAgent lifecycle & work distribution
packages/orchestrator/src/AgentHarness.tsModel-agnostic task execution
packages/data-layer/src/DataLayer.tsUnified Turso/SQLite storage
packages/beads/src/TaskGraph.tsCritical path, fan-out & depth analysis
packages/shared/src/types/All TypeScript types
apps/web/src/app/api/Next.js API routes
apps/cli/src/commands/CLI command implementations

Extending with Custom Adapters

// All adapters follow initialize/close pattern
class CustomAdapter {
  async initialize(): Promise<void> { /* setup */ }
  async close(): Promise<void> { /* cleanup */ }
}

// In SwarmCoordinator
import { CustomAdapter } from '@jetpack/custom-adapter';

const custom = new CustomAdapter(config);
await custom.initialize();

Tech Stack

  • Framework: Next.js 15 with App Router
  • UI Library: React 19
  • Styling: Tailwind CSS with custom animations
  • Drag & Drop: @dnd-kit/core, @dnd-kit/sortable
  • State: Zustand
  • Icons: lucide-react
  • Dates: date-fns
  • TypeScript: Strict mode
  • Build: Turborepo with pnpm workspaces
  • Testing: Vitest