Skip to main content
The hookie CLI does two things the console cannot. Development. Getting a live event into the code you are writing used to mean a tunnel or a deploy. hookie listen forwards your real workspace’s events to a port on your laptop, authenticated by the same OAuth connection a coding agent uses — no public URL, no third-party relay. Management. --json on every command, a real exit code when something fails, and a hookie.yml you can review in a pull request.

Install

Node 20 or newer. No build step and no dependencies outside the Hookie repository.

Sign in

That opens Hookie in your browser, waits for you to approve the connection, and stores the resulting token in ~/.hookie/credentials.json with mode 0600. Nothing is pasted anywhere: it is the standard OAuth 2.1 authorization-code flow with PKCE, the same one connected agents use, so hookie login and an agent you connect share one credential store.
A new connection starts read-only. Widen it in Settings → Connected agents, where you can also revoke it — immediately, and per connection. A CLI connection appears in that list exactly like an agent, because it is one.
Three more commands round that out: hookie logout keeps the registered OAuth client so the next hookie login reuses it instead of adding another row to your agent list. Revoke it on the server too if you mean to cut it off there.

Which Hookie, which project

--url defaults to $HOOKIE_URL, then http://localhost:8787 — a local wrangler dev. --project takes a slug or an id; with neither, commands use your workspace’s Default project.
Pointing at a non-local origin needs either a stored connection for that exact origin or HOOKIE_ALLOW_REMOTE=1. That gate exists so a stray HOOKIE_URL cannot aim a development command at production by accident.

What it will and will not print

stdout is data; stderr is progress, warnings and prompts. So hookie endpoints list --json | jq works, and so does redirecting stdout while still watching what happens.
An endpoint’s public URL is a credential — the slug in it is what authenticates the request. It is printed by default anyway, because it is the point of hookie endpoints create, and the CLI says so on stderr when it does. Use --redact when the output is going into a ticket, a log or a chat.
A destructive command asks first. On a non-interactive stdin it refuses rather than assuming yes — a CI job that means it passes --yes, and one that did not mean to gets an error instead of a deletion.

Where to go next

Local development

listen, tail, send and replay — the loop that replaces a tunnel.

Command reference

Every command, generated from the same catalog the CLI builds itself from.

Configuration

hookie.yml, environment variables and exit codes.

Connected agents

The same OAuth connection, from your coding agent instead.