Initial import of verae-fleet from zapier monorepo

This commit is contained in:
George Lambert 2026-09-11 17:16:14 -04:00
commit 155f2817c8
54 changed files with 3509 additions and 0 deletions

27
services/access-api.json Normal file
View file

@ -0,0 +1,27 @@
{
"id": "access-api",
"title": "Direct customer API access",
"kind": "http",
"package": "verae-access-api",
"role": "access-api",
"managed": true,
"runtime": "HTTP :3022 plane=api",
"health": { "type": "http", "path": "/health", "timeoutMs": 2000 },
"ports": { "healthBase": 3022 },
"spawn": {
"cwd": "../verae-access-api",
"command": "node",
"args": ["src/server.js"]
},
"env": {
"PORT": "3022",
"AUTHZ_URL": "http://127.0.0.1:3020",
"ACCOUNT_BALANCE_URL": "http://127.0.0.1:3010",
"ZAPPIER_UPSTREAM": "http://127.0.0.1:3100",
"NATS_URL": "nats://127.0.0.1:4222"
},
"nats": {
"in": [],
"out": ["verae.access.authz.check", "verae.billing.statement.get", "verae.zapier.jobs.watch"]
}
}

View file

@ -0,0 +1,24 @@
{
"id": "access-authz",
"title": "Access-plane authorization",
"kind": "http",
"package": "verae-access-authz",
"role": "access-authz",
"managed": true,
"runtime": "HTTP :3020 + NATS verae.access.authz.check",
"health": { "type": "http", "path": "/health", "timeoutMs": 2000 },
"ports": { "healthBase": 3020 },
"spawn": {
"cwd": "../verae-access-authz",
"command": "node",
"args": ["src/server.js"]
},
"env": {
"PORT": "3020",
"NATS_URL": "nats://127.0.0.1:4222"
},
"nats": {
"in": ["verae.access.authz.check"],
"out": ["verae.access.authz.deny"]
}
}

27
services/access-leaf.json Normal file
View file

@ -0,0 +1,27 @@
{
"id": "access-leaf",
"title": "Server-to-server NATS leaf access",
"kind": "http",
"package": "verae-access-leaf",
"role": "access-leaf",
"managed": true,
"runtime": "HTTP :3023 + NATS verae.access.leaf.in",
"health": { "type": "http", "path": "/health", "timeoutMs": 2000 },
"ports": { "healthBase": 3023 },
"spawn": {
"cwd": "../verae-access-leaf",
"command": "node",
"args": ["src/server.js"]
},
"env": {
"PORT": "3023",
"AUTHZ_URL": "http://127.0.0.1:3020",
"LEAF_TOKEN": "leaf-dev-token",
"NATS_POLICY_PATH": "../verae-nats-accounts/policy.json",
"NATS_URL": "nats://127.0.0.1:4222"
},
"nats": {
"in": ["verae.access.leaf.in"],
"out": ["verae.access.authz.check", "verae.archive.put", "verae.archive.query"]
}
}

View file

@ -0,0 +1,22 @@
{
"id": "access-staff",
"title": "Staff access plane",
"kind": "http",
"package": "verae-access-staff",
"role": "access-staff",
"managed": true,
"runtime": "HTTP :3025 plane=staff",
"health": { "type": "http", "path": "/health", "timeoutMs": 2000 },
"ports": { "healthBase": 3025 },
"spawn": {
"cwd": "../verae-access-staff",
"command": "node",
"args": ["src/server.js"]
},
"env": {
"PORT": "3025",
"AUTHZ_URL": "http://127.0.0.1:3020",
"ACCOUNT_BALANCE_URL": "http://127.0.0.1:3010"
},
"nats": { "in": [], "out": ["verae.access.authz.check"] }
}

26
services/access-web.json Normal file
View file

@ -0,0 +1,26 @@
{
"id": "access-web",
"title": "Direct customer web access",
"kind": "http",
"package": "verae-access-web",
"role": "access-web",
"managed": true,
"runtime": "HTTP :3021 plane=web",
"health": { "type": "http", "path": "/health", "timeoutMs": 2000 },
"ports": { "healthBase": 3021 },
"spawn": {
"cwd": "../verae-access-web",
"command": "node",
"args": ["src/server.js"]
},
"env": {
"PORT": "3021",
"AUTHZ_URL": "http://127.0.0.1:3020",
"ACCOUNT_BALANCE_URL": "http://127.0.0.1:3010",
"NATS_URL": "nats://127.0.0.1:4222"
},
"nats": {
"in": [],
"out": ["verae.access.authz.check", "verae.billing.statement.get", "verae.billing.balance.adjust"]
}
}

View file

@ -0,0 +1,26 @@
{
"id": "access-zapier",
"title": "Zapier Platform access plane",
"kind": "http",
"package": "verae-access-zapier",
"role": "access-zapier",
"managed": true,
"runtime": "HTTP :3024 plane=zapier (no portal)",
"health": { "type": "http", "path": "/health", "timeoutMs": 2000 },
"ports": { "healthBase": 3024 },
"spawn": {
"cwd": "../verae-access-zapier",
"command": "node",
"args": ["src/server.js"]
},
"env": {
"PORT": "3024",
"AUTHZ_URL": "http://127.0.0.1:3020",
"ZAPPIER_UPSTREAM": "http://127.0.0.1:3100",
"NATS_URL": "nats://127.0.0.1:4222"
},
"nats": {
"in": [],
"out": ["verae.access.authz.check", "verae.zapier.jobs.watch"]
}
}

