arbidle — get paid while your agent thinks
Your AI agent is working. Your build is running. Your tests are churning.
arbidle turns those idle seconds into income — without ever reading a line of
your code.
When a wait state begins, one small, contextual, cryptographically-signed
developer ad appears in a sidebar. You glance at it (or you don't), and you
earn. That's the whole deal.
Built for the agentic stack — Claude Code, Cursor, Codex, Aider, Copilot — and
for any heavy build, test, deploy, container, or package job.
Why arbidle is different
Most "earn while you code" tools ask you to trust them with your workspace.
arbidle is engineered so you don't have to — every claim below is something you
can audit:
- 🔒 Zero-read telemetry. Wait states are detected only from the editor's
Shell Integration boundaries — the command you launched, and that's it. We
never read your terminal output, files, environment variables, git, clipboard,
or agent logs. An extension that can't read your workspace can't leak it.
- ✍️ Every ad is cryptographically signed. Each creative is an Ed25519-signed
payload, verified against a pinned public key before it renders. A tampered
or unsigned ad is dropped, never shown. Fail closed.
- 📦 Sandboxed by construction. Ads render inside an
iframe with
sandbox="allow-scripts" and no allow-same-origin, behind a strict CSP.
No access to your editor, no network back-channel, no remote code execution.
- 🤖 Proof-of-Work anti-fraud. Every impression carries a Hashcash proof plus
behavioral attestation — so advertisers pay for real human idle-moments and
your payouts stay legitimate.
- 🛡️ Respects your telemetry choice. If your editor's global telemetry is off
(
telemetry.telemetryLevel: off), arbidle makes zero exchange calls and
shows a privacy-mode state — no auctions until you turn telemetry back on. Your
own arbidle.enabled toggle is the other master kill.
How it works
- You run something heavy — an agent, a build, tests, a deploy, a container,
or a package install.
- arbidle notices the wait via Shell Integration event boundaries (OSC 633)
— never the output, never your files.
- A signed ad is fetched, verified, and rendered in the sidecar while the
job runs.
- You earn for every verified impression. Cash out via Stripe when payouts
are enabled for your account.
Install
Search "arbidle" in the Extensions view (Cursor, Windsurf, VSCodium), or:
code --install-extension arbidle.arbidle
Open the arbidle icon in the activity bar, then run any heavy command in a
terminal with shell integration. An ad appears while the job runs; the footer
ticker tracks your verified impressions and earnings.
Privacy at a glance
| What leaves your machine |
What we never touch |
| The command category you launched (e.g. "build") |
Terminal output / buffers |
| Your active file's language id |
Your source files |
| A one-way hash of your workspace folder name |
Env vars, secrets, git, clipboard, agent logs |
Full threat model: SECURITY.md.
Settings
| Setting |
Default |
Description |
arbidle.enabled |
true |
Master switch for wait-state detection. |
arbidle.demoMode |
false |
Locally-signed sample ads, no backend (a safe preview that earns nothing). Off by default so a fresh install auctions live and earns. |
arbidle.endpoint |
https://www.arbidle.com |
Exchange base URL (used only when demo is off). Change only for a self-hosted exchange. |
arbidle.publicKey |
"" |
Advanced: override the built-in Ed25519 verification key (64 hex chars). |
arbidle.minDwellMs |
1500 |
Min visible+focused time before an impression counts. |
arbidle.minWaitMs |
1200 |
Min wait duration before an ad renders (anti-flicker). |
arbidle.maxAdsPerHour |
12 |
Client-side frequency cap per workspace (0 = uncapped). |
arbidle.powDifficulty |
3 |
Demo Proof-of-Work difficulty (leading hex zeros). |
arbidle.statusBar.enabled |
true |
Show the arbidle status-bar item. |
arbidle.statusBar.showEarnings |
true |
Append running earnings to the status-bar item. |
Support
Questions, payout help, or found a bug? Open an issue on
GitHub or visit
arbidle.com.
| |