openvibers/openvibe.events STATUS.json
STATUS.json
| 1 | { |
| 2 | "repository": "OpenVibers/OpenVibe.Events", |
| 3 | "stage": "alpha", |
| 4 | "code": true, |
| 5 | "wave": "W3", |
| 6 | "plan": "OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026)", |
| 7 | "runtime": "node 22, express, PostgreSQL 18 (openvibe-sdk/db, async) + Valkey 9", |
| 8 | "port": 4300, |
| 9 | "domain": "openvibe.events", |
| 10 | "contracts": "openvibe-contracts v0.419.0", |
| 11 | "sdk": "openvibe-sdk v0.161.0", |
| 12 | "shared": "openvibe-shared v4.237.0", |
| 13 | "capabilities": [ |
| 14 | "events.event.publish", |
| 15 | "events.subscription.manage", |
| 16 | "events.event.read", |
| 17 | "events.delivery.admin", |
| 18 | "events.app.publish", |
| 19 | "events.app.read", |
| 20 | "events.app.subscribe" |
| 21 | ], |
| 22 | "capabilitiesRegistered": true, |
| 23 | "deployed": true, |
| 24 | "deployment": "Deployed with `sudo ovhost deploy events`: /opt/openvibe.events, unit openvibe-events, 127.0.0.1:4300; public at https://openvibe.events (plan T7: the API and product origin; realtime SSE, health, token-guarded /api/v1/events, /api/v1/subscriptions, /api/v1/checkpoints; /api/v1/deliveries host-local; the old events.openvibe.network address was retired on 2026-10-10); real traffic since 2026-09-23 (Live, Media, Chat, Games, Network and OpenRestream publish; on 2026-09-23 8 subscriptions, held by Search, Tips, VIP, News and Reviews); restore drill passed 2026-09-23", |
| 25 | "features": [ |
| 26 | "durable event store with the canonical envelope", |
| 27 | "subscriptions with signed webhook delivery (v1 and v2), retry, dead letters and replay", |
| 28 | "priority classes and backpressure", |
| 29 | "pull consumers with cursors and checkpoints", |
| 30 | "tiered retention (ADR-042 decision 8): hot events past EVENTS_RETENTION_DAYS move to the events_archive replay tier (EVENTS_REPLAY_RETENTION_DAYS, 365; 0 = off), read with the same cursor; monthly NDJSON archive export and restore by operator job (scripts/events-archive.js; local directory or S3-compatible bucket)", |
| 31 | "realtime SSE with cursor resume, gap reports and Network tickets", |
| 32 | "developer-app publish, read and subscribe with sandbox separation, SSRF-guarded webhooks and project quotas", |
| 33 | "hourly project usage rollups (events.usage.recorded)", |
| 34 | "queue-operation-64kb billing readings (platform.usage-sample@1) per production project and closed hour, posted to Billing through billing.usage.record (EVENTS_BILLING_INTERVAL_MS, off by default; docs/cutover-events-billing-readings.md)", |
| 35 | "redaction tombstones", |
| 36 | "per-actor limits (openvibe-sdk/limits; shared on Valkey)", |
| 37 | "carrier fabric (ADR-042): the pg-v1 poll beside a valkey-v1 push carrier for QUEUE (streams) and TOPIC (SSE fan-out) an optional nats-v1 NATS Core TOPIC carrier (NATS_URL) and an optional nats-js-v1 JetStream STREAM carrier (NATS_URL, NATS_JETSTREAM; deploy/nats) and an optional cloud-v1 SQS-compatible QUEUE carrier (CLOUD_QUEUE_URL; SigV4, no dependency), with a placement planner, per-key pinning, delivery_placements history and a GET /api/v1/placement explain API; EVENTS_CARRIERS[_DISABLED] switches it", |
| 38 | "at_most_once delivery semantics (a failed attempt is final)" |
| 39 | ], |
| 40 | "updated": "2026-11-13" |
| 41 | } |
| 42 |