Run a pocket agent
Grill a small loop, test one pass, then apply it. The folder is a Routine.
A pocket agent is a small unattended loop: one job, one machine, one user. The saved folder is still a Routine at ~/.dora/harness/<slug>/.
This page shows one use case all the way through. Install the four skills and Hermes first.
npx skills add saif-shines/doraval --yes
Worked example: Slack mention, then approve the PR
You want this: poll a Slack channel. If a message mentions you, says approve, and has a PR link, approve that PR. Do not merge.
1. Start
/ask-dora I have a use case where I want to run a routine that looks at a slack channel and approve a pr on my behalf
Empty /ask-dora or “what can you help with” prints the map. A real idea loads grilling-for-routine.
2. Loop-able and pocket
The grill asks if Slack is a poll or a webhook, and if you must confirm every PR.
You say: someone mentions you, writes approve, and pastes the PR link. The job approves that PR. You want a short loop later.
That is loop-able. Same prompt on a timer. No human on that run.
That is pocket. One job. One machine. One user.
Do not set 1 minute yet. Default is 1 hour. Change it after a good run.
3. Lock the facts
You give:
- Channel:
#pr-review - Mention:
@you - Trigger:
@you+approve+ a PR link - Action: approve only. No merge.
4. Gate
The grill still needs three answers.
- Skills to run:
none(MCP tools are enough). - Skills to refer to:
none. - Scalekit Agent Gateway MCP URL: paste yours. Do not invent one.
Skills to run: none
Skills to refer to: none
MCP URL: https://<your-env>.scalekit.cloud/mcp
Slug: slack-pr-approve
5. Night prompt
The grill writes prompt.md. It looks like this:
1. Poll Slack channel #pr-review for new messages.
Done-when: new items since the last run are listed, or the list is empty.
2. Keep a message only if it mentions @you, contains the word approve, and has a pull request URL.
Done-when: each new message is kept or skipped with a reason.
3. For each kept message, approve that pull request. Do not merge.
Done-when: each kept PR is approved or skipped with a reason.
A Run has no last chat. Prefer a search before a create. GitHub approve is already safe. A calendar create is not. Search first, or use a run handoff: read handoff.md at the start, overwrite it at the end. Missing file means first Run. Dora does not write that file.
When Hermes runs that prompt, Dora appends:
Human-visible messages end with: Sent by pocket agent slack-pr-approve
Do not put that line in prompt.md. Apply also installs a Hermes hook. That hook stamps Sent by pocket agent slack-pr-approve on the GitHub review and Slack post if the model skips it.
6. One pass
The grill prints:
dora harness new --accept --yes --slug slack-pr-approve --prompt-file <prompt.md> --mcp-url https://<your-env>.scalekit.cloud/mcp
Run that in a real terminal. Hermes is quiet (-q). The terminal can look empty. That is the first test. It is not the hourly loop.
If it sits with no output, the usual cause is a missing login. Ctrl+C, then:
hermes mcp login scalekit
Dora does not run that login. Then run the one-pass again.
Folder after accept: ~/.dora/harness/slack-pr-approve/.
7. Apply and watch
dora harness apply slack-pr-approve
hermes mcp login scalekit
dora harness boot slack-pr-approve is the same command. Full apply, login, watch, and pause vs sleep: Apply and watch.
Dora prints Runtime watch commands:
hermes cron list
hermes cron runs
hermes logs
hermes dashboard
8. Check it
Post in #pr-review: @you approve and the PR link.
To avoid waiting an hour, edit interval in ~/.dora/harness/slack-pr-approve/routine.yml to 1m after a good run. Or say run once and fire one pass now.
New routines store medium in that same file (reasoning_effort). Apply pins it on the job. Change the field and apply again to keep a different level. A folder that already stores xhigh keeps xhigh.
The same file can pin model and provider. Run dora harness models to see what this machine can use. Edit those fields, then apply again. You do not re-run the grill.
Laptop close is sleep. That is not pause.
Another shape: Skill script, no Gateway
Some jobs use a Skill script and an API key. They do not use Agent Gateway.
Pass --mcp-url none. After save, open ~/.dora/harness/<slug>/.env in an editor and put the key there. Do not paste the key into chat.
Dora does not copy .env from the original skill.
Common mistakes
- Treating a quiet one-pass as a hang. Wait, or Ctrl+C and run
hermes mcp login scalekit. - Applying before login.
- Setting a 1 minute interval during the grill.
- Using
hermes logsfor one routine. Usedora harness logs slack-pr-approve. - Putting secrets in
prompt.md.