Kickbacks CLI

See your Kickbacks.ai status, live earnings, and ad history right in your terminal — local-first, safe by default, nothing hidden.

Powered by Kickbacks.ai · independent companion tool
⬇ Download the menu bar app or install the CLI

macOS 13+ · signed & notarized by Apple · includes the kickback CLI.

Requires Kickbacks.ai — new to it? kickback setup installs the extension, kickback login signs you in.

Menu bar app

Prefer a click to a command? Kickbacks Bar keeps your live today · lifetime earnings in the macOS menu bar — and puts the whole CLI (earnings, ad history, daily chart, status) one click away.

Kickbacks Bar menu bar app

Homebrew — installs the CLI too

brew install --cask gabeperez/kickback/kickbacks-bar

Both include the kickback CLI — the cask installs it as a dependency, and the direct .zip download bundles it and sets it up on first launch (it'll prompt to install Apple's free Command Line Tools if your Mac doesn't have Python yet). No separate step needed.

Install the CLI

macOS. Needs python3 + opensslopenssl ships with macOS, and python3 comes with Apple's free Command Line Tools (you'll be prompted to install them on first run if needed). No pip packages.

One-line install

curl -fsSL https://gabeperez.github.io/kickback-cli/install.sh | bash

Or with Homebrew

brew install gabeperez/kickback/kickback

It installs one script and writes a config with safe defaults. Inspect first if you like — that's encouraged: view the exact script.

What it does — and what it touches

Run kickback about any time for this, generated from the tool itself.

Reads — all local, all yours

The extension's filescli-ad.json / debug.log — the current ad & status it already wrote to your disk
~/.claude/settings.jsonto confirm the spinner & status line are wired up
Your editor's local DBto read your Kickbacks access token (state.vscdb)
Your macOS Keychainthe key that decrypts that token — the same one your editor uses

Sends over the network

Only your own token + the Claude Code version → Kickbacks' own backend.

The exact same server the official extension already talks to. Nothing is ever sent to the tool's author or any third party.

Never does

✗ read your codeprompts and completions are never touched
✗ move money or click adsread-only on your earnings
✗ bake in your accountaccount, paths, device — all discovered at runtime, nothing hardcoded
✗ phone homeno analytics, no telemetry to anyone but Kickbacks

Safe by default

Every feature that writes anything is off until you turn it on. Read-only status needs nothing.

FeatureDefaultWhat it does
networkoncontact the Kickbacks backend for earnings (turn off for fully-offline status)
sampleroff60s background job logging ad rotations & earnings → history / daily charts
notificationsoffdaily macOS notification with your earnings
token_refreshoff ⚠when the editor is closed, refresh an expiring token & write it back (backup saved first)
kickback config # see toggles · enable/disable <feature>

Everything is editable by hand in ~/.config/kickback/config.json — including the backend URL and keychain names. Nothing is hardcoded.

What could change or break it

It's a companion to an extension that updates, so it degrades gracefully — earnings just show "unavailable", on-disk status keeps working, and it never crashes.

ChangeWhat you'd see
Extension changes the token formatearned — unavailable
Backend URL / endpoint changesHTTP 4xx/5xx — edit config
Keychain scheme changeskeychain denied
Signed out / token expired, editor closedunavailable until you reopen it

kickback doctor checks all of these live.

Earnings accuracy — honest notes

The backend exposes only aggregate earnings (lifetime / today) — never CPM, advertiser cost, or billed impression counts. So per-ad dollars, effective rate, and per-day totals are derived by attributing earnings changes to whichever ad was showing. They're approximate and represent your share, not advertiser spend — and they're labeled that way everywhere in the tool.