---
name: Evotown Dispatch Complete
slug: evotown-dispatch-complete
category: Automation
description: Evotown Dispatch Complete reports an Evotown job as succeeded or failed after the agent finishes the real work. Use it when you need to send the job_id from the dispatch message back to the control plane.
github: "https://github.com/EXboys/evotown/tree/main/integrations/openclaw/evotown/skills/evotown-dispatch-complete"
language: Python
stars: 663
forks: 63
install: "npx degit https://github.com/EXboys/evotown/tree/main/integrations/openclaw/evotown/skills/evotown-dispatch-complete ~/.claude/skills/evotown-dispatch-complete"
installs_to: ~/.claude/skills/evotown-dispatch-complete
source_path: integrations/openclaw/evotown/skills/evotown-dispatch-complete/SKILL.md
collection_size: 8
category_size: 1523
collection_url: "https://dirskills.com/collections/EXboys/evotown"
added: 2026-08-24T05:17:06.395Z
last_synced: 2026-08-24T05:17:06.395Z
canonical_url: "https://dirskills.com/skills/evotown-dispatch-complete"
---

# Evotown Dispatch Complete

Evotown Dispatch Complete reports an Evotown job as succeeded or failed after the agent finishes the real work. Use it when you need to send the job_id from the dispatch message back to the control plane.

**Install:**

```bash
npx degit https://github.com/EXboys/evotown/tree/main/integrations/openclaw/evotown/skills/evotown-dispatch-complete ~/.claude/skills/evotown-dispatch-complete
```

## README

# Evotown dispatch complete

Evotown dispatch messages include a footer like `[evotown] job_id=job_…`. **Do not** treat the OpenClaw hook HTTP response as task completion.

When the user-visible work is done:

```bash
evotown-agent-setup.py complete \
  --job-id <job_id from the message> \
  --status succeeded \
  --summary "One-line outcome for the control plane"
```

On failure:

```bash
evotown-agent-setup.py complete --job-id <job_id> --status failed --exit-code 1 --summary "reason"
```

Requires `EVOTOWN_ENGINE_INGEST_TOKEN` (`evi_…`) in `~/.config/evotown/evotown.agent.env`.

Alternatively POST `run.completed` to `{EVOTOWN_URL}/api/v1/events` with the same `run_id` as in the message footer.
