shippie
extendable code review and QA agent 🚢
Links
README
From the repo.
Shippie 🚢 (formerly Code Review GPT)
Helps you ship faster
Shippie is an extendable code-review agent. It runs an agent loop that reads your diff, explores the codebase with real developer tools, and posts focused review comments — picking up issues a human reviewer would, such as:
- Exposed secrets
- Slow or inefficient code
- Potential bugs or unhandled edge cases
Shippie can also act as a Model Context Protocol (MCP) client to reach external tools like browser automation, observability and documentation.
Demo
https://github.com/mattzcarey/shippie/assets/77928207/92029baf-f691-465f-8d15-e1363fcb808e
Ethos 💭
- A prebuilt review workflow, not a bespoke CLI — the agent loop runs on flue + pi.
- Runs anywhere: Node, Cloudflare, GitHub Actions, GitLab CI.
- Functions as a human code reviewer, using flue's built-in tools instead of a hand-rolled tool registry.
- Provider-agnostic: Anthropic, OpenAI, OpenRouter, and Cloudflare Workers AI out of the box.
- Acts as an MCP client for integration with external tools.
Quick start 🚀
GitHub Action
Run npx shippie init to scaffold the workflow below, then add your provider API key as a repo secret. Or add it manually — it needs a full checkout (fetch-depth: 0), PR write permissions, and a provider API key.
# .github/workflows/shippie.yml
name: Shippie
on:
pull_request:
permissions:
pull-requests: write
contents: read
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: mattzcarey/shippie@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
See Action Options for all inputs (MODEL, THINKING_LEVEL, IGNORE, CUSTOM_INSTRUCTIONS, MCP_SERVERS, and the provider keys).
Local
Run the review workflow locally with no server. Local mode reviews your staged changes (git diff --cached) and writes results to .shippie/review/local_*.md:
npx shippie review
Run on demand with /shippie
Comment /shippie review on a pull request to run shippie on demand — either via a GitHub Actions workflow (no server) or a deployed webhook channel. See Run Shippie on demand.
Setup Instructions 💫
See the setup instructions for more docs on how to set up shippie in your CI/CD pipeline and run it locally.
Additional Documentation
- Setup - Get shippie running in CI and locally
- AI Provider Configuration - Configure Anthropic, OpenAI, OpenRouter, and Cloudflare Workers AI
- Action Options - GitHub Action configuration options
- Model Context Protocol (MCP) - Give shippie access to external tools
- Rules Files - Inject project context via
AGENTS.md/CLAUDE.mdand Agent Skills - Subagent Tool - Delegate work to flue subagents with the
tasktool - On-demand /shippie - Run shippie by commenting
/shippie(Actions or webhook)
Development 🔧
This repo targets Node >= 22.19 with npm.
-
Clone the repository:
git clone https://github.com/mattzcarey/shippie.git cd shippie -
Install dependencies:
npm install -
Set up your API key:
- Copy
.env.exampleto.env. - Set the provider key you want to use, e.g.
ANTHROPIC_API_KEY(orOPENAI_API_KEY,OPENROUTER_API_KEY,CLOUDFLARE_API_KEY+CLOUDFLARE_ACCOUNT_ID).
- Copy
-
Run the review workflow:
npm run reviewUseful commands:
npm run dev— run flue in dev modenpm run build— build a publishable Node server todist/server.mjs(run it withnpm run start, thenPOST /workflows/review?wait=result)npm run check— lint with oxlint + check formatting with oxfmtnpm run check:types— typecheck with tscnpm test— run tests
See
package.jsonfor the full list of scripts.
Contributors 🙏
Thanks to our wonderful contributors!
Roadmap 🌏
Have a look at the discussion tab for the latest chat and ideas. I am actively working on the items in todo.md.
Star History ⭐️
Collected info
- ★ 2,468 stars
- ⎇ 241 forks
- Language: TypeScript
- Source updated: 8/2/2026
Config for your environment
Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.
Tool
OS
Config file: ~/.cursor/mcp.json
{
"mcpServers": {
"mcp-server": {
"url": "{MCP_ENDPOINT_URL}"
}
}
}Paste into mcpServers in the config file. Restart Cursor after saving.
If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.