shipcue

One queue for all your coding agents

Running Claude Code and Codex on several subscriptions, across a laptop and a Mac mini or two? shipcue is the coordination layer between them: people report from your app, every agent and terminal takes its next job from one queue, and no two take the same one.

Now serving--nobody yet

    Try it: file a few reports, then claim one the way an agent would. The most urgent goes first.

    How it works

    Someone reports it

    The button opens a small form: bug or feature, what happened, how bad it is, where in the app. People can paste a screenshot. The page address, browser and a snapshot of app state you choose come along automatically.

    It joins the queue

    Reports go into one table in your own Postgres, ordered by priority and then by age. Nothing goes to a third-party dashboard.

    An agent fixes it

    The MCP server hands an agent the top report as a ready-to-run task. Claims are atomic, so several agents can work the queue at once and never take the same report.

    Cloud: one place for every account and machine

    A token per agent

    Every Claude Code account, Codex seat and terminal gets its own token, so you can see which one is on which report.

    A listener per Mac mini

    Each machine picks up the next report on its own and starts an agent for it. A crashed or rate-limited terminal hands its report back.

    From $10 a month

    Plans from $10 to $50 a month by projects, agents and people. Free while the beta lasts, and self-hosting stays free.

    Cloud plans

    Who uses shipcue

    Founders with a fleet

    Several Claude Code and Codex subscriptions on a laptop and a Mac mini or two. One queue keeps every terminal on its own report.

    Hackathon teams

    Four people each running a couple of agents on one repo. One queue means no two agents fix the same bug, and nobody's fix quietly undoes someone else's.

    Founders with early users

    Users report from inside the app with the page, browser and state attached. Your agent works the queue and you review the PRs.

    All use cases

    Add it in three steps

    Create the table, mount one handler, drop in the button.

    import { ReportButton } from 'shipcue/react';
    
    <ReportButton
      areas={[{ value: 'editor', label: 'Editor' }]}
      diagnostics={() => ({ route: location.pathname })}
    />

    Full setup in the docs