Now in Beta

The missing context layer
for AI coding agents.

Stop feeding entire repos into LLM context windows. Carrick indexes your code by function intent, routes, and types, and serves it to your agent over MCP.

Vector-indexed IntentsExpanded AST TypesModel Context Protocol (MCP)CI-Native
feature/update-orders → main
GitHub Actions · carrick / analyze

Grep by meaning, not by name.

Carrick keeps a map of every function in your codebase, described by what it does. Your agent looks up the right one in a single call instead of grepping and reading files to find it.

carrick list_function_intents
your codebase
Tokens
One call instead of fifty.
Without Carrick, your agent burns context running grep and opening files to find the right function. With Carrick, it asks once and gets the answer. The tokens stay on the actual work.
Accuracy
The right code, not a guess.
Your agent finds your existing utility instead of inventing a new one that does almost the same thing. Less duplication, fewer parallel implementations to chase down later.
Types
Knows the shape before reading the code.
Carrick already has the full type for every function and endpoint. Your agent gets what something takes and returns without opening a single file.

Cut context overhead by 95%+.

Passing raw files into a prompt is an anti-pattern. Agents burn tokens grepping for logic that one MCP call could return directly. Carrick decouples discovery from reading, so context grows linearly with your codebase instead of exponentially.

010k20k30k40k1 repo3 repos10 reposcodebase size →tokens per querygrepcarrick

Measured on semantic lookups across three TypeScript microservices, then extrapolated to a 50-source-file baseline. Keyword-friendly queries sit toward the low end of the range; the gap widens with codebase size and the number of repos searched.

See how your services connect.

Carrick maps every endpoint with its full path and middleware chain. It's a live architectural map across your org, regenerated on every PR.

Catch contract drift in the pull request.

The same index your agent uses runs in CI. When a producer and consumer drift apart, Carrick flags the mismatch in the PR before it merges.

github-actionsbot
🪢 CARRICK: API Analysis Results
Analyzed 14 endpoints and 8 API calls across 3 repositories.
Found 2 critical mismatches, 3 connectivity issues, 1 dependency conflict.
2 Critical: API Mismatches
Type Compatibility Issue: GET /users/:id/comments
Producer: GET /users/:id/comments → Response
Consumer: GET /users/:userId/comments → Response
missing properties from Comment[]: length, pop, push, concat, and 28 more.
Type Compatibility Issue: GET /api/comments
Producer: GET /api/comments → Response
Consumer: GET /api/comments → Response
missing properties from { id: string; order_id: string; }[]: length, pop, push, concat, and 28 more.
3 Connectivity Issues
Endpoints defined but never called, or called but never defined.
GET /api/orders/:id/items: called but not defined
DELETE /users/:id: called but not defined
GET /api/stats: defined but never called
1 Dependency Conflict
Major version differences that could cause breaking changes.
express
user-service: 5.1.0
order-service: 4.21.0
comment-service: 5.0.1

Notes from the boundary.

Why Coding Agents Are Getting More Expensive (And How To Fix It)
Prompt Caching, Idle Sessions, and the Real Cost of a Million-Token Window
The Multi-Repository TypeScript Problem
Navigating Type Safety Across Service Boundaries

Common questions.

Carrick runs as a GitHub Action and builds three layers per 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 function in the org, 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 at org scale, 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. Context usage scales linearly with your codebase instead of exponentially.

Carrick stores only API metadata: endpoint signatures, resolved types, and dependency information. It never stores or transmits your source code. Your organisation's data is isolated using unique API keys, and all storage is encrypted at rest.

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

We'll be rolling out a generous free tier alongside paid plans in line with other CI tooling. Beta users will get early access to pricing details.

Beta members get access to a private Discord server with dedicated channels for support, feature requests, and discussion. Invitations are sent to approved beta users via email.

Stop shipping blind.

Join the beta. Give your AI agents a map of your system.