Sentinel The window your coding agents report to.
I run several Claude Code sessions at once, and the important parts kept scrolling away: a question waiting on me, a plan, a lesson it had learned, a dev server left running. Sentinel keeps all of it in one window on the Mac, and gives the agents a direct line to keep it current. It is free to everyone in my network, and you get the version I use every day.
- Platform
- macOS
- Runs
- On your Mac, no server
- Talks to agents over
- MCP and hooks
- Price
- Free to my network
- Receipts
- 15 commits · 68 test files · since 9 October
harbour-api
~/code/harbour-api
Inbox
- Run the migration that drops charges.legacy_ref?harbour-api · claude · 3f9a1c2e4m
- Create the read replica and paste its URLharbour-api · claude · 3f9a1c2e18m
- Keep v1 webhooks for one more release?harbour-api · claude · a71c0d941h
Last results agents reported
- typecheckharbour-api · 2 errors in src/charges/replay.ts6m
Claimed so other repos, and Claude, stay off them
harbour-api
Payments v2 · Webhook retries · Rate limits
- Idempotency keys on POST /chargespayments · 70%
- Retry schedule with full jitterwebhooks · 35%
What the process monitor sees
- vitest --watchWatcher · 3 h 12 min · its session ended0%
- pnpm devDev server · 2 h 4 min14%
- tsc --watchWatcher · 48 min3%
Last 15 minutes · read every 5 s
- Memory 78% for 3 min, budget 85%
This repo's sessions: 31% CPU · 3.4 GB
The brain
- webhooksWorker · Retry schedule with full jitter40s
- leadLead · Wiring the shared files1m
- paymentsWorker · Idempotency keys on POST /charges2m
Get Sentinel, free
It’s maintained and updated, so you’ve always got the same tools that I have. Join my network and Sentinel is yours, free, from its first release, with every update after it.
Agents are fast. Keeping up with them is the job now.
With one session you can read the terminal. With four, the question that blocks one of them is buried under the output of the other three, two of them are about to edit the same file, the laptop fan is roaring because nobody stopped a watcher, and the correction you gave yesterday has been forgotten. None of that is a coding problem. It is a coordination problem, and the terminal is the wrong place to solve it.
One local store, and the agents write to it directly.
Sentinel is not a dashboard scraped from log files. One SQLite store on your Mac sits behind everything, and the app, a command line, an MCP server and Claude Code hooks all write through the same layer, which validates and audits every change. The hooks hand each session what it needs at the start and only what changed after that, so an agent does not have to remember to ask. Nothing listens on a port, and nothing leaves the machine.
Inbox
11 asks, 1 blocking a session
- Run the migration that drops charges.legacy_ref?harbour-api · claude · 3f9a1c2eBlocking4m
- Create the read replica and paste its URLharbour-api · claude · 3f9a1c2e2/518m
- Keep v1 webhooks for one more release?harbour-api · claude · a71c0d941h
- Drop the sandbox signing certificateharbour-api · claude · a71c0d942h
- Default prices to en-GB or en-US?ledger-web · claude · 0be4f7a23h
- Claude is waiting for permission to run pnpm buildledger-web · hook · 0be4f7a25h
- Which region should the replica live in?harbour-api · claude · 3f9a1c2edone25m
- Squash the webhook commits before the PR?harbour-api · claude · a71c0d94done3h
- Add the staging signing secret to the secret storeharbour-api · claude · a71c0d94done4/41d
- Drop last month’s export so the importer can be testedledger-web · claude · 0be4f7a2done2d
- Rename the field-notes repo to notes?field-notes · claude · 91d3e5c0dismissed4d
The reporting queries are slowing the primary at month end. A read replica takes them off it. I can do everything else, but creating it needs your account.
Steps
- Open the database console for harbour-prod
- Create a read replica in the same region, at the smallest size
- Wait until it shows Available, about ten minutes
- Copy its connection string
- Paste it below. Claude writes it to .env.local, never to git
Answer
Plan
harbour-api · 3 parts · 15 tasks · 73% done
Brain
harbour-api · 4 agents at work · what they have shared
4 active agents · 1 left
- leadLeadseen 1m
Planning Webhook retries; wires the shared files after each worker
src/server.tspackage.json - paymentsWorkerseen 2m
Idempotency keys on POST /charges
src/charges/**tests/charges/** - webhooksWorkerconflictseen 40s
Retry schedule with full jitter
src/webhooks/**src/charges/events.ts - docsWorkerseen 6m
Changelog and the v2 migration guide
docs/** - Left1
7 entries, pinned first, then newest
- chargeWithKey(key, input): Promise<Charge> is idempotent for 24 hInterface · payments · 12msrc/charges/**
- The test database is shared: never truncate it outside the fixtureWarning · lead · 1htests/**
- Does chargeWithKey store the key before or after the provider call?Question · webhooks → payments · 9m
- Before, in the same transaction. A crash replays safely.Answer · payments → webhooks · 7m
- Retries back off 2ⁿ seconds with full jitter, capped at ten minutesDecision · lead · 25msrc/webhooks/**
- The gateway already sets the rate-limit headers; do not add a second setFinding · limits · 41m
- Rate-limit middleware done; every gate green at 4c1e9abHandoff · limits · 35m
Learnings
What Claude should not get wrong twice. Claude proposes; you accept.
Recall for “webhook retries”: 8 found, ranked as Claude would see them, accepted above proposed, this project above the rest.
- Retries back off with full jitter, never a fixed intervalPattern · harbour-api · retriestext+vector · 0.0322d
- Staging sends webhooks from two addresses; allow bothFact · harbour-api · webhooks, stagingtext · 0.0166d
- Webhook handlers answer 200 at once and queue the workPattern · harbour-api · webhookstext · 0.0161w
- Queue consumers must be idempotent: a message can arrive twicePattern · every projectvector · 0.0163w
- Log the request id, never the request bodyPreference · every project · logging, privacyvector · 0.0152w
- Use the repo’s pnpm, not npx: npx fetches another CLI versionPreference · every project · toolingvector · 0.0141w
- Verify webhook signatures on the raw body, then parse itTrap · harbour-api · webhooks, securitytext+vector · 0.033Proposed9mAcceptRetire
- The test database is shared across worktrees: never truncate itTrap · harbour-api · testsvector · 0.015Proposed1hAcceptRetire
Proposed by Claude
Nothing is told to Claude until you accept it.
Body
Every staging event failed verification. The framework had parsed and re-serialised the body before the handler saw it, so the bytes no longer matched the signature. Read the raw body with req.arrayBuffer(), verify, and only then parse.
Tags
Screens drawn with dummy data. No real customer, client or account appears.
What it does
An inbox for what agents need from you
Questions, approvals, file requests and step-by-step tasks with boxes to tick. Blocking ones come first, with a notification and a Dock badge. Your answer reaches the session on its next turn.
One plan per repo
Parts and tasks with dependencies, drawn as a graph beside a timeline. Agents update their own tasks as they go, so the plan on screen is the plan they are working to.
Learnings you approve
When you correct an agent, it proposes a learning. Nothing is told to future sessions until you accept it. Recall searches by words and by meaning, entirely on your Mac.
A brain for parallel agents
Each agent joins, claims the paths it will edit and posts findings, decisions and interfaces for the others. Overlapping claims are refused or flagged before two agents touch one file.
The machine on a budget
CPU, memory and swap read every five seconds against limits you set, with every process a session started and a verdict on each. Over budget, agents are told, and can be stopped from starting builds.
Ports and the stack
One registry of ports so two repos never fight over one. Each repo’s components, commands and gates are declared, with the last result every agent reported for each gate.
More of the work
Roomi
Pitch the product, not the deck · getroomi.com
A platform for deploying working demos into a pitch room: the demo, the narrative and the materials behind a link per viewer, with analytics and feedback coming back.
Tengen
AI algorithmic trading, built data-first
A trading platform whose edge is connecting cause to effect as it happens: which event moved which price, and why. Underneath, a data foundation where every source, run and figure is recorded and can be traced.
SMD
Social media distribution
One system that creates, distributes and measures social media for every project I run, and judges each post by the leads and the won work it produced, not the likes.
Daedalus
Co-founder and CTO · since 2022
Data engineering, data science and software architecture for B2B financial-services ventures. The client work is private; the approach is everything on this site.
Alfred
A chess coach that runs on your Mac
Paste a game or drop in a screenshot and it shows the best moves in order, explains them in plain words, plays them out on the board, and learns your patterns across games.