Reach builders with nothing else to look at.
Your brand renders as one line in the Claude Code status bar, while a builder waits on the model. No feed to scroll past, no adjacent content, no ad blocker in the way.
- Prepaid, no contracts
- Billed on verified activity
- Daily spend caps
- Second price clearing
Attention that is not competing with anything.
This is not a banner in a sidebar. It is the only thing changing on screen during the specific seconds a builder has stopped typing and is waiting for a machine to finish.
No feed to scroll past
Nothing adjacent to it
Ad blockers do not apply
The audience is the filter
The tools builders already work in every day
Tools in the stack, not advertisers. Nobody here has bought a line.
One line. Here is the whole spec.
There is no design work, no asset production and no review cycle. You supply four fields and the network renders them identically for every advertiser.
- Brand
- Up to 40 characters after sanitisation. Shown in your colour.
- Tagline
- Up to 80 characters. Trimmed from the end first on narrow terminals, so the disclosure and your name always survive.
- Link
- Any https destination. The line becomes an
OSC 8hyperlink and clicks are attributed on our server through a redirect, never reported by the client. - Colour
- One hex value, clamped into a legible luminance band. Terminals come in both polarities and we cannot detect which, so a colour that would be invisible on black or white gets corrected rather than wasting your spend.
The sponsored label, the separator and the domain are hardcoded and cannot be restyled by anyone, including you. That is deliberate, and it works in your favour: it is the reason builders leave the plugin installed, which is the reason there is any inventory to buy.
Sealed bid, second price, every impression.
Bid what that attention is genuinely worth to you. The mechanism is built so that doing exactly that is also the optimal strategy.
- Campaign A
$14.00$11.51 - Campaign B$11.50
- Campaign C$9.20
Campaign A wins and pays $11.51, one increment above Campaign B’s $11.50, not the $14.00 it bid. Raising a bid can win more impressions. It can never raise the price of the ones already won.
- Second price
- The winner pays one increment above the runner up, never their own bid. Truthful bidding is dominant: raising your bid can win you more impressions, but it can never raise what you pay for the ones you were already winning. There is no field to guess at and no bid to shade.
- $8.00 CPM floor
- This is the reserve, not a safety rail. Until several advertisers are bidding against each other every auction is uncontested and clears at $8.01, one cent above it, because the winner always pays one increment above whatever it beat. Bid less than that and you pay your bid. The rate reflects the audience: builders who pay for an AI assistant and use it on work that matters to them.
- Ranked on eCPM
- A CPC bid is scored as cost per click times your measured click-through rate, so click and impression bidders compete on equal terms. A new campaign is assumed to convert at 1 percent under a Beta prior, which means one lucky early click cannot inflate your rank.
- Whole bid scales
- When you win, the discount applies to your entire bid rather than to its CPM component. A pure click bidder pays a reduced cost per click instead of a CPM they never offered.
- Frequency capped
- While other campaigns are eligible, no single campaign takes more than half a batch. A single session does not become your ad twelve times in a row, which is what keeps builders from uninstalling.
- Daily cap
- Dollars per UTC day, set from either the dashboard or the CLI. Leave it at zero for uncapped. Affordability is checked against your full bid rather than the clearing price, which is deliberately conservative: second price can only ever charge you less.
What you are actually billed for.
The publisher runs the client and gets paid per impression, so we treat the client as hostile. Here is what that means in practice, including the part we cannot fully solve.
Activity, not render count
The status line refreshes every few seconds for as long as a session is open, watched or not. Billing keys off cumulative model working time, which only advances when work actually happens. Fresh activity makes a session billable for three minutes, and past that the line renders nothing at all.
Capped server side
60 billable impressions per publisher per hour, 20 per session, and a 25 second minimum gap. A publisher who renders faster earns nothing extra, so there is no volume to manufacture.
The price is not client supplied
Campaign, publisher, session and price are sealed into an HMAC token on our server at serve time, and billing reads strictly from the token. A repriced payload fails the signature check.
Replay is a no-op
Events are unique on nonce and kind, so a token can be redeemed at most once as an impression and once as a click. Resending it does nothing.
Clicks attributed server side
A click is a redirect through our server, not something the client reports. Nothing on a publisher’s machine can claim one.
Not proof against a determined publisher
A publisher willing to forge a rising activity counter could bill for attention that was not there. We accept that deliberately: the rate caps bound what forging is worth, and the gate turns passive over-billing, which is the common case, into a deliberate act that leaves an audit trail. We would rather tell you that than sell you a guarantee we cannot keep.
Fund a balance, ship a line.
Prepaid through Stripe Checkout. No contract, no insertion order, no minimum spend beyond whatever you put on the balance.
Email and a password. You land on a dashboard with a balance, your campaigns and what they delivered.
Or stay in the terminal. The CLI does the same things and issues its own API key.
spinwait ads signup you@example.comspinwait ads topup 50spinwait ads create --brand "Linear" --tagline "Issue tracking built for speed" \ --url https://linear.app --cpm 12 --daily-cap 25spinwait ads listWhat buyers ask us.
How big is the network right now?
Small, and new. We are not going to quote you an impression volume we cannot back, and you should be suspicious of any early network that does.
The honest way to find out is to fund a small balance, set a daily cap, and read the delivery numbers off your own campaign in your dashboard. Nothing is committed beyond the balance you put in.
Can I target by language, region or company?
No, not yet. Every active campaign competes for every impression across the whole network.
The audience is already narrow in the way that usually matters: every builder seeing your line is mid task with an AI assistant on real work. Targeting buys you less here than it would on a general purpose network. It is still the first thing on the roadmap.
CPM or CPC?
Either, and they compete fairly against each other. Bid a CPM, a CPC, or both. A click bid is converted to an effective CPM using your measured click-through rate, so the auction can rank the two on one scale. Until you have enough clicks to measure, a Beta prior assumes 1 percent.
How do I pay, and what happens when the balance runs out?
Prepaid, by card, through Stripe Checkout, from your dashboard or from the CLI. There is no invoicing and no credit.
When the balance can no longer cover your full bid, the campaign simply stops winning auctions. It does not go negative, it is not paused permanently, and it starts serving again the moment you top up.
Why should I believe the impressions were seen?
Because billing is gated on the model actually doing work, verified independently on our side. The activity marker has to be monotonic, so a counter that goes backwards is refused outright, and rate caps bound the volume any one publisher can produce.
The limit is real and worth stating: a publisher determined to forge a rising counter could bill for attention that was not there. The caps bound the damage, and the design turns the common case, a terminal left open through a meeting, into zero impressions rather than an afternoon of them.
Can I pause, edit or cap a campaign?
Set a daily cap in dollars per UTC day, and flip a campaign between active and paused at any time, from the dashboard or the CLI. Changes take effect on the next auction, which is within seconds.
Will my brand end up next to something embarrassing?
There is nothing to be next to. The line renders in a builder’s own terminal, below their own status line, with no other advertiser and no surrounding content. The only neighbouring text is their own work.
What stops a competitor from buying every impression?
Frequency capping. While more than one campaign is eligible, no single campaign takes more than half of any batch. Outbidding everyone raises your share and your price, but it does not let you buy the whole surface.