Architecture, monorepo structure, and development workflow for engineers building on Forge.
Forge is a hybrid workforce orchestration platform. This section is for engineers who want to build on, into, or around it — whether that means adding a new gateway adapter, extending the Convex schema, writing a Convex-native agent, or contributing to the Forge Console.
This is the engineering-facing companion to the Platform Overview. That page explains what Forge does. This page explains how the codebase is organized and how to work in it.
Every package has a clear dependency direction. Circular dependencies are not permitted.
Package Dependency Graph
@tangogroup/shared
Foundation — types, Zod schemas, .lobsterX schema. No internal deps.
^
@tangogroup/bridge
Depends on shared
@tangogroup/bridge-client
Depends on shared
@tangogroup/forge-mcp
Depends on shared
^
adapter-openclaw
Depends on bridge
adapter-claude-sdk
Depends on bridge
adapter-vercel-ai
Depends on bridge
^
@gloo/web (Forge Console)
Depends on bridge-client, shared, ui
@gloo/ui
Standalone React components
@convex-dev/agentsConvex component, used by convex/agents/
Packages use barrel exports (index.ts). Import from the package name, not deep paths:
// Correctimport type { LobsterXStep } from "@tangogroup/shared";// Wrong -- never import from internal pathsimport type { LobsterXStep } from "@tangogroup/shared/src/lobsterx-schema";
No any in TypeScript. Use existing types, create interfaces, or use unknown / Record<string, unknown>. If truly unavoidable, add a biome-ignore comment with a reason.
pnpm install # Install all dependenciespnpm build # Build all packages (Turborepo)pnpm dev # Start all services in dev modepnpm lint # Lint all packages (Biome)pnpm test # Run all tests (Vitest)pnpm format # Format all files (Biome)