Getting Started
Welcome to the OpsDNA monorepo β the product repository for OpsDNA, an agentic CFO platform initially focused on venture capital firms. This section is for engineers on their first days in the codebase: it gives you the repo tour, the local dev workflow, the bun run verify gate, and the branch-to-prod release flow.
Everything product-shaped lives here: ~120 workspace packages, 7 apps, database migrations, tests, demo scripts, engineering ADRs, and technical docs. The stack is Bun workspaces (pinned bun@1.3.14) + Turborepo, TypeScript throughout, with Effect 4 (beta) as the pervasive runtime abstraction. The backend is an Effect HttpApi surface deployed one-Lambda-per-route on AWS (RDS Postgres 18 behind RDS Proxy); the LP/GP portal is a TanStack Start SSR app on Cloudflare Workers (see docs/architecture-report.md in the repo for the full map).
Why a single monorepo? OpsDNA cares deeply about correctness in fund accounting (ASC 946/820 β see /entity-model for the data-model side), and the repo enforces that with typed package boundaries, Zod-constrained LLM outputs, and roughly forty automated gate scripts that run on every push. Knowing where those gates live and how to run them locally is most of what βonboardingβ means here.
The workspace, not just the repo
Your local machine is expected to hold two sibling checkouts, with a symlink connecting them:
The vault gives agents and humans business context without making it part of the product repo. Do not edit context/vault unless explicitly asked β durable engineering decisions belong in this repo (usually as an ADR under docs/adrs/).
Repo tour
- api β Effect HttpApi; each src/entries/*.ts is one deployed Lambda
- portal β LP/GP web app, TanStack Start SSR on Cloudflare Workers
- chat-agent β CF Workers + Durable Objects agent runtime
- mcp β OpsDNA tools over MCP
- acceptance-lab β end-to-end FundScenario close harness (pglite)
- demo / landing-page
- CLAUDE.md / AGENTS.md β agent + engineer working instructions
- DATA-MODEL.md β canonical entity model (read before any schema change)
- DESIGN.md β design system source of truth
Three root documents are load-bearing and non-optional reading before certain kinds of changes: DATA-MODEL.md before any schema/migration/FK decision, DESIGN.md before any UI decision, and CLAUDE.md for the working rules that apply to everyone (human or agent).
Two gotchas bite new engineers on day one. First, bun version shadowing: on some machines /opt/homebrew/bin/bun (1.2.5) shadows the pinned ~/.bun/bin/bun (1.3.14) on PATH, which produces phantom βCannot find moduleβ walls in fresh worktrees β check which bun and invoke ~/.bun/bin/bun explicitly if in doubt. Second, many packages/*/src dirs contain committed build artifacts (.js/.d.ts); the source of truth is always the .ts files.
Where to next
For the domain itself, continue to /entity-model (the layer cake and identifier policy) and /architecture (runtime and deployment topology).