master-zapier-plan-draft/docs/02-architecture/nats-gateway.md
George Lambert 51ae79b75f Milestone 3: NATS wait (gate 9), hash lookup, zappier timestamp, NS1 tunnel
Wait-via-NATS returns completed or pending+jobId (GATE 9). Mock SHA256
idempotent register + GET /hashes/{sha256}. Zappier commercial edge has
POST /v1/timestamp and hash-lookup. GATE 12 smoke (signup + wait) passes.

NS1 NATS is 127.0.0.1:4222 on 70.88.205.138; SSH tunnel :14222. Local
nats-server -js used for isolated tests. Activate app adds Echo Text.

Learned: JetStream on NS1 is loopback-only; do not bind 4222 public.
2026-09-09 02:54:02 -04:00

21 lines
690 B
Markdown

# NATS gateway
JetStream for job watch, events, and webhook delivery lives on **NS1** (`70.88.205.138`, host `NS1.GEORGELAMBERT.ORG`).
The client port is **not public**. `nats-server -js` listens on `127.0.0.1:4222` (monitoring `8222`) with JetStream enabled (NATS 2.11.17).
## Tunnel from this Mac
```bash
ssh -fN -L 14222:127.0.0.1:4222 marchon@70.88.205.138
export NATS_URL=nats://127.0.0.1:14222
export NATS_ENABLED=true
```
Local isolated tests use a laptop `nats-server -js -p 4222`.
## Streams created by middleware
`ZAPIER_JOBS`, `ZAPIER_EVENTS`, `ZAPIER_WEBHOOKS` (optional `ZAPIER_USAGE`).
Do not expose 4222 on `0.0.0.0` without auth; keep SSH tunnel or private network.