Initial import of verae-fleet from zapier monorepo

This commit is contained in:
George Lambert 2026-09-11 15:17:42 -04:00
commit 5de9f586fe
45 changed files with 3208 additions and 0 deletions

View file

@ -0,0 +1,21 @@
{
"id": "accounting-export",
"title": "Accounting export (QuickBooks)",
"kind": "http",
"package": "zappier-accounting-export",
"role": "accounting-export",
"managed": true,
"runtime": "HTTP :3013 IIF/CSV → zappier-edge invoices",
"health": { "type": "http", "path": "/health", "timeoutMs": 2000 },
"ports": { "healthBase": 3013 },
"spawn": {
"cwd": "../zappier-accounting-export",
"command": "node",
"args": ["src/server.js"]
},
"env": {
"PORT": "3013",
"ZAPPIER_ADMIN_URL": "http://127.0.0.1:3000"
},
"nats": { "in": [], "out": [] }
}

View file

@ -0,0 +1,16 @@
{
"id": "archive-aggregator",
"title": "Archive reply aggregator",
"kind": "nats-worker",
"package": "verae-archive-aggregator",
"role": "archive-aggregator",
"managed": true,
"runtime": "query fan-out + merge",
"health": { "type": "http", "path": "/health", "timeoutMs": 800 },
"ports": { "healthBase": 13400 },
"nats": {
"in": ["verae.archive.reply.*"],
"out": ["verae.archive.query"]
},
"notes": "Broadcast archive.query (no queue group). kinds may include tree."
}

View file

@ -0,0 +1,16 @@
{
"id": "archive-worm",
"title": "Bloom-filtered WORM archive",
"kind": "nats-archive",
"package": "verae-archive-worm",
"role": "archive-worm",
"managed": true,
"runtime": "N copies, bloom miss = silence",
"health": { "type": "http", "path": "/health", "timeoutMs": 800 },
"ports": { "healthBase": 13500 },
"nats": {
"in": ["verae.archive.put", "verae.archive.query"],
"out": ["verae.archive.reply.<correlationId>"]
},
"notes": "Subscribe to query without a shared queue group."
}

View file

@ -0,0 +1,22 @@
{
"id": "customer-service",
"title": "Customer-service credits",
"kind": "http",
"package": "zappier-customer-service",
"role": "customer-service",
"managed": true,
"runtime": "HTTP :3011 CS credits → zappier-edge",
"health": { "type": "http", "path": "/health", "timeoutMs": 2000 },
"ports": { "healthBase": 3011 },
"spawn": {
"cwd": "../zappier-customer-service",
"command": "node",
"args": ["src/server.js"]
},
"env": {
"PORT": "3011",
"ZAPPIER_ADMIN_URL": "http://127.0.0.1:3000"
},
"nats": { "in": [], "out": [] },
"notes": "Department API. Prepaid balances live on zappier-edge."
}

16
services/job-poller.json Normal file
View file

@ -0,0 +1,16 @@
{
"id": "job-poller",
"title": "Job poller worker",
"kind": "nats-worker",
"package": "verae-zapier-middleware",
"role": "job-poller",
"managed": true,
"runtime": "JetStream consumer",
"health": { "type": "http", "path": "/health", "timeoutMs": 800 },
"ports": { "healthBase": 13200 },
"nats": {
"in": ["verae.zapier.jobs.watch"],
"out": ["verae.zapier.jobs.events"]
},
"notes": "GET chain status; emit terminal events. Queue group job-poller."
}

View file

@ -0,0 +1,27 @@
{
"id": "middleware-http",
"title": "Verae Zapier HTTP middleware",
"kind": "http",
"package": "verae-zapier-middleware",
"role": "middleware-http",
"managed": true,
"runtime": "HTTPS :3100 /zapier/v1",
"health": { "type": "http", "path": "/health", "timeoutMs": 4000 },
"ports": { "healthBase": 3100 },
"spawn": {
"cwd": "../verae-zapier-middleware",
"command": "node",
"args": ["src/index.js"]
},
"env": {
"PORT": "3100",
"NATS_URL": "nats://127.0.0.1:4222",
"NATS_ENABLED": "true",
"MOCK_VERAE": "true"
},
"nats": {
"in": ["verae.zapier.jobs.events"],
"out": ["verae.zapier.jobs.watch", "verae.zapier.webhooks.deliver"]
},
"notes": "Wait path subscribes jobs.events. Never expose NATS to Zapier."
}

11
services/nats.json Normal file
View file

@ -0,0 +1,11 @@
{
"id": "nats",
"title": "NATS JetStream (NS1 loopback)",
"kind": "external",
"package": null,
"managed": false,
"runtime": "nats-server -js on 127.0.0.1:4222",
"health": { "type": "tcp", "host": "127.0.0.1", "port": 4222, "timeoutMs": 400 },
"nats": { "in": [], "out": [] },
"notes": "Do not bind 0.0.0.0. Zapier never connects here. Fleet monitors only; does not spawn nats-server."
}

