01 / THE PITCH
We turned opencode's Thinking… spinner into sponsor space. Every idle second funds the agent — so it stays free, forever.
> refactor the auth middleware to use sessions
⠋ Thinking
⋯ you, watching a spinner, for free, for no one
> refactor the auth middleware to use sessions
⠋ Thinking
⋯ same agent, same speed — the spinner pays the rent
These are the actual campaigns in rotation on our ad network right now — fetched live, rotated by weight, exactly like the client does it. (Sped up for demo; in the TUI each message holds ≥5 s.)
git clone https://github.com/anomalyco/opencode && cd opencode
bun install && bun dev No account. No telemetry on your prompts or code. Turn ads off any time with "ads": {"enabled": false} — it's still free, we're just nicer to sponsors than that.
02 / FOR SPONSORS
Developers stare at the thinking line dozens of times an hour, waiting for the model with nothing else to look at. That attention now has a marketplace — and it funds open source.
Once your message appears it's pinned on screen for a minimum display time — it never flashes away half-read.
Your weight buys your share of the rotation against the current live campaigns. No auctions, no sniping — arithmetic.
Daily totals and unique-session reach per campaign, counted anonymously. We can't inflate what we don't track.
— COMPOSE YOUR CAMPAIGN —
LIVE PREVIEW
⠋ Thinking
We're dev-first: campaigns ship via CLI. Send us this command (or run it if you're us):
→ email the campaign to sponsors@codewithads.com 03 / THE INVENTORY
Every campaign rotates through all slots; weight buys your share. Slot IDs double as the surface value on impression reports, so you see exactly where you ran.
| Slot | Placement | Visibility | Tier |
|---|---|---|---|
| home-banner | Full-width banner in your brand color above the prompt on the launch screen — logo, message, and your URL | Every launch | Premium |
| sidebar-card | Brand-color card at the bottom of the session sidebar — message plus clickable URL | Sidebar open | Premium |
| thinking-spinner | Full takeover of the "Thinking…" line in your brand color, ≥5 s guaranteed hold | Every reasoning burst | Premium |
| prompt-line | Full-color block inside the prompt box — brand background, message, and URL, on screen the entire session | Always | Premium |
| status-bar | Next to esc interrupt while the agent works | Whole busy time | Standard |
| status-corner | Bottom-left corner, beside the activity dots | Whole busy time | Standard |
| home-billboard | Below the prompt box on the launch screen | Every launch | Standard |
| tool-pending | Suffix on running tool labels ("Reading file… · your ad") | Per tool run | Standard |
| thought-line | Pinned forever next to every "+ Thought" line — print-style | Permanent scrollback | Scrollback |
| build-line | Full-color block stamped after every completed reply — one campaign pinned per message, forever | Permanent scrollback | Scrollback |
Adjacent slots never show the same sponsor — rotation picks four distinct campaigns per cycle. Scrollback slots stop billing the moment they go static: you pay for live attention, not history.
04 / THE BOARD
Live from the feed every client reads. Share = weight ÷ total weight.
| # | Sponsor | Message | Weight | Rotation share | |
|---|---|---|---|---|---|
| ⠋ fetching live campaigns… | |||||