baseUrl + API key and triggers runs after you approve them.
What Appeeky requires
Recommended: small VPS + named Cloudflare Tunnel
This is the path we recommend for customers (and what we use for our own smoke tests).1. Provision a VPS
Any small Linux box works — Hetzner CX22/CX32, DigitalOcean, OVH, etc. Ubuntu LTS is fine. Do not open inbound ports for the gateway; the tunnel dials out.2. Install Hermes (example)
~/.hermes/.env:
3. Durable public URL with a named Cloudflare Tunnel
Quick tunnels (cloudflared tunnel --url …) print a random *.trycloudflare.com hostname that changes every restart. Use a named tunnel + your domain instead.
~/.cloudflared/config.yml:
4. Connect in Appeeky
Settings → Integrations → Coding agents → Hermes- Base URL:
https://hermes.yourdomain.com - API key: the
API_SERVER_KEYyou generated
GET /v1/capabilities before saving. On success the Co-founder can propose engineering_delegate actions (always approval-gated).
OpenClaw (same VPS pattern)
OpenClaw’s gateway defaults to port 18789. Enable hooks ingress in your OpenClaw config:- Gateway URL:
https://openclaw.yourdomain.com - Hook token: your
hooks.token
GET /healthz and verifies the hook token before saving. OpenClaw runs are fire-and-forget — results arrive on your configured delivery channel (Slack/Telegram) if you set deliver + to.
Alternatives
Security checklist
-
API_SERVER_KEYis ≥32 random bytes (openssl rand -hex 32) - Gateway listens on
127.0.0.1when fronted by a tunnel/proxy - Inbound firewall blocks everything except SSH (tunnel/proxy only)
- Don’t paste private keys or
API_SERVER_KEYinto chat / tickets - Rotate the key in Hermes
.env+ Appeeky Integrations if leaked - Appeeky stores the key encrypted at rest (
COFOUNDER_CREDENTIALS_SECRET)
What happens after connect
- Co-founder spots a feature gap → proposes
engineering_delegate - You approve in Actions / chat
- Appeeky
POSTs/v1/runsto your gateway - A background poller refreshes run status every ~10 minutes (and on the next briefing / manual refresh)
- Hermes opens a draft PR and optionally notifies your channel

