Initial import of verae-keep from zapier monorepo

This commit is contained in:
George Lambert 2026-09-11 19:55:20 -04:00
commit 100a35d589
17 changed files with 1000 additions and 0 deletions

39
README.md Normal file
View file

@ -0,0 +1,39 @@
# verae-keep
Host keep-alive for Verae workers. Restarts a unit that crashed **unless** the operator console paused or stopped it.
**Forgejo:** https://git.georgelambert.org/marchon/verae-keep
Two processes:
| Process | Port | Job |
|---------|------|-----|
| `node src/keep.js` | `:3860` | Probe units, spawn if intent is `run` |
| `node src/watch.js` | `:3861` | Restart keep if `/health` fails |
| `scripts/guard.sh` | — | Restart watch if watch exits |
Intent is `run` | `pause` | `stop`. Sources, newest wins:
1. `POST /intent/:id` (admin / API)
2. `~/verae-fleet-runtime/data/<instance>/intent.json` (fleet writes this on start/pause/stop)
3. live `FLEET_URL/api/status` when set
4. unit `defaultIntent` (`run`)
Pause: leave the process down or POST `/pause`. Stop: SIGTERM and do not spawn. Run: spawn if health fails.
## NS1 (70.88.205.138)
```bash
KEEP_UNITS=$HOME/verae-keep/units.ns1.json KEEP_STATE=$HOME/verae-keep/data \
nohup bash scripts/guard.sh >/tmp/verae-keep-guard.out 2>&1 &
```
Or systemd user unit `systemd/verae-keep-guard.service` (`loginctl enable-linger`).
Units: NATS (observe only), job-poller, webhook-deliver, archive-aggregator, archive-worm ×3, tree-node ×3.
## API
- `GET /health` `GET /status`
- `POST /intent/:id` `{"state":"pause|stop|run"}`
- `POST /reconcile`