View file

@ -0,0 +1,31 @@
{
"id": "account-balance",
"title": "Account balance (NATS billing SoT)",
"kind": "http",
"package": "zappier-account-balance",
"role": "account-balance",
"managed": true,
"runtime": "HTTP :3010 + NATS verae.billing.*",
"health": { "type": "http", "path": "/health", "timeoutMs": 2000 },
"ports": { "healthBase": 3010 },
"spawn": {
"cwd": "../zappier-account-balance",
"command": "node",
"args": ["src/server.js"]
},
"env": {
"PORT": "3010",
"NATS_URL": "nats://127.0.0.1:4222"
},
"nats": {
"in": [
"verae.billing.statement.get",
"verae.billing.balance.get",
"verae.billing.balance.adjust",
"verae.billing.usage.recorded",
"verae.billing.payment.recorded",
"verae.billing.credit.applied"
],
"out": []
}
}

View file

@ -0,0 +1,23 @@
{
"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",
"ACCOUNT_BALANCE_URL": "http://127.0.0.1:3010",
"NATS_URL": "nats://127.0.0.1:4222"
},
"nats": { "in": [], "out": ["verae.billing.statement.get"] }
}

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,28 @@
{
"id": "customer-service",
"title": "Customer-service credits and review",
"kind": "http",
"package": "zappier-customer-service",
"role": "customer-service",
"managed": true,
"runtime": "HTTP :3011 CS credits + NATS statement review",
"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",
"ACCOUNT_BALANCE_URL": "http://127.0.0.1:3010",
"NATS_URL": "nats://127.0.0.1:4222",
"AUTHZ_URL": "http://127.0.0.1:3020"
},
"nats": {
"in": [],
"out": ["verae.billing.statement.get", "verae.billing.balance.adjust"]
},
"notes": "CS review and credits. Balances live on account-balance over NATS."
}

24
services/identity.json Normal file
View file

@ -0,0 +1,24 @@
{
"id": "identity",
"title": "Verae user-id bind/lookup",
"kind": "http",
"package": "zappier-identity",
"role": "identity",
"managed": true,
"runtime": "HTTP :3026 + NATS verae.identity.*",
"health": { "type": "http", "path": "/health", "timeoutMs": 2000 },
"ports": { "healthBase": 3026 },
"spawn": {
"cwd": "../zappier-identity",
"command": "node",
"args": ["src/server.js"]
},
"env": {
"PORT": "3026",
"NATS_URL": "nats://127.0.0.1:4222"
},
"nats": {
"in": ["verae.identity.bind", "verae.identity.lookup"],
"out": []
}
}

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."
}

24
services/jobs-events.json Normal file
View file

@ -0,0 +1,24 @@
{
"id": "jobs-events",
"title": "jobs.events mailbox",
"kind": "http",
"package": "verae-jobs-events",
"role": "jobs-events",
"managed": true,
"runtime": "HTTP :3030 + NATS verae.zapier.jobs.events",
"health": { "type": "http", "path": "/health", "timeoutMs": 2000 },
"ports": { "healthBase": 3030 },
"spawn": {
"cwd": "../verae-jobs-events",
"command": "node",
"args": ["src/server.js"]
},
"env": {
"PORT": "3030",
"NATS_URL": "nats://127.0.0.1:4222"
},
"nats": {
"in": ["verae.zapier.jobs.events"],
"out": []
}
}

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,24 @@
{
"id": "sales-pricing",
"title": "Sales per-customer pricing",
"kind": "http",
"package": "zappier-sales-pricing",
"role": "sales-pricing",
"managed": true,
"runtime": "HTTP :3012 quotes + NATS statement review",
"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",
"ACCOUNT_BALANCE_URL": "http://127.0.0.1:3010",
"NATS_URL": "nats://127.0.0.1:4222",
"AUTHZ_URL": "http://127.0.0.1:3020"
},
"nats": { "in": [], "out": ["verae.billing.statement.get"] }
}

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,39 @@
{
"id": "zappier-edge",
"title": "Zappier commercial HTTPS edge",
"kind": "http",
"package": "zappier",
"role": "zappier-edge",
"managed": true,
"runtime": "loopback :3000 (portal, admin, Stripe; public doors are access-*)",
"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",
"BIND": "127.0.0.1",
"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_URL": "nats://127.0.0.1:4222",
"AUTHZ_URL": "http://127.0.0.1:3020",
"ACCOUNT_BALANCE_URL": "http://127.0.0.1:3010",
"IDENTITY_URL": "http://127.0.0.1:3026"
},
"nats": {
"in": [],
"out": [
"verae.billing.usage.recorded",
"verae.billing.payment.recorded",
"verae.billing.credit.applied",
"verae.billing.statement.get",
"verae.billing.balance.adjust"
]
},
"notes": "Loopback only. Public Zapier traffic hits access-zapier :3024."
}