v8 meters every call in characters of CNF. One byte = one token. The
tier router maps tokens_in to an engine mix; the watchdog
maps budget to a wall-clock ceiling; the envelope returns
total_ms and cost_usd on every response. Cost
scales with engines actually used — local reducer runs are free
above fixed infrastructure.
| Engine | Where | Unit cost | Notes |
|---|---|---|---|
| local_reduce | EC2 | $0 marginal | UP + pure-lit + FLP + pair look-ahead on t3.small |
| kissat direct | EC2 | $0 marginal | 1–3 s budget, counts against instance hours |
| v6 race worker | Lambda 10 GB | $0.000167 × GB-s | ~1 s typical, ~$0.00017 per invocation |
| v7 big-tier | Lambda 10 GB + S3 | $0.0001 + $0.00002/MB | S3 put per session, proportional to size |
| slow-trail spray | Lambda (async) | ~$0.0001 × invocations | Capped at 50 invocations per /cnf/solve |
| Request | Result | Wall | Lambda | Cost |
|---|---|---|---|---|
| 3v trivial | SAT (local) | 0.2 s | 0 | $0 |
| 100v phase transition | UNSAT (kissat) | 0.2 s | 0 | $0 |
| 400v / 3 s | REDUCED | 1.4 s | 2 | ~$0.0003 |
| 400v / 10 s | REDUCED (292 k learned) | 8.4 s | ~20 | ~$0.003 |
| 800v / 60 s | REDUCED (1.28 M learned) | 43 s | ~120 | ~$0.02 |
| qg5-11 (984 KB) | REDUCED (cl −55%) | 31 s | ~80 | ~$0.01 |
| bmc-ibm-6 (6.9 MB) | REDUCED (cl −55%) | 76 s | ~200 | ~$0.03 |
| Metric | Value |
|---|---|
| Instances total | 2 107 |
| Total tokens_in | 118 MB DIMACS |
| Small tier (kissat, free) | 1 599 (76%) |
| Medium tier (race) | 466 (22%) |
| Large tier (v7 Lambda) | 42 (2%) |
| Cost to finish the whole thing | ~$0.15 |
| Mode | Budget | Workers | Per-call cap |
|---|---|---|---|
| laptop | 240 s | 300 × 10 GB | $12.00 |
| extreme | 70 s | 1 000 × 10 GB | $12.00 |
Monthly ceiling: $50. Per-call ceiling: $12. Refused at the service level before any Lambda fires. Live status: /satlib/push_status.
Reference point: snakebatch.aws.monce.ai had a single $5 call in its history — that's the ballpark of serious compute spending here.
budget = 1 s -> local_reduce + kissat. $0 marginal. budget = 5 s -> + v6 race. < $0.001. budget = 60 s -> + v7 swarm (up to ~200). < $0.05. budget = 240 s -> push:laptop (up to 300). < $12.00. budget = 70 s -> push:extreme (up to 1 000 workers). < $12.00.
The local reducer absorbs easy instances before any Lambda fires. Kissat closes out small hard instances on-host. v6 only sees instances big enough to benefit from parallel branch; v7 only sees instances too big for a single payload. Each tier "charges" for the complexity it deserves. Push mode exists for the cases where none of that is enough.
The inverse calculator runs entirely on the EC2 host: Tseitin encoding in Python, Kissat as a subprocess. No Lambda fans out, no S3 round-trip in the hot path. Cost is strictly EC2-seconds × rate. Public measured runs:
| problem | width | vars / clauses | wall | marginal cost |
|---|---|---|---|---|
| XOR+ADD inversion | 256b | 3 073 / 8 964 | 20 ms | ~$3×10−7 |
| Factor 10 403 = 101·103 | 20b | 4 681 / 15 605 | 60 ms | ~$10−6 |
| Factor 1 000 001 | 24b | 6 673 / 22 277 | 100 ms | ~$2×10−6 |
| Factor 64-bit semiprime | 64b | 45 953 / 154 117 | 420 ms | ~$7×10−6 |
| Multiply circuit | 96b | 102 721 / 344 837 | 890 ms | ~$1.5×10−5 |
| Multiply circuit | 128b | 182 017 / 611 333 | 1.7 s | ~$3×10−5 |
Basis: t3.medium on-demand in eu-west-3 is $0.0496/hr = $1.38×10−5/s. A 100k-variable inversion costs about one thousandth of a cent. Factoring a 64-bit verified semiprime on the public API costs about one hundred-thousandth of a cent. You hit the multiplier wall (Θ(n2) clauses) long before you hit the budget wall.
What is expensive: factoring at crypto scale. A 256-bit RSA multiplier would compile to ~2.5M clauses; Kissat alone will not close it in any tractable budget. For those, the playground is a compilation front-end only — the CNF would route through v8 + push mode and accept the $12-per-call ceiling.
Both services are billed per-second of compute on EC2, both on
the same region (eu-west-3, t3.medium). The economic
question is what kind of answer your dollar buys:
| input | npdollars | AUMA |
|---|---|---|
| 1¢ of compute | ~600 ms of Kissat on a 100k-var CNF | ~60 000 evaluations of f |
| what 1¢ gets you | Exact antecedent OR UNSAT proof | Best point found within budget |
| factor a 64-bit semiprime | $7×10−6 (verified) | Cannot complete at any budget tested |
| all Pythag triples c=65 | $2×10−6 (4 triples) | One near-triple, not exact |
| find root of x2 = 42 over ℝ | No float support | $<10−7 |
| complex polynomial root | No complex support | $10−7 |
Cost of certainty. npdollars charges more per problem
because it returns a certificate (SAT with model, or UNSAT with
resolution proof). AUMA charges less because it returns a number
— which is fine when "close enough" suffices. On a 1 000 001
factoring, AUMA's 97 ms sweep costs
~$1.3×10−6 and returns nothing exact;
npdollars' 126 ms costs ~$2×10−6 and returns
101 × 9 901. The certainty delta is 50%, the
correctness delta is infinite.
| Resource | Monthly |
|---|---|
| EC2 t3.medium | $33 |
| S3 + Route53 + CloudWatch | $4 |
| Lambda reserved concurrency | $0 (pay-per-use) |
| Total fixed | $37/month |
| Push budget ceiling | $50/month (elastic) |
Every call runs on the EC2 t3.medium host (no Lambda). Cost is strictly EC2-seconds × rate = $1.38×10−5/s.
| Endpoint | Typical body | Typical wall | Marginal cost |
|---|---|---|---|
POST /ncnf/solve | {problem:"php",params:{n:10}} | 1.2 s | ~$2×10−5 |
POST /ncnf/lift | PHP(8) DIMACS + hint | 10 ms | ~$1.4×10−7 |
POST /ncnf/scaling | {family:"php",sizes:[4..10]} | ~1.5 s | ~$2×10−5 |
POST /ncnf/adder | {N:10000,target:3333} | 407 ms | ~$5.6×10−6 |
POST /ncnf/adder | {N:1000000,solve:false} | 0.06 ms | ~$10−9 |
POST /flex-10k/solve | 100 random ints | 88 ms | ~$1.2×10−6 |
POST /flex-10k/solve | 10 000 random ints | 9.7 s | ~$1.3×10−4 |
One-liner: proving a 3.2-million-clause SAT theorem about 10k integer additions, on our public API, costs roughly one hundredth of a cent.
The /ncnf pipeline adds a new economic regime. Every UNSAT proof the swarm produces is lifted into a quantified taboo and appended to the input. Cost paid once, amortized across every future instance of the same structural family.
| Family | Cost to solve once | Cost next time | Speedup next time |
|---|---|---|---|
| PHP(10, 11) → PHP(12, 13) | ~$2×10−7 | negligible | 31 583× (60 s TIMEOUT → 1.9 ms) |
| Mutilated 10×10 → 12×12 | ~$10−7 | negligible | 224× |
| Tseitin 6×6 → 7×7 | ~$10−7 | negligible | 9.2× |
| Ordering GT(12) → GT(15) | ~$10−7 | negligible | 4.3× |
The taboo library is capital, not expense. Every dollar spent on a novel family writes structure that costs nothing to re-use. The more you solve, the cheaper the next solve gets.
Polynomial wall-clock on small/medium instances. On hard instances, the budget dial controls dollars and the REDUCED contract ensures you always get a formula back that is strictly easier than the one you sent.
Charles Dana · Monce SAS · April 2026
Co-Authored-By: Claude (Anthropic)