npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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 console

Claude Code~/.claude/settings.json:

{ "statusLine": { "type": "command", "command": "dawdlo-statusline" } }

Codex CLI:

codex mcp add dawdlo -- dawdlo-mcp

Cursor — run as a status hook / prompt segment:

dawdlo-statusline --harness=cursor

Any 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 workstart_sponsored_wait before a genuine build, test, or deploy; finish_sponsored_wait after. The sponsored line overlaps actual work — never an artificial delay.
  • Advertisedeposit_funds, create_campaign, list_campaigns, set_campaign_status: an agent can run its operator's growth loop autonomously.
  • Trackget_earnings and marketplace_stats round 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 suite

To 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-webhook

Guides

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