Public Trust Boundary
WaitSpin measures wait-state ad visibility, not developer work. The public client surfaces only fetch a sponsored line for a registered install, display it in the supported wait-state surface, and report an impression after the visible interval.
Public user surfaces: VS Code (status-bar-fallback), Cursor (status-bar-fallback), Devin Desktop (status-bar-fallback), Claude Code (claude-code), MiMo Code (mimocode), OpenCode (opencode), Grok Code CLI (grok), Antigravity CLI (antigravity), GitHub Copilot CLI (copilot), Qoder CLI (qoder).
Never Sent By The Public Clients
- workspace files
- source code
- open editor text
- prompts
- model responses
- integrated terminal output
- shell history
- repository URLs
- screenshots
- clipboard contents
- raw keystrokes
Operational Payloads
- user install registration: {install_id,target}
- serve polling: {install_id,capabilities?}
- impression event: {serve_id,serve_receipt,install_id,visible_ms}
- capability-gated view event: {serve_id,serve_receipt,install_id}
- capability-gated click redirect: opaque token; only its digest and 30-day HMAC risk signals are stored
- standard network metadata used for rate limits, fraud controls, abuse response, and audit logs
WaitSpin has no separate analytics telemetry stream in the public clients. Serve, impression, wallet, and accounting events are operational telemetry needed to run the marketplace.
The public website may use Google Analytics 4 with a GDPR cookie preference notice for EU/EEA visitors and no banner outside the EU/EEA. EU/EEA visitors can grant or deny analytics and advertising measurement separately. Website measurement is limited to page views and coarse conversion events such as install link clicks, command-copy success, list signup success, advertiser-path clicks, checkout-return status, and public surface selection. It does not include email addresses, company names, API keys, wallet addresses, command contents, clipboard contents, source code, editor data, terminal output, or repository files.
VS Code Extension Provenance
The VS Code-compatible extension is installed from the Visual Studio Marketplace for VS Code and Cursor, or from Open VSX for Devin Desktop. WaitSpin publishes the client source at github.com/citedy/waitspin and publishes a machine-readable provenance manifest at /provenance/waitspin-vscode.json. The repository does not track VSIX binaries; release automation packages them and records the SHA256 in the manifest.
Visual Studio Marketplace version: v0.1.16. Provenance version: v0.1.16. State: published. Live Marketplace status is published at /status/waitspin-vscode-marketplace.json.
Open VSX version for Devin Desktop: v0.1.16. State: published. Live Open VSX status is published at /status/waitspin-vscode-open-vsx.json.
Client Privacy Boundary
The VS Code extension connects a user install inside VS Code, stores the extension API key in VS Code SecretStorage, stores the install ID in user-scoped extension state, polls the WaitSpin API for a sponsored line, opens advertiser links only after user action, and reports a billable impression after the required visible interval. The VS Code-compatible extension path does not read workspace files, open editor text, prompts, model responses, integrated terminal output, shell history, repository URLs, or source code. Qoder's official hook payload is delivered locally by Qoder and can include prompt or assistant-message fields; the WaitSpin Qoder runtime discards those fields before cache or API work.
Supported Public Surfaces
- VS Code:
status-bar-fallback. Uses VS Code SecretStorage for the extension API key and user-scoped extension state for the install ID. The Marketplace extension provides an Activity Bar user view, status-bar mini state, wallet balance, pending balance, recent ledger entries, current sponsor card, no-inventory state, connect/polling/refresh/open commands, and a five-second visible impression hold. - Cursor:
status-bar-fallback. Uses the same VS Code-compatible WaitSpin extension in Cursor, installed or updated with cursor --install-extension waitspin.waitspin-vscode --force, waitspin extension install --target cursor, or Cursor's Extensions panel. Detected Cursor installs are included in waitspin install --all. It stores keys through the VS Code-compatible SecretStorage API and uses the same Activity Bar/status-bar privacy boundary as the VS Code surface. - Devin Desktop:
status-bar-fallback. Uses the Open VSX-published WaitSpin VS Code-compatible extension in Devin Desktop, installed from the Extensions panel/Open VSX, with devin-desktop --install-extension waitspin.waitspin-vscode --force, or with waitspin extension install --target devin. Windows lifecycle detection includes %LOCALAPPDATA%\devin\bin\devin.exe. Detected Devin installs are included in waitspin install --all. It stores keys through the VS Code-compatible SecretStorage API and uses the same Activity Bar/status-bar privacy boundary as the VS Code surface. - :
claude-code. Inspects user/scoped Claude settings, manages statusLine.command with --compose-existing support, and stores WaitSpin state/cache under ~/.waitspin. - :
mimocode. Installs a managed runtime under ~/.local/bin, adds a bash hook in ~/.bashrc, and stores WaitSpin state/cache under ~/.waitspin. - :
opencode. Installs a plugin under ~/.config/opencode/plugins, manages the tui.json plugin entry, and stores WaitSpin state/cache under ~/.waitspin. - :
grok. Uses a managed text-asset footer patch with hash-backed backup/restore plus managed runtime/cache/state; it does not patch native binaries. - :
antigravity. Manages Antigravity CLI statusLine.command in ~/.gemini/antigravity-cli/settings.json and stores WaitSpin state/cache under ~/.waitspin without patching native binaries. - :
copilot. Manages GitHub Copilot CLI statusLine.command in ~/.copilot/settings.json or COPILOT_HOME/settings.json and stores WaitSpin state/cache under ~/.waitspin without patching native binaries. - :
qoder. Installs through Qoder's official UserPromptSubmit/Stop hooks, returns sponsored copy with statusMessage/systemMessage, discards prompt and assistant-message hook fields locally before cache/API work, merges ~/.qoder/settings.json without patching Qoder binaries, and stores WaitSpin runtime/state/cache under ~/.waitspin.
The current public user earning surfaces are the VS Code Marketplace Activity Bar/status-bar extension, the VS Code-compatible Cursor and Devin Desktop editor surfaces, Claude Code statusline command, Antigravity CLI statusline command, GitHub Copilot CLI statusline command, MiMo Code shell hook, OpenCode TUI plugin slot, Grok Code CLI footer, and Qoder CLI UserPromptSubmit/Stop hooks. Native spinner patching beyond these supported status surfaces remains outside the public contract until separately shipped and documented.
What Stays Private
The public trust repository is scoped to client code, public docs, public contracts, provenance, and trust-boundary tests. These systems stay private:
- hosted backend implementation
- receipt signing internals
- fraud thresholds and risk scoring
- campaign ranking and allocation logic
- billing/accounting internals
- payout execution controls
- database schema and migrations
- deployment, monitoring, and operator scripts