pricing

Everything it does on your machine is free.

There is no paid tier today and there may never be one. If it happens it costs $5 a month and takes nothing away from what you already have. Below is what is free, what a server would add, what that would cost, and the test it has to pass first.

no inference bill to pass on

ccx resells nothing.

You bring your own Claude subscription and your own ChatGPT subscription. ccx drives the two official CLIs on your own machine under your own logins. There are no API keys of ours in the path, no proxy, and no inference bill on our side. On an ordinary run, nothing of ours is involved at all.

Keeping the free tier free costs us close to nothing, so there is no countdown on it. It is also why a hosted tier can be $5 rather than $25. The entire cost of one is storage and bandwidth for redacted run records, which on payloads this size should stay under a cent per user per month. Nothing is deployed yet, so that number is an estimate and it is the only one on this page that is.

The flip side is honest too. If either subscription lapses, ccx has nothing to drive. We are not a way to avoid paying Anthropic and OpenAI.

what costs nothing, permanently

The free tier is the whole product.

The rule is one line. Anything that runs on your machine is free forever. The loop is the engineering and the engineering is not for sale, so nothing here is degraded, rate limited, watermarked or capped to make a paid tier look better.

  • The whole loop. shipped The conference, the exclusive write baton, the read-only reviewer, the fix rounds, and all ten stop states: clean, stuck, no-progress, disagreement, rounds, budget, reverted, empty, driver-failed, review-error. Regression and scope collapse are reported on top of those.
  • The docket, and the reviewer's blindness to it. shipped The asymmetry that keeps review independent is the hardest part of this tool to get right, so charging for it would be charging for the only thing that makes the output worth reading.
  • --robot JSON on stdout. shipped The same object it prints today, plus whatever fields get added later. Nothing is ever withheld from --robot to make a hosted page look better, because the hosted page renders the same object you can pipe into jq.
  • ccx --receipt, the full artifact. shipped One self-contained HTML file on your disk. No external assets, no network, and the renderer in src/share.mjs emits no <script> tag at all; a local search box is the only JavaScript that will ever be added to it. It holds the conversation, every round's findings with their concrete failing inputs, the refusals with the driver's reasons, the delta diff with flagged lines anchored, the guard that ended the run and the call count. The receipt is written before redaction, before the preview and before any socket is opened, so the file exists whether or not a byte ever leaves. --receipt=<path> will place it and --receipt=- will write it to stdout for gh pr comment --body-file -. It will never be paywalled or degraded.
  • The redactor. shipped In the repo, MIT, and it runs on your machine whether or not you ever pay. 14 filename patterns are blocked whole rather than partially redacted (.env, *.pem, id_ed25519, .npmrc and the rest), 16 named key shapes are replaced in place so the surrounding code still reads, and an assignment rule and an entropy sweep catch the ones with no fixed shape. ccx --share-dry will do a normal run, print the exact bytes that would have left the machine plus a per-rule report of what each rule caught, and upload nothing. You can read every rule, which is the only reason to trust any of them.
  • ccx --history and ~/.claudecodex/runs/<runId>.json. planned An append-only local record of every run: domain, router prediction, verdict, driver, rounds, stop state, findings count, timings, files. A file on your disk needs no server, so it carries no charge. Today the only thing ccx keeps between runs is ~/.claudecodex/brain.json.
  • --stats, in full. shipped Per-domain record and pass rate, router-versus-conference agreement counted over genuine verdicts only, the deadlock rate, a warning once five conferences have run and more than 40% of them deadlocked, and the learned token count printed with the note that it is the sparse signal and the domains above it are the real one. Nothing is held back from it to make a hosted dashboard look better.
  • ccx --export and ccx --import for brain.json. planned It is your file, and it is already only a file. Copy it between machines with rsync, git or a USB stick today; the commands are a tidier way to do the same thing and they ship free when they ship. We are not going to hold a JSON file hostage.
  • Every escape hatch. shipped --fast, --why, --json, --demo, --no-review, --no-confer, --no-theater, --no-anim, forced picks at 3x weight, the offline router, brain.json.
  • No account, no telemetry, no network call of ours, and no nag. shipped Not on the first run and not on the thousandth.

