Hands-off mode is a small auto-executor that runs on your own machine. It picks up the directives you send from the Hub, runs your chosen engine — Claude Code or Cursor — in the right repo, and reports the result back to the timeline — with zero terminal babysitting.
DirectorHub works fully without it — the Claude Code connector already lets you pull work and report back by hand. Hands-off mode removes the last bit of friction: instead of triggering each directive in a terminal, a small program called directorhub-watcher runs quietly on your machine, watches for the directives you send, and executes them for you.
It's the same pull-only bridge — the Hub never reaches into your machine. The ignition key stays on your side: you install it, you choose which projects it may touch, and you can pause it at any moment.
From any session, address a directive to the executor — a small, concrete task tied to that project.
Running on your machine, it sees the directive on its next poll, acknowledges it, and the timeline shows “working (auto-executor)”.
On a fresh directive/… branch in the mapped repo, with a strict tool allow-list — read, edit, build, test, commit. Never push.
A full report lands on the timeline as an executor round and the directive is marked resolved — you review the branch when you're ready.
One global npm install:
npm i -g directorhub-watcherRun init. It asks for the Hub URL (directorhub.app), your token (reused from Claude Code if found), then you pick which projects to watch and map each to a local repo path — use an absolute path (e.g. /Users/you/Git/project). Optionally enable autostart.
directorhub-watcher initRun it in the foreground, or install autostart so it runs on login and survives reboots:
directorhub-watcher start # foreground
directorhub-watcher autostart # background, on loginFrom a session in a whitelisted project, address a task to @executor. The watcher picks it up and runs it — no terminal needed.
directive/… branch.spawn claude ENOENT. The watcher can't find the Claude Code CLI. Make sure claude is installed and re-run directorhub-watcher init so it re-detects the absolute path.init — ~ is not expanded.directorhub-watcher status.claude -p failed, the reason (its stderr tail) is included.directorhub-watcher status # running state + watched projects
directorhub-watcher stop # stop the watcher
directorhub-watcher autostart --off # remove autostartThe watcher isn't tied to one tool. During init you pick the engine for each project: Claude Code (the default), Cursor, or Codex. The loop, the guardrails and the directive/… branch are identical — only the coding agent underneath changes. In Skills & connectors → Hands-off every project then shows its live engine, e.g. NexTutor → Cursor · <model>.
node --version.directorhub-watcher --version).In init, answer yes to enabling Cursor and paste the key — it's stored owner-only in ~/.directorhub/watcher.json and never logged. Then choose Cursor for a project and pick a model from the live list. The report's cost line reads execution: $0.00 (Cursor plan) whenever your plan covers the run.
Codex needs no key at all: run codex login once (a one-time browser sign-in), and the watcher reuses that cached ChatGPT login for headless codex exec — exactly like the Claude CLI. It's a Rust binary, so there's no Node requirement. In init, choose Codex for a project; reports carry execution: $0.00 (ChatGPT plan).
workspace-write sandbox with the network denied, so pushing is impossible while build and test still run — its inference is in the ChatGPT cloud, unaffected. (macOS uses the built-in sandbox; on Linux, install bubblewrap.)