3 months free, then 50% off for 12 months. For TypeScript polyrepo teams. Apply to see if you qualify. Apply now

Stop your agents guessing. The TypeScript context layer for coding agents.

Cross-repo AI agents often guess endpoints and types, and duplicate business logic, shipping code that compiles but breaks in production.

Carrick serves live types, routes, function intents, and contracts directly to your agents via MCP—and validates every PR in CI—replacing agent guesswork with ground truth.

0.0 The workspace

One shot. Multi-repo.

AI models don't fail multi-repo tasks because they're bad at coding—they fail because they lack context. Carrick serves ground-truth architecture directly to the agent, nearly tripling first-pass accuracy.

1.0Outcomes
Agent accuracy on multi-repo work
Same model, same prompt, same task.
Without Carrick
Without Carrick, 33% of runs got it right 33%
Checks Carrick first
Checking Carrick first, 89% of runs got it right 89%
On the hardest task measured, every run without Carrick produced the same incorrect code.
2.0How it works

Every merge updates
your agent's context

When a PR lands, Carrick re-indexes your code by function intent, routes, and types, and serves it to your agent over MCP.

feature/update-orders → main
GitHub Actions · carrick / analyze

Cross-boundary type safety

The compiler's type safety stops at the repo boundary. It can't see the service on the other side of a fetch. Carrick resolves request and response types across that boundary, mapping routing topology and middleware chains, so contract drift surfaces without a dedicated test suite.

3.0Type mapDocs
3.1Routing topology 3.2Middleware chains

Grep by meaning, not by name

About half the time an agent completes a task, it has quietly rewritten something the codebase already had. Grep only finds the name it guessed. Carrick maps every function to its intent, so agents find the implementation that exists and build on it.

4.0Semantic searchDocs
4.1Vector embeddings 4.2MCP tools

Catch contract drift in the pull request

The same index your agent uses runs in CI. When a producer and consumer drift apart, whichever protocol they speak, Carrick flags the mismatch in the PR before it merges. It also flags functions duplicated across repos and dependency version conflicts.

5.0CI checksDocs
5.1Contract drift 5.2Duplicate functions 5.3Version conflicts
6.0Install
Live in three steps Quickstart
  1. 01Sign in with GitHub
  2. 02Install the GitHub App on your repos
  3. 03Add Carrick to your Actions workflows
No new infrastructure. No changes to your application code.
7.0Blog

Notes from the boundary

How Many Endpoints Does It Take to Ask 'How Was Your Experience?'
The survey is six endpoints. The product is 167.
Introducing Carrick
The context layer for polyrepo TypeScript teams
Benchmarking LLM Structured Outputs
Three Providers, Three Symmetric Ways They Break
View all posts →
8.0FAQ

Common questions

Carrick runs as a GitHub Action and builds three layers per TypeScript repo: a mount graph (endpoints with their full paths and middleware chains, via SWC), expanded AST types (compiler-grade, fully resolved via ts-morph), and intent embeddings (one-to-two-sentence descriptions vectorised with Bedrock Titan v2). Your agent queries them via MCP, including semantic search across every repo in the project, with exact cosine retrieval rather than approximate.

Grep finds the name you guessed. Carrick matches on behavior and intent, so the agent finds the function that does what you described, even when it's named something unexpected in a sibling repo. Embeddings are exact-cosine across the whole project, so misses don't get silently filtered.

Your agent reads one structured response per question instead of grepping and reading source. A 'what does this endpoint return' query returns the resolved type, not the file it lives in. A 'find functions that do X' query returns ranked matches, not a directory tree to crawl. A question costs the same handful of tokens whether the project has three repos or thirty.

During a scan your source is analyzed in flight, including by our LLM pipeline, and is never stored. What persists is the index: endpoint signatures, resolved types, dependency information, and one-line intent descriptions. Workspaces are fully isolated from each other, and all stored data is encrypted at rest.

TypeScript today. Once the core tooling is refined, we plan to expand to other major languages.

A TypeScript codebase with a package.json, scanned by a GitHub Action. Any package manager works — npm, pnpm, Yarn, or Bun. Carrick reads the manifest and never runs your install, so it needs no lockfile, no node_modules, and no special CI setup. The one setup it can't scan yet is a Deno-native project with no package.json. If anything else doesn't scan cleanly, report it and we'll fix it forward.

Flat monthly pricing by repository count: €299/mo up to 5 repositories, €499/mo for 5 to 25, and a custom price above that. Every band includes the whole product and unlimited agent queries. You get full access for 30 days with no card. A limited number of teams can apply to get three months free, then 50% off for the following twelve months.

Direct support from the founder, usually same-day. You're talking to the person who built Carrick, so bug reports and feature requests land without a queue.

One index of your whole system. Every service, type and contract, served to agents over MCP and checked in CI.

Get started now Apply to get 3 months free Full access for 30 days