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

Contract testing, without writing the contracts. Carrick derives them from your TypeScript.

An API changes in one repository and breaks a consumer in another. The compiler only ever checks one repository at a time.

Carrick checks every call between your TypeScript services against the types on both sides, and fails the pull request the moment they disagree.

1.0Install
Live in three steps Quickstart
  1. 01 Sign in with GitHub
  2. 02 Install the GitHub App on your repositories
  3. 03 Add Carrick to your Actions workflow
The scan runs inside your existing Actions workflow.

Cross-boundary type safety

Carrick resolves the request and response types on both sides of every call that leaves a repository, following the routing topology and middleware chains that decide what a route actually returns. The result is one map of what each service promises and what its consumers expect.

2.0Type mapDocs
2.1Routing topology 2.2Middleware chains

The mismatch, in the pull request

When a change breaks that agreement, the scan catches it in CI, finds the consumer still reading the old shape, and posts the finding on the pull request that introduced it. Nobody had to predict the failure in advance and write a test for it.

3.0CI checksDocs
3.1Contract drift 3.2Duplicate functions 3.3Version conflicts
4.0There is more

Beyond the pull request

The index this check reads is also served to coding agents over MCP, so an agent working in one repository can query the real routes, resolved types and function intents in the others instead of inferring them.

See what Carrick does
5.0FAQ

Common questions

Both work for as long as somebody keeps them true. A shared package drifts the moment one consumer pins an old version, and it compiles cleanly against a shape the producer stopped sending months ago. A generated client is only as accurate as the spec it came from, and the spec is a second thing to update on every change. Carrick reads the implementation on both sides on every pull request, so the contract it checks is what the code does today rather than what a package or a spec last said.

Yes, with a difference in method. Contract testing checks a producer and a consumer against an agreed interface, and usually somebody writes that interface down, as consumer tests, as a spec, or as expectations held in a broker. Carrick derives it from the TypeScript on both sides instead and checks it statically on the pull request. What the types say is what it checks, and every repository involved needs to be TypeScript.

Integration tests run the services together, so they need an environment to run them in and they only report after the code is built and deployed somewhere. Carrick runs static analysis on the pull request itself, so the check finishes in CI without deploying anything or standing up an environment.

Nothing. The check reads the TypeScript already in your repositories: route definitions with their full paths and middleware chains, request and response types resolved by the compiler, and the calls that cross from one service to another.

A TypeScript codebase with a package.json, scanned by a GitHub Action. Any package manager works. Carrick reads the manifest and never runs your install, so it needs no lockfile, no node_modules, and no special CI setup.

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

Carrick is free for up to 10 repositories, and starting takes no card. Above that, pricing is flat monthly by repository count.

How this compares with the alternatives

Catch it in the pull request, not the incident channel. Carrick reports where a producer and a consumer no longer agree, on every pull request, across every repository you connect.

Get started now Apply to get 3 months free Free for up to 10 repositories