Innings Sign in Open dashboard

Your agent forgets. This doesn't.

Every turn of every session, plus the findings and decisions the agent chose to keep. Pick a task back up tomorrow, after /clear, or on another machine.

$ npx innings-cli@latest init
$ npx innings-cli@latest init --project

hooks in every project on this machine

hooks in this repo only

Node 20+ · secrets scrubbed before upload · uninstall removes only what it wrote

First time? The whole setup is four steps

Get started

Four steps, once per machine. Nothing changes in how you use Claude Code afterwards.

  1. 01

    Check what you have

    Claude Code, installed and opened at least once — init installs into it, and stops if it can't find it. And Node 20 or newer:

    node -v
  2. 02

    Sign in and create a token

    The token is how this machine's sessions reach your account. Sign in with Google or GitHub, open Settings, and create one under API tokens. Keep the tab open — you paste it in the next step.

    Sign in and create a token
  3. 03

    Run init in a terminal

    For every project on this machine:

    npx innings-cli@latest init

    Or only the repo you're in: add --project. To see every file it would change first, add --dry-run.

    It installs three hooks, registers its tools with Claude Code, then asks for the token — paste it and press Enter. Your own hooks are left untouched, and your settings are backed up first.

  4. 04

    Restart Claude Code

    Quit and reopen it — the hooks and tools load when a session starts. Your first session asks what to call the task you're working on; that question is how you know it's working. Answer, or type skip, and work as normal. Turns appear on your dashboard as you go.

If something's off

zsh: command not found: innings

Expected — installing through npx puts nothing on your PATH, and Claude Code doesn't need it to. To type innings commands yourself, add it once (init prints the line for your shell; this is zsh):

echo 'export PATH="$HOME/.innings/bin:$PATH"' >> ~/.zshrc

Then open a new terminal. Or skip it and use the full path: ~/.innings/bin/innings doctor.

Claude Code was not found on this machine

Install Claude Code and open it once, so it creates its settings, then run init again. If it lives somewhere unusual, add --force.

that token was rejected, or you skipped it

The install itself is done. Create a fresh token in Settings and paste it here:

~/.innings/bin/innings login
nothing shows up on my dashboard

Make sure Claude Code was restarted after init. If it was, doctor checks every piece — hooks, tools, token, server, and whether anything is stuck in the local queue — and says what to run for whatever is wrong:

~/.innings/bin/innings doctor

Upgrading: when a new version is out, your next session says so, with the exact command to run. Removing: npx innings-cli uninstall takes out the hooks and tools, and nothing else.

What it looks like

~/work/checkout-api
$ npx innings-cli@latest init
  scope      every project on this machine
  hook       SessionStart, Stop, SessionEnd
  mcp        registered with Claude Code
  login      logged in as you@example.com
  restart Claude Code to pick up the hooks and the MCP server.
$

AND THIS IS WHAT IT KEPT

decision the cap stays at 60s

beyond a minute, doctor should say unreachable rather than the queue quietly growing

change jitter on every retry delay

two machines that lost the server together were retrying in lockstep

2 secrets scrubbed before upload — jwt, aws-key

Exactly two things get captured

No summaries you didn't ask for, no telemetry. The log is the conversation itself, plus what the agent chose to pin to it.

01 Raw turns

The prompt you sent and the response you got, verbatim, appended once per turn. Entries are immutable — nothing is edited after the fact, so the log reads the way the session actually went.

02 Context, when it earns its place

After each turn the agent decides whether anything else is worth keeping — a finding, a decision, a constraint. If yes, it is attached with a one-line reason. If not, nothing extra is stored.

Wired in, not just written down

Instructions alone don't survive a long session. Innings installs Claude Code hooks, so the protocol holds even when the context doesn't.

a session starts, clears, resumes or compacts
re-injects the protocol, and briefs the agent on the open task
every turn, on Stop
appends the raw turn, scrubbed, and queues it if the server is down
a turn edits files but logs nothing
nudges the agent to record what it decided

Claude Code only, for now.

The whole CLI

After init these run as ~/.innings/bin/innings <command>, or as plain innings once it's on your PATH.

innings init
Sign in, register the MCP server, install hooks. Global by default, --project for one repo. Idempotent, and supports --dry-run.
innings doctor
Is the MCP server registered, is the token valid, is the server reachable, did the hooks fire recently.
innings login
Store a new API token, when the one from init was skipped, rejected or revoked.
innings uninstall
Removes every block it wrote, and only those blocks.