Shippie is a prebuilt code-review agent built on flue. It runs an agent loop (on pi) 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
The agent uses flue's built-in pi tools (read, write, edit, bash, grep, glob, task) plus shippie's suggest_change tool for inline comments. It can also act as a Model Context Protocol (MCP) client to reach external tools like browser automation, infrastructure, and observability.
code-review-gpt-3.mp4
- A prebuilt review workflow, not a bespoke CLI β the agent loop runs on flue +
pi. - Runs anywhere flue deploys: 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 (remote HTTP/SSE) for integration with external tools.
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).
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:
flue run review --target node --payload '{"platform":"local"}'Or via the package script:
npm run reviewComment /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.
See the setup instructions for more docs on how to set up shippie in your CI/CD pipeline and run it locally.
- 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)
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 review
Useful 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/format with biomenpm run check:typesβ typecheck with tscnpm testβ run tests
See
package.jsonfor the full list of scripts. -
Make a PR π
We use release-please on this project. If you want to create a new release from your PR, please make sure your PR title follows the Conventional Commits format. The release-please bot will automatically create a new release for you when your PR is merged.
- fix: which represents bug fixes, and correlates to a patch version.
- feat: which represents a new feature, and correlates to a SemVer minor.
- feat!:, or fix!:, refactor!:, etc., which represent a breaking change (indicated by the !) and will result in a major version.
Thanks to our wonderful contributors!
Have a look at the discussion tab for the latest chat and ideas. I am actively working on the items in todo.md.