waitroll
v0.1.0
Published
Get paid to use AI — WaitRoll shares 50% of ad revenue with you.
Downloads
7
Maintainers
Readme
waitroll — get paid while Claude Code thinks
A sponsored status line for the Claude Code terminal. Advertisers bid for one tasteful line while the model is thinking; up to 50% of the ad revenue goes to you, the developer whose terminal showed it. Zero dependencies — pure Node built-ins.
Install
npx waitroll install && npx waitroll logininstallwires the status line into~/.claude/settings.json(your existing settings are backed up first and every other key is preserved) and never opens a browser.loginopens your browser to sign in with Google and links this terminal to your account. Ads — and earnings — only start after you sign in.
Restart Claude Code and the sponsored line appears at the bottom of your session, rotating through the live auction pool.
Commands
| Command | What it does |
|---|---|
| npx waitroll install | Wire the status line into Claude Code (no auth, no browser). |
| npx waitroll login | Sign in with Google; links this terminal to your account. |
| npx waitroll status | Show install + sign-in state. |
| npx waitroll logout | Sign out — ads and earnings stop. |
| npx waitroll uninstall | Restore Claude Code settings, remove WaitRoll files. |
The two surfaces
- Status line — re-rendered live by Claude Code; the clickable surface (an OSC 8 terminal hyperlink). Rotates with the auction pool.
- Spinner verb — the ad line replaces the "thinking…" verb via the
spinnerVerbskey (Claude Code ≥ 2.1.143; read at session start). Rewritten only when the rotating ad changes.
How earning works
One impression = 5 seconds of a live Claude Code session showing the ad. Each credited impression pays you up to 50% of the advertiser's per-impression bid; the server enforces idempotency, cooldowns, and velocity caps, so the numbers in your dashboard are the billable truth. You earn on views — clicks are free to make and never charged to you. Balances and payouts live at the WaitRoll portal.
Safety properties (the settings.json edits)
- Minimal-edit — replaces only its own keys; ordering and formatting of everything else survive. Refuses to touch a file that doesn't parse.
- Backup + exact restore —
settings.json.waitroll-backupbefore the first edit;uninstallrestores it. - Atomic writes — temp file + rename; Claude Code never sees a half-written file.
- Version-gated —
spinnerVerbsis only written whenclaude --versionreports ≥ 2.1.143 (fails closed otherwise). - Control-char stripping — ad text and URLs are stripped of C0/C1 control characters before reaching the terminal (no escape-sequence injection).
- Sign-in required — without credentials the client fetches nothing, reports nothing, and just shows a sign-in nudge.
Files
| Path | Purpose |
|---|---|
| ~/.waitroll/waitroll-statusline.mjs | The installed renderer (Claude Code runs this). |
| ~/.waitroll/config.json | Per-install device id (+ optional apiBase/portalBase overrides). |
| ~/.waitroll/credentials.json | CLI token from login (0600). Deleted on logout. |
| ~/.waitroll/cli-ad.json | The cached rotation pool. |
License
Proprietary — see LICENSE. You're welcome to install and use it; copying, modifying, or redistributing it requires written permission.
