Sponsored AI Credits
Local-first Open ledger Private pilot

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.

Install from checkout Pilot status → no cloud account · simulated credits · one command to kill it
wallet 0.000 credits
sai · claude
§1

Try the private beta from source

python ≥ 3.10 · macOS / Linux / Windows caveats
$python -m pip install -e .
$sai login # local user + key, nothing uploaded
$sai claude # your agent, now with a wallet
§2

The loop closes on your AI bill

earn → hold → spend, all on your disk
01 · WRAP

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

02 · WAIT

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.

03 · SPEND

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.

§3

What does waiting pay?

default rates, straight from the source

Your agent’s idle time

How long does your agent spend thinking, per day? Count the spinners, the test runs, the long diffs.

45 min / day of agent wait

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.

cards / day36
credits / dayCAPPED+0.205
covers (input tokens)3.1M / mo
covers (output tokens)1.0M / mo
+6.16 simulated credits / month in the local pilot ledger

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.

§4

Never leaves this machine

the schema is the contract
  • promptsNEVER SENT
  • source codeNEVER SENT
  • file pathsNEVER SENT
  • terminal outputNEVER SENT
  • shell historyNEVER SENT
  • repository 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

KILL SWITCH One command hard‑stops every sponsor surface, with a reason on the record: sai config kill-switch on
§5

For sponsors: pilot inventory is not live

example unit · no paid placements yet

A 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.
What you buy, exactly
developer’s terminal · live
✦ thinking… 14s
+0.006 creditsNorthstar Tools — Faster build cache for large monorepos northstar-tools.example
✦ thinking…

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.

Pilot program · 2026

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 →
§6

Fair questions

So… this is adware?
It’s one line of text, in a moment you were staring at a spinner anyway, that pays you. It only appears in interactive terminals, never in CI, at most every 75 seconds. You control frequency (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?
In the private pilot, credits are simulated local ledger units. The gateway meters them at the repo defaults — 0.002 per 1k input tokens and 0.006 per 1k output tokens — but they are not yet funded by live sponsors or redeemable outside this local gateway.
Can you read my code or prompts?
No, and not as a policy promise — as a mechanism. The runner watches output timing through a PTY, never content. Events are sanitized against a fixed schema where 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?
That is the intended model, but it is not live yet. The pilot keeps credits local and simulated until server-side accounting, anti-fraud, pricing, and sponsor contracts exist.
What counts as an impression for sponsors?
In the local prototype, a card renders after ≥10 seconds of agent wait, in an interactive terminal, with ≥75 seconds since the previous card, outside CI. A real sponsor product still needs server-side validation before these become billable impressions.
Does it work offline? Does it phone home?
The wallet, the ledger, the dashboard and the gateway all live on 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.

∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