# Loopfund — product spec for a frontier model

Working name: **Loopfund**. One-liner: Kickstarter for Gauntlet Loop compute.

This document is the brief. Implement against it. Do not invent traction, revenue, user counts, or token prices beyond the sourced figures labeled below. If something is in **Open questions**, do not silently decide a legally or trust-sensitive version; flag it.

Date of this writeup: 2 Sep 2026. Owner: Miguel (msanchezgrice). Live clickable prototype: https://loopfunder.com (funder home). Partner spec page: https://loopfunder.com/spec. Repo: https://github.com/msanchezgrice/loopfunder (private). Local path: `~/loopfunder`. Production Vercel project: `prj_u0s9gJsJkO1NXvQOT5eKLNWD9ECA`, domain loopfunder.com.

---

## What to build

A marketplace where **backers fund USD that can only be spent as model tokens** on one hosted Gauntlet Loop. The creator never receives a cash withdrawal. Starting a run deploys a machine. It is not a payout.

Consumer IA copies Kickstarter, not a pitch deck:

- `/` is the **funder** homepage (search, categories, featured campaign, Fund this loop).
- **For creators** is a header button, not a peer door on the home hero.
- Creator onboarding is a linear wizard after that button.
- `/spec` is partner/internal (how we do it). Not in the main consumer nav; footer is enough.

Accent: amber `#e09b2d`. Marketing pages: white, airy, Kickstarter-class. In-product screens (campaign, checkout, workbench, creator wizard): dark workbench UI matching the existing mock PNGs in `mocks/`.

---

## Problem

Gauntlet Loops are unbounded. Consumer model plans are not.

Canonical demand signal (do not inflate):

- Matt Shumer (@mattshumer_), 1–2 Sep 2026: burned Anthropic subs; three concurrent Fable 5.1 loops; session bar ~94% used; weekly Fable blown in two sessions; explicit ask to throw tokens at a GTA-style open-world multiplayer NYC game.
- Same day: session limits in ~30 minutes. Jeffrey Emanuel reported 28 Max 20x 5-hour limits in one day (he suspected a caching bug).
- Community self-reported playable-browser-game API receipts roughly **$360–$865**, cache-read dominated (e.g. Mike Luan Homeworld-style $632.65 with 837.2M cache-read tokens). Treat as self-reported, not market price.
- Anthropic Max 5x $100/mo, Max 20x $200/mo; ~5h session reset plus weekly cap. Reported Fable API (OpenRouter): **$10/M in, $50/M out, $0.25/M cache read**. Effective input on OpenRouter ~$2.37/M because loops reread the growing repo (~80% cache hits).

**Do not pool consumer Max subs.** ToS. Platform path is API / gateway.

Two cliffs exist: **budget** and **account/session**. Budget is the bigger one. Most people cannot pick up a massive project like this even if they had a Max plan.

No Kickstarter-like compute funder exists today. Sharing is finished games and prompts, not pooled tokens.

Steelman we already answered: GitHub + donations is not enough. Donations still leave the creator buying their own tokens, hitting session/weekly cliffs, with no escrow that $ went to compute, no sandbox isolation, no spend optimization, no public run console.

---

## What a Gauntlet Loop is (do not mix the layers)

Named by Matt Shumer after Claude of Duty. Canonical: https://somethingbig.ai/gauntlet-loop (27 Jul 2026). Repo: https://github.com/mshumer/Claude-of-Duty.

**Overseer** = the prompt. Split the goal. Each piece: builder + a **separate critic with fresh context**. Critic inspects the actual artifact (pixels / running product / tests). Unbounded `/loop` until it wins or a human stops.

**Harness** = Claude Code (or Codex): spawn those subagents for real, files, shell, screenshots, `/loop`, live workbench HTML. Matt: do not paste this into a normal Claude chat. Without the machine, the overseer is a speech.

Claude of Duty honest scorecard (sourced): ~55k lines, 11 subsystems, zero art assets; critics vs real CoD **3.59 → 5.05 / 10**; every blind A/B picked real CoD. He stopped while it was still improving.

Contrast baseline: people run Claude Code locally with his harness. The Max session bar is the brake. The user disk is the sandbox.

---

## Product rules (load-bearing)

1. **Fuel, not cash-out.** Backers pay Stripe. Platform holds. Spend is metered against the project pot. Creator withdrawal is **$0**. Unused money refunds pro-rata.
2. **Start run is not a payout.** Threshold then Start run boots a scoped VM and spends tokens on that loop only.
3. **Creator is not in the harness.** Hosted VM, platform keys, no home folder. Creator watches the workbench, playtests, queues nudges for the **next** critic round (do not interrupt live). Pause/ship paid from the pot. Claude Code attach is logged break-glass that backers never see.
4. **Run is bound to VM + ledger, not one provider account.** 429 or empty pot **pauses**. Empty pot disables the key and sleeps the VM. Top-up raises the key limit and resumes the **same disk**.
5. **OpenRouter is the default model gateway.** Claude Code via `ANTHROPIC_BASE_URL=https://openrouter.ai/api` and an OpenRouter bearer key. Management API: one key per run, USD limit = Stripe pot. Pin **Anthropic first-party** as top priority. Do not send the critic to GLM. OpenRouter replaces the pipe, not the harness.
6. **Credentials are load-bearing** on the project page (previous projects, jobs, testimonials, press).
7. **V1 reward:** early access + playable artifact + repo credit. Not equity.
8. **GTM:** games first. Later: episodic/movies, research, frontier-model funding.