View file

@ -0,0 +1,21 @@
{
"id": "sales-pricing",
"title": "Sales per-customer pricing",
"kind": "http",
"package": "zappier-sales-pricing",
"role": "sales-pricing",
"managed": true,
"runtime": "HTTP :3012 quotes → zappier-edge",
"health": { "type": "http", "path": "/health", "timeoutMs": 2000 },
"ports": { "healthBase": 3012 },
"spawn": {
"cwd": "../zappier-sales-pricing",
"command": "node",
"args": ["src/server.js"]
},
"env": {
"PORT": "3012",
"ZAPPIER_ADMIN_URL": "http://127.0.0.1:3000"
},
"nats": { "in": [], "out": [] }
}

16
services/tree-node.json Normal file
View file

@ -0,0 +1,16 @@
{
"id": "tree-node",
"title": "Merkle tree-node archive",
"kind": "nats-archive",
"package": "verae-tree-node",
"role": "tree-node",
"managed": true,
"runtime": "N copies holding leaf proofs for bulk summaries",
"health": { "type": "http", "path": "/health", "timeoutMs": 800 },
"ports": { "healthBase": 13600 },
"nats": {
"in": ["verae.archive.put", "verae.archive.query"],
"out": ["verae.archive.reply.<correlationId>"]
},
"notes": "keepFloor in fleet.json must stay >= 3 so a leaf query still has a node that might hold the shard. Bloom miss = no packet."
}

37
services/unmanaged.json Normal file
View file

@ -0,0 +1,37 @@
{
"id": "_unmanaged",
"title": "Not fleet-spawned (listed for operators)",
"entries": [
{
"id": "zapier-platform-app",
"package": "verae-zapier",
"runtime": "Zapier cloud",
"notes": "HTTPS only to zappier-edge. Never NATS."
},
{
"id": "verae-activate",
"package": "verae-activate",
"runtime": "Zapier cloud (activate-now app)"
},
{
"id": "request-splitter",
"package": "verae-request-splitter",
"runtime": "library in middleware"
},
{
"id": "verae-chain-client",
"package": "verae-zapier-middleware",
"runtime": "library → api.veraetime.net or MOCK"
},
{
"id": "zapier-user-docs",
"package": "zapier-user-docs",
"runtime": "static"
},
{
"id": "docs-master",
"package": "docs-master",
"runtime": "static"
}
]
}

View file

@ -0,0 +1,16 @@
{
"id": "webhook-deliver",
"title": "Zapier REST Hook deliverer",
"kind": "nats-worker",
"package": "verae-zapier-middleware",
"role": "webhook-deliver",
"managed": true,
"runtime": "JetStream consumer + HTTPS POST",
"health": { "type": "http", "path": "/health", "timeoutMs": 800 },
"ports": { "healthBase": 13300 },
"nats": {
"in": ["verae.zapier.webhooks.deliver", "verae.zapier.jobs.events"],
"out": []
},
"notes": "HTTPS POST to Zapier hook URL. Not a NATS client in Zapier cloud."
}

View file

@ -0,0 +1,14 @@
{
"id": "zapier-simulator",
"title": "Zapier interface simulator + trace console",
"kind": "http",
"package": "verae-zapier-simulator",
"role": "zapier-simulator",
"managed": true,
"runtime": "HTTP 127.0.0.1:3847",
"health": { "type": "http", "path": "/health", "timeoutMs": 800 },
"ports": { "healthBase": 13847 },
"env": { "SIM_PORT": "3847" },
"nats": { "in": [], "out": [] },
"notes": "Optional. min 0 in central fleet.json. Does not talk to live NATS."
}

View file

@ -0,0 +1,25 @@
{
"id": "zappier-edge",
"title": "Zappier commercial HTTPS edge",
"kind": "http",
"package": "zappier",
"role": "zappier-edge",
"managed": true,
"runtime": "HTTPS :3000 (portal, admin, meter, proxy to middleware)",
"health": { "type": "http", "path": "/health", "timeoutMs": 4000 },
"ports": { "healthBase": 3000 },
"spawn": {
"cwd": "../zappier",
"command": "npx",
"args": ["ts-node", "--transpile-only", "src/index.ts"]
},
"env": {
"PORT": "3000",
"ZAPPIER_UPSTREAM": "http://127.0.0.1:3100",
"CS_SERVICE_URL": "http://127.0.0.1:3011",
"SALES_PRICING_URL": "http://127.0.0.1:3012",
"ACCOUNTING_EXPORT_URL": "http://127.0.0.1:3013"
},
"nats": { "in": [], "out": [] },
"notes": "Zapier x-api-key lands here. HTTPS to middleware only."
}