Skip to content
doraval
Esc
navigateopen⌘Jpreview
On this page

Run a pocket agent

Grill a small loop, test one pass, then boot 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 Tick.

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 tick 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 Tick 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 tick handoff: read handoff.md at the start, overwrite it at the end. Missing file means first Tick. 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. A Slack post then ends with Sent by pocket agent slack-pr-approve.

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. Boot and watch

dora harness boot slack-pr-approve
hermes mcp login scalekit

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 one tick and fire one pass now.

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.
  • Booting before login.
  • Setting a 1 minute interval during the grill.
  • Expecting a Dora logs verb. Use the Runtime watch commands.
  • Putting secrets in prompt.md.

Next

dora harness

Was this page helpful?