Your agent is thinking.
The pilot credits the wait.
SAI puts one quiet example sponsor line in your coding agent’s wait state and records local AI credits — spent straight back on model calls through a local, OpenAI‑compatible gateway. Your code never leaves the machine.
Pilot status: credits are simulated local ledger units, not yet redeemable or funded by live sponsors. Sponsor names shown here are fictional examples.
Try the private beta from source
python ≥ 3.10 · macOS / Linux / Windows caveatspython -m pip install -e .sai login # local user + key, nothing uploadedsai claude # your agent, now with a walletThe loop closes on your AI bill
earn → hold → spend, all on your diskNo patches, no forks
sai claude runs your agent inside a real PTY and watches output timing — never content. The agent doesn’t know SAI exists.
Interactive terminals only. CI and headless runs are detected and left alone.
The card rides the spinner
When the agent goes quiet for 10 seconds, one text line renders under the wait state. At most one card every 75 seconds — tune it or shut it off.
Each example card records 0.005–0.006 simulated credits into a local wallet file you can read with cat.
Credits meter the gateway
Point any client at the local gateway (/v1/chat/completions) and local credits are deducted per token. Earned waiting, spent thinking.
Pilot credits are local simulated units. They do not represent a live sponsor-funded balance yet.
What does waiting pay?
default rates, straight from the sourceYour agent’s idle time
How long does your agent spend thinking, per day? Count the spinners, the test runs, the long diffs.
Normal frequency: a card needs ≥10s of quiet and cards sit ≥75s apart. Heavy agent users blow past an hour of wait time without noticing.
Uses the repo defaults: ~0.0057 simulated credits per card, 0.25/day cap, gateway rates of 0.002 per 1k input and 0.006 per 1k output tokens.
Never leaves this machine
the schema is the contractpromptsNEVER SENTsource codeNEVER SENTfile pathsNEVER SENTterminal outputNEVER SENTshell historyNEVER SENTrepository URLsNEVER SENT
The runner tracks when output happens, not what it says. An event is eleven
boring fields, and anything outside the schema is stripped before it exists.
Audit it yourself: sai privacy schema
sai config kill-switch on
For sponsors: pilot inventory is not live
example unit · no paid placements yetA developer watching an agent think is a plausible sponsored moment. The current build proves the local mechanics; it does not sell inventory yet.
Today the cards are fictional examples and the credits are simulated local ledger entries. Before paid placements, SAI needs signed sponsors, server-side accounting, anti-fraud controls, and legal terms.
- ✓Qualified impressions only. A card renders after ≥10s of real agent wait, in an interactive terminal, never in CI.
- ✓No fatigue by design. Cards sit ≥75 seconds apart with a hard daily payout cap — scarcity is the format.
- ✓Developers opt in knowingly, because the card pays them in the pilot ledger. Goodwill is the product hypothesis.
- ✓Reporting is not live. The repo documents the candidate event schema, but no sponsor reporting backend exists yet.
That’s the proposed unit: sponsor name, 3–80 characters of copy, a destination, and the payout visible to the developer. The current page uses fictional sponsor data only.
Sponsor sales paused
Do not sell sponsor slots until backend accounting, anti-fraud, privacy terms, billing, and signed partner approvals exist.
Run the local pilot →Fair questions
So… this is adware?
sai config set frequency low), and sai config kill-switch on stops every sponsor surface instantly. Adware doesn’t ship a kill switch on the front page.What is a credit actually worth?
Can you read my code or prompts?
code_uploaded, prompt_uploaded and logs_uploaded are hard-coded false. Run sai privacy schema and read the whole contract.Why credits instead of cash?
What counts as an impression for sponsors?
Does it work offline? Does it phone home?
127.0.0.1. The CLI uploads nothing today; the sponsor event schema documents the only thing that ever could. The default gateway response is even a deterministic local mock until you point it at an upstream.The spinner might be an ad slot.
This pilot tests the mechanics.
Install it from the repo, let one long test run idle, and watch the first example card hit the local ledger.