---

## Architecture stack

Backer Stripe payment
  -> project pot (escrow ledger)
    -> mint OpenRouter Management API key (USD limit = pot)
      -> Claude Code in hosted sandbox (OpenRouter env, Anthropic 1P pin)
      -> overseer prompt + capture tools + ARCHITECTURE.md
      -> public workbench HTML
      -> optional Twitch ingest of workbench + playable + critic overlay
      -> GitHub Release every critic wave (episode)

When the pot tops up: raise the key limit. When it empties: disable the key, sleep the VM.

---

## Surfaces

### Funder (consumer home)

Kickstarter pattern. Headline: Help creators make their projects real by funding their compute.

Clickable prototype path already on loopfunder.com:

1. Home -> Fund this loop / featured campaign
2. Campaign page (mock 02 + credentials 15)
3. Checkout (mock 03) — escrow, not a tip
4. Watch (mock 16) — workbench + critic rounds. Chat votes between waves only.

Do not put a full product UI screenshot (with its own nav) in the marketing hero. Hero is editorial: the game world, then a badge + CTA into the campaign.

### Creator (header For creators)

Headline: Get help funding your token spend. Bring your project to life.

Onboarding: 04-create-goal -> 05-create-bar -> 06-waiting-fuel -> 07-start-run -> 08-booting -> 10-run-console / 14-sandbox-console.

Start run copy: deploys a machine, $0 withdrawal.

### Watch / distribution

- Optional Twitch ingest of workbench + playable + critic overlay from the sandbox, not a raw terminal.
- 2x/5x speedrun of the last six hours is a VOD on Loopfund watch, not Twitch.
- GitHub Releases are the episode format. Each critic wave = a tag: score delta, 11-shot grid, playable artifact, next-step paragraph, 60s speedrun attached.

### Partner /spec

This document plus architecture plus full mock gallery. Not consumer nav.

---

## MVP

**In:** games only; creator submit (destination, Fable 5.1 via OpenRouter, critic bar, credentials); Stripe Checkout into escrow; no creator withdrawal; Start run boots scoped VM and mints OpenRouter key with USD limit = pot; public workbench; 11-shot critic grid; empty-pot pause / top-up resume same disk; pro-rata unused refund; GitHub Release each wave; creator watch / queue nudge / pause / ship; break-glass attach logged and hidden from backers.

**Out:** creator cash-out; equity; chat interrupting the builder; pooling Max subs; movies/research verticals; full 2x/5x pipeline; multi-gateway beyond OpenRouter; custom domains.

**Success bar:** one hosted loop that survives a provider 429 and an empty-pot pause/resume, with a public workbench and a GitHub Release episode, funded by a real Stripe test payment.

---

## Current prototype (not the product)

As of 2 Sep 2026, https://loopfunder.com is a clickable static prototype. Production is Miguel's local `~/loopfunder` Vercel project. Do not use anonymous vercel --temporary / claim-deployment URLs. Cursor cloud-agent PR #1 is not production. Mocks: `mocks/01-browse.png` through `17-ledger-handoff.png` plus `hero-game-world.png`.

---

## Implementation notes

- Recreate in-product screens as real HTML when you can; otherwise full-bleed the mock PNG with one primary CTA. Never nest a full product screenshot as the marketing hero.
- Seed example campaigns only. Label **Example project**. No fake raised totals presented as real.
- Copy: fuel, not payout. Start run deploys a machine.
- Prefer OpenRouter Management API + Stripe + a boring ledger table over a custom model router.
- Sandbox: isolated VM, no creator home folder, platform-owned keys.
- Tests that matter: empty-pot pause/resume keeps disk; 429 does not kill the harness; key cannot spend past the pot.

---

## Open questions

Do not fake answers to these in product copy.

1. **Legal / ToS.** We will not pool Max subs. Unset: money-transmitter / escrow licensing for holding Stripe balances and refunding pro-rata; merchant of record; refund SLA.
2. **GitHub Sponsors.** Distribution channel or ignore? Current lean: not a competitor; it still does not escrow compute.
3. **Creator KYC.** Credentials are required in the UI. Whether we verify them (manual, Stripe Identity, GitHub) is unset.
4. **Threshold and cancellation.** If fuel never hits Start run: auto-refund after N days? Creator cancel? Backer refund before start?
5. **Platform take rate.** Unset. Do not invent 5% or 10% in the UI.
6. **Failure of the loop.** If critic score goes sideways or the creator vanishes: pause and refund remaining, or keep spending? Lean for MVP: pause + refund remaining.
7. **IP / known-IP games.** GTM wants known-IP following. Takedown policy unset. MVP lean: original games + clearly labeled homages, no fake official licenses.
8. **Twitch vs first-party watch.** Twitch is optional. Lean: workbench HTML is enough for MVP.
9. **Open-source-on-ship.** Optional on submit. Default off unless the creator opts in (lean).
10. **Production vs PR.** Ship to loopfunder.com from the local Vercel project. Whether PR #1 should be abandoned or reconciled is unset; `~/loopfunder` is source of truth for the live prototype.

---

## What good looks like for the next implementation pass

A stranger lands on loopfunder.com, understands they are funding compute not a person, funds an example campaign in three clicks, and can open For creators and walk start-run without seeing a cash-out. A partner can open `/spec` and this markdown and implement the hosted sandbox + OpenRouter key + Stripe pot without another strategy meeting.

If you change a load-bearing rule, say so explicitly. Do not simplify fuel into a creator payout.
