# 1. Dependencies and data flow ```text Humans / Zapier cloud │ HTTPS x-api-key ▼ access-web :3021/portal access-zapier :3024 access-api :3022 │ │ ▼ ▼ zappier-edge loopback :3000 (meter, admin, Stripe; not a public door) │ HTTPS internal ▼ middleware-http :3100 (/zapier/v1) │ ├── HTTPS → api.veraetime.net (or MOCK_VERAE) └── NATS → private cluster jobs.watch / jobs.events webhooks.deliver archive.put / query / reply.* │ archive-worm × N tree-node × N archive-aggregator job-poller webhook-deliver ``` ## Repositories (clone all that you run) Prefix `ssh://git@git.georgelambert.org:2223/marchon/.git` (SSH **2223**). | You need | Repo | Catalog README | |----------|------|----------------| | Billing HTTPS | `zappier-edge` | https://zapier.georgelambert.org/packages/zappier/README.pdf | | Zapier adapter | `verae-middleware` | https://zapier.georgelambert.org/packages/verae-zapier-middleware/README.pdf | | Zapier app (cloud) | `verae-zapier-app` | https://zapier.georgelambert.org/packages/verae-zapier/README.pdf | | WORM nodes | `verae-archive-worm` | https://zapier.georgelambert.org/packages/verae-archive-worm/README.pdf | | Merkle leaves | `verae-tree-node` | https://zapier.georgelambert.org/packages/verae-tree-node/README.pdf | | Archive merge | `verae-archive-aggregator` | https://zapier.georgelambert.org/packages/verae-archive-aggregator/README.pdf | | Splitter | `verae-request-splitter` | https://zapier.georgelambert.org/packages/verae-request-splitter/README.pdf | | Replica floors | `verae-fleet` | https://zapier.georgelambert.org/packages/verae-fleet/README.pdf | | Keep-alive | `verae-keep` | https://zapier.georgelambert.org/packages/verae-keep/README.pdf | | Clone + deps | `verae-bootstrap` | https://zapier.georgelambert.org/packages/verae-bootstrap/README.pdf | | Staff IAM | `verae-staff-iam` | https://zapier.georgelambert.org/packages/verae-staff-iam/README.pdf | | This install guide | `verae-ops` | https://zapier.georgelambert.org/packages/verae-ops/README.pdf | Optional: `verae-activate` (tiny pushable app), `verae-zapier-simulator` (trace), `overview`, `zapier-docs-master`, `zapier-user-docs`, `verae-nats-process`. ## Runtime dependencies Install (or verify) OS packages on the **target** machine — Debian/Ubuntu or Alpine: ```bash git clone ssh://git@git.georgelambert.org:2223/marchon/verae-bootstrap.git cd verae-bootstrap bash scripts/host-deps.sh --check --type ns1-all-in-one bash scripts/host-deps.sh --type ns1-all-in-one ``` Manifest: `host-deps.tsv`. Narrative: [HOST-DEPS.md](https://git.georgelambert.org/marchon/verae-bootstrap). Catalog hostname move: [CATALOG-HOST.md](https://git.georgelambert.org/marchon/zapier-docs-master/src/branch/main/CATALOG-HOST.md). | Service | Needs | |---------|--------| | zappier-edge | Node 20+, **better-sqlite3** (python3/make/g++ on Linux), SQLite path, `PORT`, optional Stripe keys | | middleware | Node 22+, `NATS_URL` **or** `NATS_ENABLED=false`, chain URL or `MOCK_VERAE` | | NATS | JetStream, **no public bind** (`host-deps.sh --nats` on archive / all-in-one) | | worm / tree-node | Node, `NATS_URL`, local state dir | | fleet | Node, `machines.json` (SSH **paths**), HTTP `:3850` on `0.0.0.0`, `openssh-client` | | Zapier cloud app | `MIDDLEWARE_BASE_URL` = **public HTTPS of zappier-edge** (or middleware if you skip metering in lab) | ## Ports (lab defaults) | Port | Bind | Process | |------|------|---------| | 3000 | **loopback** (lab) | zappier-edge (admin); public portal is `:3021` | | 3021 | public | access-web `/portal/` | | 3028 | private/LAN | staff IAM | | 3100 | public or docker publish | middleware | | 3860 | loopback | verae-keep | | 4222 | **private only** | NATS client | | 6222 | **private only** | NATS cluster | | 8222 | private / localhost | NATS monitor | | 3847 | 0.0.0.0 | simulator | | 3850 | 0.0.0.0 | operator console | Chain: `https://api.veraetime.net` (prod) or `MOCK_VERAE=true` (lab).