# Send Failover Gateway Pub to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "failover-gateway-pub",
    "name": "Failover Gateway Pub",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/ember-claw/failover-gateway-pub",
    "canonicalUrl": "https://clawhub.ai/ember-claw/failover-gateway-pub",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/failover-gateway-pub",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=failover-gateway-pub",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "scripts/health-monitor.sh"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "failover-gateway-pub",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-29T21:30:35.276Z",
      "expiresAt": "2026-05-06T21:30:35.276Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=failover-gateway-pub",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=failover-gateway-pub",
        "contentDisposition": "attachment; filename=\"failover-gateway-pub-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "failover-gateway-pub"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/failover-gateway-pub"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/failover-gateway-pub",
    "downloadUrl": "https://openagent3.xyz/downloads/failover-gateway-pub",
    "agentUrl": "https://openagent3.xyz/skills/failover-gateway-pub/agent",
    "manifestUrl": "https://openagent3.xyz/skills/failover-gateway-pub/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/failover-gateway-pub/agent.md"
  }
}
```
## Documentation

### Failover Gateway for OpenClaw

Deploy a standby OpenClaw gateway that automatically takes over when your primary goes down. Active-passive design with auto-promotion and auto-demotion.

### What You Get

~30 second failover — health monitor detects primary down, promotes standby
Auto-recovery — when primary comes back, standby demotes itself
Zero split-brain — primary and standby use different channels (no duplicate messages)
Git-synced workspace — standby pulls latest workspace on promotion
$12/month — runs on a minimal VPS

### Architecture

PRIMARY (your main VPS)          STANDBY (failover VPS)
├─ Full stack (all channels)     ├─ Single channel only (e.g., Discord DM)
├─ All cron jobs                 ├─ No crons (recovery mode)
├─ Gateway active ✅              ├─ Gateway stopped 💤
└─ Pushes workspace to git       └─ Health monitor watches primary
                                      │
                                      ├─ Primary healthy → sleep
                                      ├─ Primary down 30s → PROMOTE
                                      └─ Primary back → DEMOTE

The key insight: split your channels between primary and standby. Don't share credentials — give each node exclusive ownership of different channels. This eliminates split-brain entirely.

### Channel Split Examples

SetupPrimaryStandbyRC + DiscordRocket.Chat (full)Discord DM onlyDiscord + TelegramDiscord (full)Telegram DM onlySlack + DiscordSlack (full)Discord DM only

Your primary handles everything. The standby is minimal recovery — just enough to stay reachable.

### Prerequisites

Primary OpenClaw instance running on a VPS
A second VPS for the standby ($6-12/mo, any provider)
Tailscale mesh network (or any VPN/private network)
Git repository for workspace sync (GitHub, GitLab, etc.)
A second messaging channel for the standby (different from primary)

### Phase 1: Provision the Standby VPS

Any cheap VPS works. Recommended: 2GB RAM, Ubuntu 24.04.

# Harden the box
ufw allow 22/tcp
ufw enable
apt install -y fail2ban unattended-upgrades

# Create openclaw user
adduser openclaw --disabled-password
usermod -aG sudo openclaw
# Copy your SSH key to openclaw user

# Install Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up --hostname=your-failover-name

### Phase 2: Install OpenClaw

# As openclaw user
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
source ~/.bashrc
nvm install --lts
npm install -g openclaw

# Clone workspace
git clone <your-workspace-repo> ~/.openclaw/workspace

### Phase 3: Failover Config

Create a minimal OpenClaw config on the standby. Only enable the standby channel:

{
  "agents": {
    "defaults": {
      "model": {
        "primary": "anthropic/claude-opus-4-6",
        "fallbacks": ["anthropic/claude-sonnet-4-5"]
      },
      "workspace": "/home/openclaw/.openclaw/workspace"
    },
    "list": [{ "id": "main", "default": true }]
  },
  "channels": {
    "discord": {
      "enabled": true,
      "token": "<YOUR_DISCORD_BOT_TOKEN>",
      "dm": {
        "policy": "allowlist",
        "allowFrom": ["<YOUR_DISCORD_USER_ID>"]
      }
    }
  },
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "tailnet"
  }
}

Important: Disable this channel on your primary to avoid conflicts.

Test it works: openclaw gateway run — verify the bot connects and responds, then stop it.

### Phase 4: Deploy Health Monitor

Copy the included scripts/health-monitor.sh to the standby:

sudo cp health-monitor.sh /usr/local/bin/openclaw-health-monitor.sh
sudo chmod +x /usr/local/bin/openclaw-health-monitor.sh

Edit the variables at the top:

PRIMARY_IP — your primary's Tailscale IP
PRIMARY_PORT — your primary's gateway port (default: 18789)
SECRETS_HOST — (optional) host to rsync secrets from on promotion

Create the systemd services:

/etc/systemd/system/openclaw-health-monitor.service

[Unit]
Description=OpenClaw Failover Health Monitor
After=network-online.target tailscaled.service
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/openclaw-health-monitor.sh
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

/etc/systemd/system/openclaw.service

[Unit]
Description=OpenClaw Gateway (Failover)
After=network-online.target tailscaled.service
Wants=network-online.target

[Service]
Type=simple
User=openclaw
Group=openclaw
WorkingDirectory=/home/openclaw/.openclaw/workspace
ExecStart=/usr/bin/openclaw gateway run
Restart=on-failure
RestartSec=5
Environment=HOME=/home/openclaw
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

Enable the monitor (but NOT the gateway — the monitor starts it on promotion):

sudo systemctl daemon-reload
sudo systemctl enable openclaw-health-monitor
sudo systemctl start openclaw-health-monitor
# Do NOT enable openclaw.service — the monitor controls it

### Phase 5: Disable Standby Channel on Primary

This is critical. Remove or disable the standby's channel from your primary config:

{
  "channels": {
    "discord": { "enabled": false }
  }
}

Each node owns its channels exclusively. No sharing, no conflicts.

### Phase 6: Test

# On primary — simulate failure
sudo systemctl stop openclaw-gateway  # or kill the process

# Watch the standby logs
journalctl -u openclaw-health-monitor -f

# Expected: 3 failed checks → PROMOTE → gateway starts → standby channel live

# On primary — recover
sudo systemctl start openclaw-gateway

# Expected: standby detects primary → DEMOTE → gateway stops

### Failover Timeline

TimeEvent0sPrimary goes down10sFirst health check fails20sSecond check fails30sThird check fails → PROMOTE35sGit pull, secrets sync40sGateway starting45sStandby channel active~60sYou're reachable again

### Edge Cases

ScenarioResultPrimary diesStandby promotes in ~30-60sPrimary + standby dieYou're offline (add a third node?)Network partitionStandby may promote while primary is still running — but since they use different channels, no conflictsStandby rebootsHealth monitor auto-restarts (systemd), resumes watchingPrimary flapsPromote/demote cycles — health monitor handles it, but consider increasing FAIL_THRESHOLD

### Failback

Recovery is automatic. When the primary comes back:

Health monitor detects primary healthy
Stops the standby gateway
Primary resumes all channels
Standby returns to watching

No manual intervention needed.

### Cost

ComponentCostVPS (2GB RAM)$6-12/moTailscaleFree (personal)Git repoFreeTotal$6-12/mo

### Tips

Test monthly. Kill your primary, verify failover works. Trust but verify.
Keep the standby minimal. No crons, no extra channels. It's recovery mode.
Git push frequently. The standby's workspace is only as fresh as your last push.
Use Tailscale. It makes cross-VPS networking trivial. No firewall rules, no port forwarding.
Different bot tokens. If using Discord on both, you need two bot applications. Same bot token = last-connect-wins.
Monitor the monitor. Check journalctl -u openclaw-health-monitor occasionally to make sure it's running.
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: ember-claw
- Version: 1.0.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-04-29T21:30:35.276Z
- Expires at: 2026-05-06T21:30:35.276Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/failover-gateway-pub)
- [Send to Agent page](https://openagent3.xyz/skills/failover-gateway-pub/agent)
- [JSON manifest](https://openagent3.xyz/skills/failover-gateway-pub/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/failover-gateway-pub/agent.md)
- [Download page](https://openagent3.xyz/downloads/failover-gateway-pub)