01 / THE PITCH

Thinking time
pays the bills.

We turned opencode's Thinking… spinner into sponsor space. Every idle second funds the agent — so it stays free, forever.

UPSTREAM OPENCODE
~/project — opencode

> refactor the auth middleware to use sessions

Thinking

⋯ you, watching a spinner, for free, for no one

AD-SUPPORTED FORK LIVE FEED
~/project — opencode*

> 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.)

Install the fork $0.00/mo — the spinner pays
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

Put your message in the
most-watched spinner in the terminal.

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.

≥5s

Guaranteed hold

Once your message appears it's pinned on screen for a minimum display time — it never flashes away half-read.

Weighted rotation

Your weight buys your share of the rotation against the current live campaigns. No auctions, no sniping — arithmetic.

PII

Honest impressions

Daily totals and unique-session reach per campaign, counted anonymously. We can't inflate what we don't track.

— COMPOSE YOUR CAMPAIGN —

LIVE PREVIEW

preview

Thinking

03 / THE INVENTORY

Ten placements. One spinner economy.

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.

SlotPlacementVisibilityTier
home-bannerFull-width banner in your brand color above the prompt on the launch screen — logo, message, and your URLEvery launchPremium
sidebar-cardBrand-color card at the bottom of the session sidebar — message plus clickable URLSidebar openPremium
thinking-spinnerFull takeover of the "Thinking…" line in your brand color, ≥5 s guaranteed holdEvery reasoning burstPremium
prompt-lineFull-color block inside the prompt box — brand background, message, and URL, on screen the entire sessionAlwaysPremium
status-barNext to esc interrupt while the agent worksWhole busy timeStandard
status-cornerBottom-left corner, beside the activity dotsWhole busy timeStandard
home-billboardBelow the prompt box on the launch screenEvery launchStandard
tool-pendingSuffix on running tool labels ("Reading file… · your ad")Per tool runStandard
thought-linePinned forever next to every "+ Thought" line — print-stylePermanent scrollbackScrollback
build-lineFull-color block stamped after every completed reply — one campaign pinned per message, foreverPermanent scrollbackScrollback

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

Current rotation queue.

Live from the feed every client reads. Share = weight ÷ total weight.

#SponsorMessageWeightRotation share
fetching live campaigns…

What leaves your machine

  • Which ad IDs were shown
  • How many times
  • A random UUID, new every launch

What never does

  • Your prompts
  • Your code
  • Your identity, machine ID, anything