ChangeGraphChangeGraph

Reference

Open source tools

Libraries already wired into the product pipeline, including the in-repo Mastra-compatible runtime (src/lib/agents/mastra-runtime, package name @mastra/core). Agent.generate throws; model HTTP is the ChangeGraph provider router. This is not the GitHub / Sentry / Vercel catalog. Scores stay correlation on a 0–100 scale. Explain and investigate still require a configured LLM provider (not_configuredwhen unset). See Where the running app reads data.

ToolWhat we use it forUpstreamPipeline
HeadroomOptional post-pack compress after redaction. The packer works without it. If the proxy is down, ChangeGraph falls back to the packed prompt.github.com/headroomlabs-ai/headroomAfter redact + pack, before the model. HEADROOM_URL / HEADROOM_API_KEY / HEADROOM_TIMEOUT_MS. Packer + explain/investigate run without Headroom.
MastraIn-repo Mastra-compatible runtime (workspace package @mastra/core at src/lib/agents/mastra-runtime). Workflows explain_incident and investigate_incident, plus gated propose_incident, critic_incident, and durable investigate resume. Agent.generate throws; model HTTP is the ChangeGraph provider router (src/lib/llm/providers.ts). AgentConfig.model is a string or function. Never mutates ranks. Provider required (not_configured when unset).mastra.aiAfter packed context, before UI/MCP. Not the npm @mastra/core package.
DrizzleTyped ORM and migrations for the tenant-scoped change graph.orm.drizzle.teamSchema and migrations (src/lib/db, drizzle/). pnpm db:push and pnpm seed write Postgres.
ZodRuntime schemas for evidence, packed context, investigation results, and input.zod.devGates and adapters, including packedContextSchema.
VitestUnit tests and API-level e2e (pnpm test, pnpm test:e2e).vitest.devCI quality gate. No Playwright in MVP.
BiomeLint and format (pnpm lint, pnpm format).biomejs.devRepo-wide check in pnpm ci.
GitHub ActionsPull request and main CI: lint, typecheck, Vitest, security smoke, and e2e against a Postgres service container.docs.github.com/actionsQuality gate before merge (.github/workflows/ci.yml).
Next.jsApp Router for the product app and this docs site.nextjs.orgRoot src/app and apps/docs.
Tailwind CSSUtility styling for product and docs (dark-first), with shadcn-style primitives (buttons, inputs, panels) and no shadcn package.tailwindcss.comGlobal CSS and component classes under src/components and apps/docs.
TypeScriptStrict typing across app, agents, and docs.typescriptlang.orgWhole repo (pnpm typecheck).
ReactUI for product and docs.react.devsrc/app, src/components, apps/docs.
pnpmWorkspace package manager (pinned packageManager).pnpm.ioInstall, scripts, apps/* workspace.
postgres.jsPostgres driver used by Drizzle.github.com/porsager/postgresDATABASE_URL connections.
MCP TypeScript SDKRead-only ChangeGraph MCP server (stdio). Gated MCP client (FEATURE_MCP_CLIENT, default off) is a read adapter and fails closed as not_configured without a registry. The full multi-server registry is deferred.github.com/modelcontextprotocol/typescript-sdkServer: src/mcp (pnpm mcp). Client: src/lib/mcp-client.

Headroom

Headroom is an optional post-pack compressor. ChangeGraph redacts secrets, packs a budgeted compact digest with frozen ranks, then may POST that already-redacted text to a Headroom proxy. The packer, explain_incident, and investigate_incident all work without Headroom. Investigation still needs an LLM provider.

HEADROOM_URL
Proxy base URL (alias HEADROOM_BASE_URL). Unset means packer only.
HEADROOM_API_KEY
Optional bearer for the proxy.
HEADROOM_TIMEOUT_MS
Default 2500. On timeout or 5xx, fallback uses the packed prompt.

Upstream: headroomlabs-ai/headroom. Proxy notes: Headroom docs. Operators who want extra compression run headroom proxy and set HEADROOM_URL. Domain packages do not import Headroom.

Engineering SoT: docs/INTEGRATIONS_OSS.md · packing: Agent context.