Skip to content
doraval
Esc
↑↓navigate↵open⌘Jpreview
On this page

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.

  1. Skills to run: none (MCP tools are enough).
  2. Skills to refer to: none.
  3. 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 logs for one routine. Use dora harness logs slack-pr-approve.
  • Putting secrets in prompt.md.

Next

Apply and watch

Was this page helpful?