dora harness
Grill a routine, freeze a Fixed step, then boot it. Dora prints Runtime watch.
dora harness is the front desk for an internal teammate. The Runtime ticks the Loop. Today that Runtime is Hermes. A routine is the saved folder at ~/.dora/harness/<slug>/. Dora does not install Hermes and does not run the MCP login.
Before you start
Install Hermes Agent. Reload the shell so hermes is on PATH. Bring your own LLM credits. Paste a Scalekit Agent Gateway MCP URL when the grill asks.
Missing Hermes prints official install steps and stops. Dora does not fake a test run.
Create a routine
Type this in the agent:
/ask-dora turn this loop-able check into a routine
The same door from the CLI is dora harness new. Bare new starts ask-dora, which loads grilling-for-routine.
dora harness new
That grill loads writing-for-routine for the night prompt. Collect skills to run, skills to refer to, and the MCP URL. Then print or run one live pass.
Write the folder only after that pass, or after you accept the printed command:
dora harness new --accept --yes --slug <slug> --prompt-file <prompt.md> --mcp-url <url>
Most jobs need a Scalekit Agent Gateway MCP URL. Pass --mcp-url none when the job is a Skill script plus local creds only. After save, put secrets in ~/.dora/harness/<slug>/.env. Dora does not copy .env from the original skill.
The printed one-pass command looks like this:
hermes chat --toolsets mcp-scalekit --oneshot --run-budget 600 -q "…"
--run-budget is the one-pass time limit (default 10 minutes). Skills to run are passed as --skills. Dora refuses to overwrite an existing slug.
Dora appends a pocket-agent footer to the prompt Hermes runs. Human-visible messages end with Sent by pocket agent <slug>. prompt.md does not contain that line.
A Tick has no last chat. The grill tells the night prompt to search the destination before a create, or to use a tick handoff: read handoff.md at the start, overwrite it at the end. Missing file means first Tick. Dora does not write that file.
Fixed step
A Fixed step is optional. Loop-able stays first. A small loop-able job can ship with prompt.md only.
After one good one-pass, the grill may freeze a deterministic step into a Skill. The grill drafts. You accept. A Tick never writes files. The one-pass does not author files.
prompt.md names that Skill. It keeps the steps that need a new decision. It does not repeat the frozen steps.
A Skill script is optional. If one exists, it lives inside that Skill. The routine has no top-level scripts directory. Do not use Hermes --script or --no-agent. Those flags cannot call Scalekit MCP tools.
Boot the night job
dora harness boot <slug>
Boot tells Hermes to run this routine on a schedule. Then Dora exits. You can close that terminal.
Hermes keeps a background service on this Mac. That service starts the job again when the interval is due. You do not leave a chat window open.
After boot, log in once in a real terminal. Dora does not open the browser:
hermes mcp login scalekit
If a later run cannot reach Scalekit, run that login again. If the Scalekit account itself is dead, open the provider link again.
Runtime watch
After boot, list, pause, and resume, Dora prints Runtime watch commands. Today those are Hermes commands. Folder-only new and open do not print them. On token or MCP fail, login is the required next command. Dora still prints the watch list.
hermes cron list
hermes cron runs
hermes logs
hermes dashboard
Pause, resume, list, open
dora harness list
dora harness pause <slug>
dora harness resume <slug>
dora harness open <slug>
pause skips later runs of that routine only. Other routines keep going. A run that already started may finish. resume starts later runs again. list shows each slug as running, paused, or none. open opens the routine folder.
Close the laptop and the Mac sleeps. Jobs do not run while the Mac sleeps. That is not pause. Due jobs can fire on wake if the job is not paused.
Defaults
| Field | Default |
|---|---|
| How often it runs | every 1 hour |
| One-pass time limit | 10 minutes |
| Night stop if the job sits idle | 10 minutes (Hermes default) |
You can change the interval and the one-pass limit per routine. A busy night job can keep going past 10 minutes if it is still working.
Common mistakes
- Treating laptop close as
dora harness pause. Sleep stops the clock. It does not pause the job. - Expecting Dora to finish
hermes mcp login scalekit. You run that in a real terminal. - Re-running
--accepton the same slug. Dora refuses to overwrite the folder. - Expecting a Dora logs verb. Use the Runtime watch commands Dora prints.
- Using Hermes
--scriptas the freeze path. A Skill script is local work inside the Skill. - Putting a
scripts/folder next toprompt.md. - Expecting a chat app in the harness. Connectors live on a use case, not in this group.