
One macOS app for Claude Code, Codex, and every agent runtime you use — scheduled runs, global hotkey launcher, per-run git worktrees, one review board.
Install Cetus
Installs but activates nothing: package.json has no `dsh.bundle` declaration, so `dsh plugin` warns and loads no config layer.
This repository is not a DSH plugin
package.json declares no dsh.bundle. In the official docs' own words, a package like this “still installs, but only as a plain dependency: dsh plugin prints a warning and activates no layer”. The install looks like it worked and nothing happens.What it actually is: One macOS app for Claude Code, Codex, and every agent runtime you use — scheduled runs, global hotkey launcher, per-run git worktrees, one review board. If that is what you came for, use it directly from the repository — it is just not something dsh plugin add can activate.
Before you run it
- A plugin runs with your permissions once loaded: it can read your files, use your credentials and reach the network. Tool approvals do not sandbox it.
- Installing from git resolves a moving branch. Pin a commit —
github:drewnekota/cetus#<commit-sha>— so the code you reviewed is the code you install.
Prerequisites
- API key
- Required — see the repository README for which provider.
- Network access
- Required at runtime.
- Language
- TypeScript
Install check
Every field the verdict was derived from, so you can re-derive it yourself
| Field checked | Result | Weight | What the spec says about it |
|---|---|---|---|
| lifecycleScripts | pass | info | no install-time scripts |
| dsh.bundle | missing | fatal | package.json has no `dsh.bundle` key |
- Verdict reason
- no dsh.bundle declaration — installs as a plain dependency only
- package.json read
- package.json
- Rules applied from
- docs/user/develop/basic/publish.md
- Checked at
- 2026-08-15
From the README
Excerpt as published by the author, plain text, unedited
Hold **both ⌘ keys** to summon your agent over any app. Cetus brings along the current screenshot, frontmost app, browser URL, and selected text as removable context chips, so you can ask in place instead of stopping to explain what you are looking at. Turn any prompt into a one-off or recurring job (`at` / `every` / `cron` / `daily`). Each run keeps its chosen runtime and model settings, works in a fresh background conversation, and leaves the result ready for you to review. Double-tap **right ⌥** on any conversation — a team channel, an email, a support console — and Cetus reads what is on screen, then streams a draft into an editable panel. It follows the language and register of the thread and answers what was actually asked, so a message with three open questions does not come back as
Topics
GitHub topics on this repository
More in Desktop App Web Native
Ranked by similarity inside the cluster, not alphabetically