dawdlo
v1.3.3
Published
Dawdlo — the ad marketplace for AI-agent wait states. Get paid while your agent thinks.
Readme
✦ Dawdlo
Get paid while your agent thinks.
Your AI coding agent spends minutes a day "thinking" while you stare at a spinner. Dawdlo puts a sponsored line in that status bar and pays you for every verified impression, straight to your bank via Stripe Connect.
Works with Claude Code · Codex · Cursor · VS Code — and anything else over HTTP or MCP.
Why Dawdlo
- Get paid for every verified impression — earnings credit straight to your balance.
- Zero added latency — ads render instantly from a local cache; nothing slows your agent down.
- Verified views only — impressions are independently verified before anyone is billed, so advertisers pay for real attention and developers earn from it.
- Real payouts — onboard with Stripe Connect and withdraw to your bank ($10 minimum).
- Agents are first-class — MCP tools let an agent earn during real work and even run ad campaigns for its operator.
Quickstart (developers — start earning)
One command creates your account, saves credentials to ~/.dawdlo/config.json,
and installs the right integration for your harness:
npx dawdlo- Claude Code: native status line, Agent Skill, and MCP tools — installed automatically.
- Codex: Agent Skill and MCP tools — installed automatically.
- Cursor: prints the status-hook command to add.
- VS Code: install the extension in
vscode-extension/for status-bar, Claude Code panel/CLI, Codex panel, and Claude usage-banner inventory during verified tasks, debug sessions, and terminal shell executions.
That's it. Sponsored lines appear during genuine waits, and your earnings show up in the developer console.
For Codex, setup copies the skill to ~/.agents/skills/dawdlo, installs a stable
MCP runtime at ~/.dawdlo/mcp/server.js, and refreshes the global dawdlo MCP
registration. Restart Codex if an already-open session does not pick up the new
skill or tool definitions.
Manual setup
If you prefer to wire things yourself:
export DAWDLO_HOST=https://your-dawdlo-host
export DAWDLO_DEV_KEY=devk_... # from the developer consoleClaude Code — ~/.claude/settings.json:
{ "statusLine": { "type": "command", "command": "dawdlo-statusline" } }Codex CLI:
codex mcp add dawdlo -- dawdlo-mcpCursor — run as a status hook / prompt segment:
dawdlo-statusline --harness=cursorAny other harness — two HTTP calls:
GET /api/v1/serve → print text → wait 4s → POST /api/v1/impressions/:id/confirm.
Agents as participants (MCP)
The bundled MCP server gives agents everything they need:
- Earn during real work —
start_sponsored_waitbefore a genuine build, test, or deploy;finish_sponsored_waitafter. The sponsored line overlaps actual work — never an artificial delay. - Advertise —
deposit_funds,create_campaign,list_campaigns,set_campaign_status: an agent can run its operator's growth loop autonomously. - Track —
get_earningsandmarketplace_statsround out the loop.
The setup command registers the MCP server for Claude Code and Codex
automatically and reads your key from ~/.dawdlo/config.json — nothing to paste
into agent config. JSON fallback for other clients:
{
"mcpServers": {
"dawdlo": {
"command": "dawdlo-mcp",
"env": {
"DAWDLO_HOST": "https://your-dawdlo-host",
"DAWDLO_ADV_KEY": "advk_..."
}
}
}
}Advertising
- One creative line (≤ 80 characters), bid per block of 1,000 verified impressions, $1 floor.
- Bid your true value — the generic auction is second-price, so honest bids win at fair prices (resonant ads are first-price; see pricing).
- Target by context: harness, OS, project type, model.
- Fund via Stripe Checkout; clicks are tracked with built-in redirect links.
- Pause, resume, and monitor from the advertiser console or the API.
You only pay for verified views — fetches, hidden renders, and replays never bill.
Payouts
- Developers earn 55% of every verified impression, credited to their balance at settlement.
- Onboard once with Stripe Connect Express (
POST /api/v1/developers/connect). - Withdraw with
POST /api/v1/developers/payout— $10 minimum, transferred to your bank. - Without Stripe keys the platform runs in demo mode (instant credits, ledger-only payouts), so the whole loop works locally and in CI.
API surface
| Endpoint | Auth | Purpose |
|---|---|---|
| POST /api/v1/advertisers | — | Advertiser signup → API key |
| POST /api/v1/advertisers/deposit | advertiser | Fund your wallet (Stripe Checkout) |
| POST /api/v1/campaigns/place | — | One-form placement: email + ad + blocks → Checkout |
| GET /api/v1/market | — | Bid market: price history, ranked table, LIVE/QUEUED |
| POST /api/v1/campaigns | advertiser | Launch a campaign |
| GET /api/v1/campaigns | advertiser | Balance + campaign stats |
| PATCH /api/v1/campaigns/:id | advertiser | Pause / resume |
| POST /api/v1/developers | — | Developer signup → API key |
| GET /api/v1/developers/me | developer | Earnings, available balance |
| POST /api/v1/developers/connect | developer | Stripe Connect onboarding |
| POST /api/v1/developers/payout | developer | Withdraw earnings |
| GET /api/v1/serve | developer | Get the current sponsored line (generic, second-price) |
| GET /api/v1/slate | developer | Resonant candidate offers for on-device matching |
| POST /api/v1/slate/redeem | developer | Redeem the matched offer into an impression (first-price) |
| POST /api/v1/impressions/:id/confirm | token | Confirm a verified view |
| GET /c/:impression_id | — | Click redirect + tracking |
| GET /api/v1/stats | — | Public ticker |
Running your own instance
Requires Node ≥ 22.5. Zero npm dependencies.
npm run seed # demo advertisers, campaigns, and a developer key
npm start # http://localhost:4173 — landing page + portal + bid market
npm test # full test suiteTo accept real money, set Stripe keys and verify the wiring:
export STRIPE_SECRET_KEY=sk_test_...
export STRIPE_WEBHOOK_SECRET=whsec_...
export DAWDLO_PUBLIC_URL=https://your-deployment
node scripts/stripe-check.js --register-webhookGuides
- Advertiser guide — launch, fund, target, monitor, and automate campaigns.
- Developer guide — install the client, integrate a harness, verify views, and receive payouts.
- How pricing works — what you pay for a generic ad vs a resonant (contextual) ad, in plain terms.
