Pricing
Why Forge doesn't sell seats
Forge bills a flat base with a per-person rate above an allowance — which sounds like seats until you ask what a person is. A seat is something an admin provisions. Forge counts coverage: the engineers whose pull requests it actually read in the last 30 days. Nobody maintains the list, nobody is billed for looking, and the number is measured from the repo rather than negotiated at renewal. This page is the whole argument, including the parts that cost us.
The model in one paragraph
A covered contributor is someone who authored or reviewed an analyzed pull request in the last 30 days. Free covers 10 of them, forever. Team is $299/month with 15 included, then $12 per additional covered contributor. Viewers are free on every plan. Repos are not metered. That is the entire price list.
What per-seat gets right
Per-seat is a good model, honestly earned, when every seat consumes value individually — Slack, Figma, Linear. It expands automatically as the customer hires, it is predictable for both sides, and nobody has to think about it. If Forge were a tool every engineer opens every day, seats would be the right answer and this essay would not exist.
Where it breaks for a measurement product
Forge is not a tool everyone opens. It reads the whole team’s pull requests and a handful of people look at the result. Per-seat pricing forces a bad choice: bill only the people who log in, and the price collapses to three dashboards while the product reads sixty people’s work — or bill everyone whose data flows in, and you have reinvented coverage while calling it seats, with a license admin and a “who counts?” fight at every renewal. That fight is a fixture of this category, and we wanted no part of it.
Worse, seats tax the rollout the product needs. Forge’s calibration gets more accurate as more of the team’s pull requests flow in — charging per person for that flow means our own pricing pushes against our own data quality. And a number you can only show three people is worth very little; the review tax is meant to be forwarded, argued with, put in a slide. Viewers are free because sharing the read is how the product does its job.
There is also a quieter contradiction. Forge’s thesis is that agents write a growing share of the code while humans absorb the review cost. Bill per human seat and revenue stays flat precisely as the workload being measured inflates. A sharp buyer notices when a vendor’s pricing disagrees with its pitch.
Why not meter pull requests either
The obvious usage metric is PR volume, and we rejected it on purpose. Forge exists to warn teams about AI-driven PR inflation — billing by the pull request would charge them more precisely for the thing we are warning them about. That invoice would get quoted back at us, and it should.
The mechanism, precisely
- Measured, never provisioned. Coverage is counted from merged pull requests — distinct authors and reviewers over a 30-day window. There is no seat list to maintain and no way to under-deploy to save money.
- Bots are excluded. Dependabot, Renovate, CI accounts, review bots — automation is not a person and is never billed.
- Quiet months roll off. Someone on leave, or heads-down in a repo Forge doesn’t read, drops out of the count after 30 days. You pay for who ships, not for who exists.
- The count is visible all month. The same number the invoice will use sits in the app’s settings, updated continuously — never a surprise discovered on a bill.
- The billed quantity moves only at renewal, un-prorated. Coverage drifts every time someone opens or reviews a PR; charging mid-cycle for a number you never chose is what makes usage pricing feel unsafe. The new count takes effect at the next invoice, which you can see coming.
- The floor is the allowance. A month where nobody merged anything still bills the base — access has a price even when the count dips, and we would rather say that plainly than hide it.
- Repos are not metered. Repo count is an architecture choice. A 50-engineer monorepo and an 8-engineer microservices shop with twenty repos should not pay inverted prices for the same insight.
The math, worked
| Covered contributors | Base | Above the allowance | Monthly total |
|---|---|---|---|
| 15 | $299 | — | $299 |
| 25 | $299 | 10 × $12 | $419 |
| 40 | $299 | 25 × $12 | $599 |
| 60 | $299 | 45 × $12 | $839 |
Annual is ten times the monthly components — two months free on the base and the per-contributor rate alike. These figures are not copywriting: this page computes them from the same pricing module the billing code imports, so if the model ever changes, this essay changes with it or fails to build.
“Doesn’t this punish hiring?”
It is the fair objection, so here is the honest answer: the bill grows when the team grows, yes — that is any per-person model, seats included. What coverage removes is being billed for growth that isn’t real. A new hire who hasn’t shipped yet costs nothing. A contractor who left stops counting a month later, without anyone remembering to free a license. The count is on screen all month, moves only at a renewal you can see coming, and never prorates mid-cycle. Seats bill the org chart; coverage bills the shipping team, with a 30-day memory.
What this model costs us
Symmetry demands the other side of the ledger. Coverage gives up the revenue predictability of a provisioned seat list — our income breathes with your shipping cadence, including downward. It gives up billing the people who only read the dashboards, which for a measurement product is most of the audience. And it means we cannot quietly grow the bill by getting more logins created. We think the trade is right precisely because every one of those gives the customer leverage instead of us — a pricing model is a claim about whose side the defaults are on.