Statuses are as of this build and ccx --help is the authority on them. shipped means the flag is in there and works today. written · not wired means the module and its tests are in the repo but no flag reaches them yet, so typing the flag forwards it to the agent instead of doing anything. planned means it is a paragraph in a design document and nothing more.

The free-forever promise has a tripwire behind it, built the same way as the reviewer's blindness. test/license.test.mjs copies bin, src, assets and package.json into a temp directory, overwrites src/license.mjs there with a booby trap that writes a marker file and throws, and runs seven argvs that spend nothing: --version, --help, --stats, and --why, --json, --fast and --robot over real task strings. If any of them loads licence code, the suite fails. It then reads the real binary and fails on a top-level import of that module, because importing it eagerly would put billing code back in the path of every run while every other assertion stayed green. The matrix stops where the agents start, since a test cannot spend your subscription to prove a negative.

// the only argv that may ever reach licence code (none of them exist yet)
--share    --shares    --unshare    --sync    --licence

Billing code that runs on every invocation is billing code that can break every invocation, and the breakage would land on ccx "fix the retry". If a licence check ever fires there, it is a bug and it gets fixed like one.

what a server would add

Four things a laptop cannot do.

Each of these needs a machine that is awake when yours is not, or a browser that has never seen your repo. None of them makes the loop better, which is deliberate. If a feature would make ccx a better reviewer, it belongs in the free tier.

None of the four runs anywhere today. The Cloudflare Worker that would serve them is written and sits in worker/ with placeholder database ids, deployed nowhere, and the section below is the reason it is staying there.

--share an unguessable noindex URL rendering the conversation, the finding and its failing input, the delta with flagged lines anchored, and the guard that ended the run the point is that a browser belonging to someone without your repo, your shell and your $TMPDIR can open it, and that is a server by definition
--shares cross-machine, cross-repo history and search, including ccx --shares --q=await and a web view over every stored run nothing local can hold the runs from your other machine, and brain.json stores aggregates rather than runs
--sync count-weighted per-token and per-domain brain merge, recomputed from per-machine snapshots so it is idempotent and commutative a laptop and a work desktop are never awake at the same moment, and last-write-wins overwrites 40 observations with 6 while every number in --stats still looks healthy
seats one feed and one search across everyone you invite, plus a read-only view of which agent wins per domain over all the seats aggregating several people's runs has no local form; the data is on other people's machines

Deleting anything hosted is one command, and the delete token is printed at share time. A run can be destroyed by someone who cancelled months ago and no longer holds a valid licence, because a delete that requires a subscription is a hostage situation.

the number and the arithmetic

$5 a month, or $48 a year.

Free

$0

forever, and with no licence code anywhere near it

Today: the conference, the baton, the review loop, the guards, the docket, --robot, --stats and every escape hatch. On the same terms when they land: --receipt, the redactor and local history.

  • works with no network of ours, ever
  • no account and no sign-up
  • MIT, and the whole thing runs from a clone

Hosted not built yet

$5/mo

or $48 a year, which is the one we would recommend

Run permalinks, cross-machine history and search, correctly merged brain sync, and seats at the same flat $5 each.

  • seats start at one, with no minimum and no team SKU
  • nothing is taken out of the free tier to build it
  • no card to enter, because there is nothing to buy yet
  • Why the annual plan is the recommended one. $5 a month is exactly the band where a solo dev cancels in the month their usage dips, then re-subscribes in the month it does not. Paying once removes twelve of those decisions, and $48 against $60 is what that is worth to us. Take it only if you already use the thing.
  • Why not charge more. With no inference to pay for, a user costs under a cent a month to serve on the estimate above. A higher price would buy nothing on the cost side and would halve conversion on a funnel that is already thin. Raising it would be an act of optimism about demand nobody has measured.
  • Why seats are flat and there is no team plan. A seat needs one engineer holding both a Claude subscription and a ChatGPT subscription. A three-seat minimum needs that to be true three times inside one company, and those odds multiply against each other. A team floor would be pricing against a market that mostly does not exist yet, so seats are $5 each and you can buy one.
  • Why there is no $29 lifetime deal. Perpetual hosting bought once is a debt that grows every month the product works. We would be storing your runs in 2031 on money that was spent in 2026, and the usual fix for that is to quietly stop honouring it.

before any of it gets built

