daveymoores
Joined 1 year ago
Joined 1 year ago
For a while I’ve been thinking about how traditional CI is blind to the world outside its own repository. A change in one service can silently break another, and you often don't find out until it's too late.
Carrick is a GitHub Action that tries to solve this with a new approach. It builds a dependency graph of your microservices to catch these cross-repository issues before they merge.
Here’s how it works:
1. It uses static analysis (via SWC) to find API producers in your Express apps.
2. It then uses LLM reasoning to find the corresponding API consumers across your other services.
3. It associates them via API routes and flags common issues such as: - Mismatched types - Incorrect package versions - Wrong HTTP verbs - Missing or deprecated endpoints
The goal is to get fast, low-effort feedback directly in your PRs. It’s currently designed for teams with Express and TypeScript services spread across multiple repositories, but I will be rolling it out to other languages soon.
I’ve written a blog post about some of the engineering and a deeper dive into the problem space here → https://www.carrick.tools/blog/the-multi-repository-typescri...
If you would find this kind of tooling helpful, you can find the Github action in the marketplace → https://github.com/marketplace/actions/carrick-api-analysis
Signup at https://www.carrick.tools/ and I’ll send you an API key.
You just need to add the GitHub Action to your workflow. Run it on main to analyse deployed code, and on PRs to catch divergence before merging. It’s fast, low-effort to integrate, and I’m hoping it’ll help catch bugs early across services.
I'm looking for some beta testers that have Express microservices. If this sounds interesting, let me know - happy to chat or give you an API key to try it when send them out on the 18th - https://www.carrick.tools.
Are you getting much traction within the cross-repo space? From personal experience, I know that the vast majority of products are poly-repo setups with often a monorepo core plus APIs, SDKs etc that sit outside that, but that means selling directly into B2B without any bottom up adoption which is challenging.