# Ivx Gastown Bridge

> How Hermes talks to Gas Town from outside the Mayor session — listing beads, slinging work to rigs, sending mail, escalating, all via the `gt` MCP server (Ophis Cobra→MCP bridge). Use whenever the user asks Hermes to dispatch agent work, check what the swarm is doing, or coordinate across rigs.

- Skill: `intelli-verse-x/ivx-gastown-bridge` (Agent Skill)
- Install (CLI): `npx skillmds add intelli-verse-x/ivx-gastown-bridge`
- Raw SKILL.md: https://api.skillmd.com/api/skills/intelli-verse-x/ivx-gastown-bridge/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: intelli-verse-x (https://skillmd.com/u/intelli-verse-x)
- Updated: 2026-08-19
- Page: https://skillmd.com/skills/intelli-verse-x/ivx-gastown-bridge

---


# Hermes → Gas Town bridge

## The mental model

You are **not** the Mayor. The Mayor is a separate Claude-Code session
that lives inside Gas Town and coordinates rigs. You are the
**user-facing entry point** to the swarm — humans talk to you (CLI,
Discord, Telegram); you translate intent into beads + slings.

Hermes talks to Gas Town through the `gt` MCP server. Every read +
coordination subcommand of `gt` is exposed as an MCP tool.

## Common tools

| Tool | What it does |
|---|---|
| `mcp_gt_status` | Town-wide status: which rigs are awake, which polecats are running. |
| `mcp_gt_rig_list` | All registered rigs. |
| `mcp_gt_bd_ready` | Beads ready to claim (no blockers). |
| `mcp_gt_bd_show <id>` | Full bead detail (description, deps, metadata). |
| `mcp_gt_bd_create` | Create a bead. **You do this for every nontrivial user ask.** |
| `mcp_gt_sling <bead> <rig>` | Dispatch a polecat to work the bead in that rig. |
| `mcp_gt_mail_inbox` | Your mail. |
| `mcp_gt_mail_send <addr> -s <subj> --bead <id>` | Send mail. Always pass `--bead` so state stays in the bead. |
| `mcp_gt_nudge <target> --bead <id>` | Ping an agent's session. `--bead` carries the work pointer; the body is just attention. |
| `mcp_gt_escalate <bead> <reason>` | Same as POSTing to n8n's webhook, but goes through the `gt` CLI's logging path. |

## The default playbook

Whenever the user asks you for nontrivial work:

1. **File the bead.**
   ```
   mcp_gt_bd_create(
     title="<short imperative>",
     type="task",
     priority=2,
     metadata={"requested_by": "<user>", "channel": "<discord-channel-or-cli>"}
   )
   ```

2. **Pick a rig** if a specialist should do it. If you can do it yourself
   in <3 trivial tool calls, do it. Otherwise:
   ```
   mcp_gt_sling(bead_id="<id>", rig="<rig>")
   ```

3. **Stay out of the way.** Don't poll the polecat. Tell the user
   "filed as <id>, slung to <rig>, you'll get a Discord ping when it's
   merged."

4. **On callback** (Refinery posts a result to the bead): summarize for
   the user in one paragraph, link to the bead + the PR.

## Bead metadata expectations

The `bd close` policy gate (live since beads#1) is **fail-closed**.
Certain bead labels require certain metadata before close:

| Label | Required metadata |
|---|---|
| `backlinks-2026-05` | `playbook_path` OR `pr_url` |
| `cert-2026-05` (with repo) | `pr_url` OR `no_repo_reason` |
| `rollout-2026-05` (W1+) | `pr_url`, `endpoint`, or `playbook_path` |

If you close a bead and it bounces, that's the policy gate. Fix the
metadata and try again — don't `--force`.

## When to escalate to humans

Escalate (post to n8n's gt-escalate webhook, which routes to Discord) when:

- The polecat you slung to has been silent for >30 min on a P0/P1.
- You need approval before doing something destructive (force-push,
  rotating a production secret, deleting a deployment).
- A pipeline failed and you don't have enough context to retry.
- The user asked a question that requires a credential or info only the
  human has (e.g., "buy the Leantime MCP plugin").

Use `mcp_gt_escalate` rather than constructing the JSON yourself — it
sets the right severity/role/bead pointers.

## What NOT to do

- **Don't do specialist work yourself.** If a seo / geo / qa specialist
  exists, sling to them. You're the conversational layer, not the doer.
- **Don't carry state in mail or nudges.** The bead is the truth.
  `gt mail send --bead <id>` and `gt nudge --bead <id>` are the only
  correct shapes.
- **Don't close beads without metadata.** The gate will bounce you and
  the user will see a confusing error.