The test that decides whether any of this exists.

Every price above assumes an answer to a question nobody has asked yet. Does anyone want to send a colleague a link to an agent's review? Deploying the Worker, opening a Stripe account and registering a company are three ways of assuming yes, so the order gets reversed.

ccx --receipt ships free first. Every receipt gets one plain, visible text link in its footer, and hits on /r are counted server-side. Neither the footer nor the counter is written yet, which is what the weekend is for.

made with ccx · share.claudeandcodex.com/r

No pixel, no beacon, no query string, no identifier of any kind. A person deciding to click a visible link is the only honest instrument available here, and an auto-loading tracking pixel inside a file your colleague opened is precisely the behaviour a tool that reads source diffs cannot be caught doing. It also measures the wrong thing. A pixel counts opens, and the question here is whether anyone is curious enough to come looking.

0

npm installs before the clock starts. The package is not published yet, so publishing it is step one.

0

distinct visits to /r. That is the bar.

0days

the window they have to arrive in.

$0

spent running the test. Nothing deployed, no Stripe account and no company until it passes.

Clear the bar and the hosted tier gets built as specified above. Miss it and the sceptical read was the right one: no paid tier, ccx stays free and MIT, and this page says so instead of moving the goalposts and trying again next quarter.

the hard constraint

Anything uploaded contains your diffs.

Diffs contain .env values, tokens, keys and customer data. A share feature that leaks a key once is dead forever, and deserves to be. So these rules were settled before the code was written, and they are already in src/share.mjs with their tests.

  • Opt in per run. Nothing leaves your machine unless --share is on that exact command. There is no setting that turns uploading on and then forgets to tell you.
  • Redacted before it leaves. The redactor runs on your machine, on the payload, before any request is made. It is in the repo under MIT so you can read every rule and add your own.
  • You see it first. ccx --share-dry prints the exact bytes that would be sent plus a per-rule report of what each rule caught, and uploads nothing at all.
  • It refuses to publish a diff made of secrets. Past 25 secret replacements, or secret rules touching more than 20% of the diff's lines, the upload is refused and the local receipt is offered instead. Rewriting your home path and your email address does not count towards that, because counting it made a live run refuse an ordinary 7-line change at "86% secrets".
  • You can destroy it. One command, and a delete token printed at share time that keeps working after you cancel.

faq

The awkward questions.

What happens if I stop paying?

The CLI does not change. Not one flag, not one stop state, no downgrade, no reduced round cap. Hosted links stop resolving and sync stops running.

Your brain.json, your local run records and every receipt you have written are files on your disk and stay yours. Delete tokens keep working, on purpose.

What exactly do you upload?

Only on a run where you typed --share, and only the redacted payload: the conversation, the findings with their failing inputs, the delta diff, the guard that ended the run, and the call count.

Not your repo, not files the driver never touched, not your environment, not your git remote. Run --share-dry first and you get the byte-for-byte payload on stdout with nothing sent.

Can I delete it?

Yes, with one command. The delete token is printed at share time, so a run can be destroyed from a machine that never held the licence, and after the subscription has lapsed.

Does it work offline?

The loop is two local CLIs, a local router and a JSON file, so an ordinary run makes no network call of ours at all.

The agents themselves still talk to Anthropic and OpenAI. That is your subscription doing its job, and it is the one part of this that genuinely needs the internet.

What if you shut down?

The CLI is MIT and runs entirely on your machine. There is nothing of ours to switch off, so whether we are still here has no bearing on what ccx does.

Hosted links would die with the server, which is why the receipt is a file on your disk and never a link back to us.

Do I still have to pay Anthropic and OpenAI?

Yes, and that is the deal. ccx drives claude and codex under your own logins. We do not resell model access, mark it up, proxy it, or hold keys.

Routing model calls through our servers would make this cheaper to explain and would destroy the only reason charging $5 is defensible.

Is the free tier crippled to push me to pay?

The test is whether a feature can work without a server. Reviewer blindness, the docket, the guards, --robot and --receipt all can, so all of them are free and stay free.

That test is strict, which is why the hosted list has four things on it and no fifth.

Can I pay you now?

No. There is nothing to buy and no card form on this site. If the gate above clears, this page changes and you will be able to tell, because the price section will have a button in it.