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.
- ▸Standalone product — not included in Cloud Edge plans
- ▸Free Spark · Circuit $19/mo · Current $49 · Grid $99
- ▸Grounded AI with JSON schema + step memory
- ▸Live Functions, Jobs, Mail · SSRF HTTP · HITL · dry-run/replay
- ▸Transform, assert, branch expressions for operators
- ▸wire.tinyzipper.com product host
How it works
Zipper Wire is a standalone product line — not included in Zipper Cloud Edge plans. Plans: Spark (free), Circuit ($19/mo), Current ($49), Grid ($99), Foundry (custom). See /wire/pricing.
Dashboard → Zipper Wire → starter recipes or create a draft. Publish, then Run with a test payload (or dry-run). Schedule via cron drain, or POST a webhook with x-zipper-wire-secret.
Steps: map, transform, branch (expressions), grounded AI (schema + memory), SSRF-guarded HTTP, live Function invoke, Job enqueue, Zipper Mail send/draft, delay, note, assert, and human approval.
Dry-run mutes side effects. Replay reuses a prior trigger payload. Wire orchestrates Zipper connectors — it is not Cellar’s PGWire adapter, not Temporal, and not a Zapier marketplace.
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. Start from a recipe or create a draft. Publish, then run with a test payload (or dry-run) / schedule / webhook (zw_ prefix + secret). Approvals, assert, and branch expressions gate risk. Live Function/Jobs/Mail connectors. Drain cron: POST /api/v1/wire/drain. Not Cellar PGWire.
Next: Zipper Forms · All docs · Create a free account