Governed AI automations
Zipper Wire
Zipper Wire is Zipper’s AI automation control plane. Publish a wire (workflow), attach a manual, schedule, or webhook trigger, and run linear steps: map, branch, grounded AI, HTTP (SSRF-guarded), Function invoke, Job enqueue, email draft, delay, and human approval. Wire orchestrates; it does not replace Job Queues, Edge Functions, Edge AI, Pilot bots, or The Cellar. Runs, step logs, and approvals stay on this process with Palace RBAC and Watchtower audit. Not Zapier’s global farm, not Temporal’s multi-service cluster, and not Cellar’s PGWire adapter. Included on every Zipper plan.
Cloudflare analogue: Zapier / Temporal (skill map only)
What it is
Zipper Wire is Zipper’s AI automation control plane. Publish a wire (workflow), attach a manual, schedule, or webhook trigger, and run linear steps: map, branch, grounded AI, HTTP (SSRF-guarded), Function invoke, Job enqueue, email draft, delay, and human approval. Wire orchestrates; it does not replace Job Queues, Edge Functions, Edge AI, Pilot bots, or The Cellar. Runs, step logs, and approvals stay on this process with Palace RBAC and Watchtower audit. Not Zapier’s global farm, not Temporal’s multi-service cluster, and not Cellar’s PGWire adapter.
Closest analogue: Zapier / Temporal (skill map only). SLA 99.9% · p99 80ms. Admins publish wires and connectors. Operators run wires and decide approvals.
- ▸Wires, runs, step logs, and HITL approvals
- ▸Triggers: manual, cron drain, webhook (zw_ secret)
- ▸Steps call Functions, Jobs, grounded AI, and HTTP
- ▸SSRF-guarded egress · step retries · dead runs
- ▸wire.tinyzipper.com product host
- ▸Not Cellar PGWire — different product
How it works
Zipper Wire is Zipper’s governed AI automation control plane. Dashboard → Zipper Wire → seed demos or create a draft. Publish a versioned wire, then Run now, schedule via cron drain, or POST a webhook with x-zipper-wire-secret.
Steps are linear (max 20): map, branch, grounded AI, SSRF-guarded HTTP, Function invoke, Job enqueue, email draft, delay, note, and human approval. Approvals pause the run until an operator allows or denies.
Wire orchestrates; it does not replace Job Queues, Edge Functions, Edge AI, Pilot bots, or The Cellar. It is not Cellar’s PGWire adapter (different product). Runs and step logs stay on this Global Server node with Palace RBAC and Watchtower audit.
Use cases
Concrete ways teams use this service on day one.
Triage an inbound hitch with a human gate
A webhook fires risk events. Grounded AI classifies; an operator must approve before any egress.
- Seed hitch-gate or create a wire with ai → approve → http/function.
- Publish, then POST /api/v1/wire/hooks/:prefix with the webhook secret.
- Decide the pending approval in the console or API.
Weekly scroll digest on a schedule
Ops wants a Monday digest from Zipper corpus scrolls without inventing policy.
- Seed scroll-digest (schedule trigger).
- Ensure ZIPPER_WIRE_DRAIN_SECRET (or ZIPPER_CRON_DRAIN_SECRET) and cron POST /api/v1/wire/drain.
- Inspect run step logs after the drain.
Set it up in the dashboard
Dashboard → Services → Zipper Wire.
Seed demos or create a draft. Publish, then Run now.
Copy webhook URL + secret for zw_ prefixes. Drain schedule with the shared cron secret.
API
Control-plane: GET|POST /api/v1/wire · PATCH /api/v1/wire/:id · POST /api/v1/wire/:id/run · POST /api/v1/wire/hooks/:prefix · POST /api/v1/wire/drain · GET /api/v1/wire/runs. Send Authorization: Bearer tz_live_YOUR_TOKEN.
Creates count against the plan quota. A 402 plan_limit means you are at the cap — upgrade or delete an unused resource.
Create and publish a wire
curl -sS -X POST https://tinyzipper.com/api/v1/wire \
-H "Authorization: Bearer tz_live_YOUR_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name":"incident-triage","title":"Incident triage","publish":true,"trigger":{"kind":"webhook"},"graph":{"steps":[{"id":"s1","kind":"ai","name":"Classify","config":{"prompt":"Classify {{trigger.body}}","ground":"docs"}},{"id":"s2","kind":"approve","name":"Gate","config":{"action":"page_oncall","detail":"Allow paging?"}}]}}'Run a published wire
curl -sS -X POST https://tinyzipper.com/api/v1/wire/WIRE_ID/run \
-H "Authorization: Bearer tz_live_YOUR_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"payload":{"source":"ops"}}'Webhook trigger
curl -sS -X POST "https://tinyzipper.com/api/v1/wire/hooks/zw_YOUR_PREFIX" \
-H "content-type: application/json" \
-H "x-zipper-wire-secret: zws_YOUR_SECRET" \
-d '{"event":"hitch","severity":"high"}'List the same resource in JavaScript
const res = await fetch("https://tinyzipper.com/api/v1/wire", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.ZIPPER_TOKEN}`,
"Content-Type": "application/json"
}
});
const json = await res.json();
if (!res.ok) throw new Error(json.error ?? res.statusText);
console.log(json);Tips
Publish before run — drafts refuse execution.
HTTP steps are SSRF-guarded: private IPs and link-local targets are refused.
Wire is not Cellar PGWire. Use The Cellar for Postgres; use Wire for automations.
Concurrent runs are capped per zone. Prefer Jobs for high fan-out work.
Drain schedule: POST /api/v1/wire/drain with Authorization: Bearer $ZIPPER_WIRE_DRAIN_SECRET (falls back to ZIPPER_CRON_DRAIN_SECRET).
- ▸SOC 2
- ▸Grounded AI
- ▸SSRF-guarded egress
- ▸HITL approvals
Runbook
Open Zipper Wire. Seed demos or create a wire. Publish, then Run now / schedule / webhook (zw_ prefix + secret). Approvals pause irreversible steps. Drain cron: POST /api/v1/wire/drain with ZIPPER_WIRE_DRAIN_SECRET. Wire orchestrates Functions, Jobs, and grounded AI — it is not Cellar PGWire.
Next: Honest production · All docs · Create a free account