Local Code Agent watchtower · macOS

Stop babysitting the terminal.Get the real outcome when your Agent lands.

TodoPilot turns narrow local lifecycle signals from Claude Code, OpenAI Codex CLI, and Cursor into a visible macOS task. A run stays at the top of your screen while it works; when it finishes or needs attention, the result keeps its real state and the cat pilot can bring it back to you.

Local lifecycle integration · no transcript scraping · macOS 14+
LOCAL AGENT WATCHTOWER09:42
Codex is workingImplement retry recovery
TRUSTED TERMINAL EVENTAgent task finishedProvider: Codex · Outcome: landed
Implement retry recovery

One top-level run, one honest state

WORKINGStill runningThe current provider and top-level task remain visible without stealing keyboard focus.
ATTENTIONNeeds youA supported permission or attention signal can bring the run back before it waits unnoticed.
LANDEDFinishedA trustworthy terminal event closes the run, updates Today List, and can trigger the cat flight.
FAILEDDid not succeedFailure, cancellation, and lost-process states stay distinct. TodoPilot never paints them green.

Real product semantics · controlled frontend demo

Start the run, leave the terminal, hear when it matters.

This sound-on Remotion walkthrough reproduces TodoPilot’s local Agent flow: working state, trustworthy completion, status island, and the cat pilot towing the actual in-app task banner.

Local Agent lifecycle · original 16-second demo

Provider-aware, not provider-blind

Claude Code, OpenAI Codex CLI, and Cursor keep their identity.

The tools already expose their own notification or hook surfaces. TodoPilot does not pretend otherwise. It adds one local queue, outcome semantics, top-of-screen continuity, and a reminder you can act on after you step away.

HOOK EVENTSClaude Code

Lifecycle hooks become a local task state.

Claude Code documents Notification, Stop, SubagentStop, and TaskCompleted hook events. TodoPilot listens only through the integration you choose to install.

Anthropic hooks reference
NOTIFY + TUIOpenAI Codex CLI

Completion can leave the terminal without losing context.

Codex documents an external notify command for supported events, including agent-turn-complete, plus configurable TUI notifications.

OpenAI Codex configuration
LOCAL INTEGRATIONCursor

Cursor runs join the same watchtower.

TodoPilot maps supported local Cursor lifecycle signals into the same working, attention, completion, and failure model while preserving the provider badge.

Cursor Agent documentation

Provider names and logos identify the source only. TodoPilot is not affiliated with or endorsed by Anthropic, OpenAI, or Cursor.

Beyond a one-off notification

A reminder layer for the work, not another transient banner.

Native notifications and hooks are useful. TodoPilot is for the moment when you run several tasks, leave the terminal, and still need the result to become the next thing you can see and finish.

CapabilityBasic hook or system alertTodoPilot
Completion sound or bannerYesYes, with optional flight sound
Provider identityVariesVisible on the task and island
Persistent local queueUsually noToday List keeps the result actionable
Working state at top of screenUsually noStatus island while the run is active
Failure stays different from successDepends on configurationRequired outcome semantics
Reminder after you miss the first alertManual setupComplete now or remind again
Upload code or transcriptNot requiredNot required

A narrow local workflow

Three steps from started to handled.

01

Install only the integration you want

TodoPilot uses provider lifecycle hooks or local integration points. It does not need a copy of your repository or full conversation.

02

Let the run stay visible

One top-level run becomes one local working task, with provider identity and an honest lifecycle state.

03

Handle the outcome

When the event is trustworthy, TodoPilot closes or updates the task and lets you complete it now or bring it back later.

Local by default

Watch lifecycle state without watching your code.

A completion reminder does not require broad surveillance. TodoPilot’s Agent path is intentionally narrower than transcript parsing or terminal recording.

01

No source-code upload

The local Agent reminder path does not need repository files to show lifecycle state.

02

No transcript scraping

Full conversations, reasoning traces, tool calls, and terminal output are outside the integration boundary.

03

No false success

Failed, cancelled, and lost processes keep distinct visible outcomes.

04

No account for local monitoring

The local lifecycle watchtower and Today List remain part of Free Mode.

Questions people ask

Code Agent notification FAQ

Can Claude Code notify me when it finishes?

Yes. Claude Code exposes lifecycle hooks. TodoPilot uses narrow local lifecycle signals to keep a top-level run visible and bring the result into one local reminder workflow.

Does TodoPilot upload my code or terminal transcript?

No. The Code Agent integration is designed around narrow local lifecycle events and does not require uploading source files, full conversations, reasoning traces, or terminal output.

What happens when an Agent fails or is cancelled?

TodoPilot preserves the terminal outcome. Failed, cancelled, and lost runs are not presented as successful completions.

Is TodoPilot only for Claude Code?

No. The current product story covers local lifecycle reminders for Claude Code, OpenAI Codex CLI, and Cursor, while keeping their provider identities visible.

Why use TodoPilot if my Agent already has notifications?

Use the built-in notification if that is enough. TodoPilot adds a persistent Today List, a working-state island, consistent outcome semantics, and a follow-up reminder when a transient notification is easy to miss.

Run the Agent. Leave the terminal. Let the cat report back.

TodoPilot Free Mode includes the local watchtower, Today List, and local reminders without an account.

Download TodoPilotSee the full Mac reminder app