Self-Starter

A plugin for Codex and Claude Code

Give Codex eyes.

Tell Codex what to keep an eye on. A small probe watches it on your machine without spending tokens, and when something changes, Codex comes back to your conversation with what it found and what it did.

  • CI fails on main. Codex finds the cause and proposes a fix.
  • A training run finishes. Codex compares it with the last one.
  • An error shows up in your app log. Codex traces it to the code.
  • Your PR gets review comments. Codex addresses them.
codex plugin marketplace add hyprh/self-starter
codex plugin add self-starter@self-starter
claude plugin marketplace add hyprh/self-starter
claude plugin install self-starter@self-starter

macOS or Linux, Node.js 20 or newer, and the Codex app or CLI. Restart the Codex app; the first start sets up the rest.

macOS or Linux, Node.js 20 or newer, and Claude Code 2.1.224 or newer. Start a new session; the first start sets up the rest.

You · Jul 13

Watch NVDA for me. If it moves sharply, find out why and tell me. Sell when it reaches $235.

NVDA daily candles, Jul 13 to Oct 9, 2026 (Yahoo Finance), checked every 5 minutes while the market is open. The conversation is an example; selling needs a trading tool your agent can use, such as your broker's API.
Codex · Aug 27, 9:38 am

NVDA opened 6.3% higher, at $222.86, after yesterday's earnings: revenue of $96.2 billion, up 106% from a year ago and above what analysts expected, and an outlook of $108 billion for this quarter.

Codex · Oct 2, 9:36 am

NVDA opened at $236.06, above your $235 line, so I sold your shares at market. I'll keep watching it for big moves.

See it in action

Keep working. The result finds you.

A Futu watch runs in the background. When a move stands out, Codex investigates it and Self-Starter brings the result to your desktop.

An illustrated Codex and Futu watch: ask once, keep working while a local probe waits, then receive a desktop notification when the AMD investigation is ready.

A 26-second Codex + Futu example. Edited replay; the interface and desktop notification are illustrated, and quotes are historical.

Download GIF

How it works

  1. Ask in your conversation

    “Tell me when the training run finishes.” “If the dev server stops answering, restart it.” Plain words, in any Codex threadClaude Code session.

  2. A probe keeps watch

    Codex writes a few lines of TypeScript that read a file, run a command or call an API, tries them once and starts them. They run on your machine on a schedule, with no model and no tokens.

  3. Codex reacts and reports

    When it happens, the task comes back to the same conversation. If Codex is closed, Self-Starter opens the thread in the background, so the answer is waiting for you. A notification or an email tells you.

    When it happens, the task comes back to the same session, as soon as Claude is done with what it is doing. If no terminal has the session open, Self-Starter resumes it in the background, so the answer is waiting for you. A notification or an email tells you.

Seven real runs

Recorded on October 12 and 13to 14, 2026. Each line is what the probe reported, unedited; times are UTC.

A training run finishes

local file

“When the run in runs/exp42 finishes, compare it with exp41 and tell me which to keep.”

running: epoch 1/3 loss 0.912 val_loss 0.874

finished: Finished training in 3h12m best val_loss 0.412 (epoch 3) · fired

Then Codex compares the two runs and says which one to keep.

An error shows up in the app log

local file

“When a new error shows up in logs/app.log, find the cause and propose a fix.”

0 error(s) in logs/app.log

ERROR POST /api/orders 500 TypeError: Cannot read properties of undefined (reading 'id') · fired

Then Codex reads the stack trace and the code it points to, and proposes a fix.

The dev server stops answering

local service

“If the dev server on port 3000 is down for two minutes, find out why and restart it.”

http://127.0.0.1:3000/health answered 200 in 8 ms

http://127.0.0.1:3000/health did not answer: Connection refused (os error 111) · fired after 20 s down

Then Codex reads the server log, fixes what it can and starts it again (this trigger gives Codex full access).

A new invoice lands in a folder

local folder

“When a new invoice PDF lands in invoices/, add its date, vendor and amount to expenses.csv.”

2 invoice(s) in invoices

new file: 2026-10-acme-cloud.pdf (184 KB) · fired

Then Codex reads the PDF and adds the row.

A dependency ships a new version

npm registry

“When TypeScript's nightly build is out, type-check this project with it and tell me what would break.”

typescript@next: 7.1.0-dev.20261012.1

typescript 7.1.0-dev.20261013.1 is out · fired

Then Codex installs it in a scratch copy, runs tsc and lists what would break.

CodexClaude Code comes up on Hacker News

Hacker News search

“When Codex comes up on Hacker News, sum up what people say about it and list any bug reports.”

“When Claude Code comes up on Hacker News, sum up what people say about it and list any bug reports.”

35 mention(s) of Claude Code on Hacker News in the last 24 h, in 22 thread(s)

new thread on “Show HN: Evaluate and improve your agent steering” · fired

72 mention(s) of Codex on Hacker News in the last 24 h, in 19 thread(s)

comment on “Where is all the new, good software?” · fired

Then Codex reads the thread and sums up what people like, what they don't, and any bug reports, with links.

Analysts change their view on a stock

Futu news search

“Tell me when analysts change their rating or price target on Tencent or NVIDIA, and what the community thinks.”

1 item(s) from the last 48 h on Futu (Tencent 1, NVDA 0)

“Morgan Stanley: Maintains "Overweight" rating on Tencent (00700) with a target price of HKD 550…”

counts as seen; the next report fires

Then Codex reads the new report with Futu's skills (stock digest, community sentiment) and sums up what changed. A ready-made recipe: futu-news.

More to try

One sentence each. A probe needs only what it reads: gh for GitHub, nvidia-smi for a GPU.

  • “Whenever CI fails on main, find the cause and propose a fix.”gh run list
  • “When my PR gets review comments, address them and push.”gh pr view
  • “When tonight's benchmark is 5% slower, find the commit.”results file
  • “If the disk gets 90% full, find what grew and what can go.”df
  • “When the GPU is idle for 10 min, start the next experiment.”nvidia-smi
  • “When a speculative decoding paper hits arXiv, sum it up.”arXiv API

Good to know

  • Probes run as you, like a script you run. probe.access: sandbox limits one to the web hosts it lists, with no files and no commands.
  • Codex asks before starting a trigger that acts for you. What a probe reports reaches Codex as untrusted data, and a turn handling a fire cannot create or change triggers.
  • Background runs use Codex's workspace-write sandbox unless a trigger asks for full access, and Codex runs at most 20 times a day by default.
  • Background runs get a permission mode from the trigger: by default Claude may edit files in its folder, and what would need your approval, such as most commands, is declined. A trigger can ask for full access. Claude runs at most 20 times a day by default.
  • A fire never interrupts a turn. If you stopped Claude with Esc, which Claude Code does not report, the fire comes in once the session has been quiet for 15 minutes.
  • Conditions are checked in code, so judgment calls such as “news about an acquisition” are not supported yet. Windows is not supported.
  • Tested end to end on Linux and macOS with the Codex CLI and app server. How the Codex desktop app shows these threads still needs a check on a Mac.
  • Tested end to end on Linux and macOS with the Claude Code CLI in a terminal. The desktop app and the editor extensions are not checked yet.