Skip to content
openvibers/openvibe.host
Commits
main · host.example.json
-
Read Bot protected count from ready response (#370)OpenVibers · 3 days ago
250b2b0
-
Wait for protected sessions before Bot deploys (#368)OpenVibers · 3 days ago
4f05318
-
Add Computer host service inventory (#335)OpenVibers · 5 days ago
a5700ab
-
Host: Mail inventory with Stalwart as an auxiliary unit (#324)OpenVibers · 6 days ago
f3bf6ef
-
ovhost's Media probe waits for the uploads and the open recordings too (#296)OpenVibers · 7 days ago
739a613
-
Media probe counts chunked recordings (#286)OpenVibers · 8 days ago
b857cc0
-
Release browser check: watch the 13 newer sites (#259)OpenVibers · 11 days ago
06addee
-
Every openvibe-* and openre-* service starts after PostgreSQL, PgBouncer and Valkey, and PgBouncer after PostgreSQL (boot-order drop-ins) (#145)OpenVibers · 21 days ago
46d0606
-
ovhost drops Stage B's tenant vhosts and custom-domain certificates; openvibe.host is a repo vhost (#144)OpenVibers · 21 days ago
5a75dfd
-
Host: the example inventory lists every service on the host (14 added with their drills; Sites removed) (#101)OpenVibers · 29 days ago
40cf91c
-
Host: the static hosting engine moved to OpenVibe.Space; its URLs answer 410 with a link (#84)OpenVibers · 12 Oct 2026
e9b9120
-
Host: delete the migration era (SQLite worker, backup/drill/probe branches, data switch, legacy deploy fallback) (#55)OpenVibers · 10 Oct 2026
f95e9d6
-
Host: the product at openre.stream is OpenRestream (#43)OpenVibers · 9 Oct 2026
d214508
-
Host: the Tools preflight no longer loads better-sqlite3 (Tools has been on PostgreSQL since 10-02) (#31)OpenVibers · 7 Oct 2026
0b4880f
-
Back up declared tenant object directories with the databases, offsite included, and verify every blob's sha256 in a restore drill (#23)OpenVibers · 5 Oct 2026
1a1f1f7
-
List the OpenRe WHIP worker and correct the stale Bot note (#18)OpenVibers · 4 Oct 2026
91fac68
-
Protect releases a JSMPEG worker runs from and list its instances (#19)OpenVibers · 4 Oct 2026
1ae4c97
-
Give Bot its vhost and enable its service during deployOpenVibers · 2 Oct 2026
ea013f0
-
Add the bot service to host.example.json for OpenVibe.BotOpenVibers · 2 Oct 2026
9a62097
-
Host tells search engines when a hosted site changes (plan T11, IndexNow): with INDEXNOW_KEY set, a production site's deploy, rollback, domain change or removal pings the engines for that site (its root and sitemap); sandbox sites never; unset, nothing is sent. A dashboard performance budget runs in CI. Tests green (verified).OpenVibers · 29 Sept 2026
bf33758
-
host.example.json: Games is on PostgreSQL (its ADR-0007 M1, OpenVibe.Games 540f672): databases world = ov_games, the preflight loads pg and openvibe-sdk/db instead of better-sqlite3, no generated dist-types (Games no longer tracks build output), the drill maps DATABASE_URL/DATABASE_DIRECT_URL to the scratch database with Valkey on a closed port and counts characters and mods. npm test 45/45. npm test 45/45 test files passed.OpenVibers · 29 Sept 2026
2e7d452
-
ovhost backs up and drills PostgreSQL services natively (every service but network, chat, tools, games and live is on PostgreSQL since 2026-09-28; the old inventory's SQLite paths no longer exist, so backups of those services had silently skipped). databases[] is a union: SQLite { name, path } or PostgreSQL { name, engine: postgresql, database: ov_* }, reached as the postgres OS user over peer auth (lib/dbengine.js; no service env value is read). Backup verifies pgBackRest every run (newest backup within 26 h, stanza ok, WAL archive failures not rising, else the service fails, never skips) and takes a pg_dump -Fc at most weekly (or --logical) for the existing off-site upload; restore-download checks .dump files with pg_restore --list. Drills restore the dump into a scratch database under a freshly generated role (pg_restore --no-owner --no-privileges --role), boot the release with DATABASE_URL and DATABASE_DIRECT_URL on the scratch database (direct port) and VALKEY_URL on a closed port, and refuse to start if any of the three would keep production's value or any PostgreSQL database is left unmapped; the scratch database and role are always dropped (dropdb --force, also after a failed stop), leftovers of a killed drill are swept first, free space is checked, and postgres can traverse the drill directory (0711). Probes gain postgresql-count, nginx tenants read ov_host over psql, metrics openvibe_backup_pg_verified and openvibe_pgbackrest_last_backup_age_seconds, alerts OpenVibeBackupSkipped and DataBackupStale. host.example.json converts the 19 PostgreSQL services (Media's drill also requires DATABASE_URL handling). Built by DeepSeek from the design brief, reviewed independently (FIX) and by Claude; every finding fixed here with tests (unmapped database refused, 0711 directory, leftovers swept, --force and --no-privileges). npm test 45/45. npm test 45/45 test files passed.OpenVibers · 29 Sept 2026
1157859
-
Inventory: Media's recording guard reads recordings_in_progress from its /api/ready.OpenVibers · 28 Sept 2026
19662b5
-
ovhost absorbs the per-repository deploy scripts (roadmap WS-N task 11). A service entry's `strategy` picks the engine and the defaults the script it replaces encoded: git-checkout (the default, what ovhost did before), multi-app (Tools: apps/_* skipped, untracked lockfiles the release tracks removed before the merge, preflight checks in each app, every openvibe-tools* unit file restarted via unitsMatch, ready.release and ready.allUnits), static-build (Sites: tracked dist/ restored from git before the merge, npm ci, node build.js, repo vhosts behind nginx -t, one release notification per dist/*/release.json), pnpm-build (Games: one pnpm install --frozen-lockfile for the workspace, pnpm build, generated dist-types/, rebuild on restore) and release-layout (Live, OpenRe; lib/release-layout.js: a release prepared in releases/<id> while current serves, node_modules hard-linked unless dependencies changed, node --check on changed files, an atomic current switch, static-only switches without a restart, the release's unit files, readiness with /release.json naming the new sha, switch back on failure, pruning that keeps any release a worker instance runs from, --prepare-only, ovhost rollback to the release the log says current replaced). The socket rule: pid 1 must hold the listener; only when the socket unit file changed or systemd does not hold the port is the service stopped, the socket restarted and the service started (systemd.rebindSocket, the only socket restart). --wait-idle now also holds a report-policy service. ovhost capabilities <svc> and --version are what the repositories' deploy.sh wrappers probe (deploy-api=1) before handing over, falling back to their deploy-legacy.sh otherwise. docs/deploy-strategies.md: the engines, every inventory field, the rule-by-rule mapping, what was not ported and why, the production cutover checklist and the proposed /etc/openvibe/host.json diff (not applied); host.example.json carries it. Tests: test/strategy-release-layout.test.js, test/strategy-in-place.test.js (fake host: worktrees, symlinked paths, mv -Tf, cp -al, pnpm). Version 0.3.0.OpenVibers · 27 Sept 2026
e4c7a58
-
Release notifications (roadmap WS-P task 9): ovhost publishes host.deploy.activated to OpenVibe.EventsOpenVibers · 26 Sept 2026
62fad64
-
Lifecycle declarations in ovhost validate (WS-P task 1): lib/lifecycle.js reads each service's lifecycle from the inventory entry (it replaces the manifest's on this host), validate --manifest <file>, or the manifest in the installed openvibe-contracts (0.55.0 and later), and validate fails naming the service and the field when one is missing (live: lifecycle.shutdown.deadlineSeconds is missing), when a running service declares no liveness or shutdown, when shutdown.deadlineSeconds exceeds a unit's stop timeout (systemd's effective TimeoutStopUSec, else TimeoutStopSec in the unit source) or the unit's KillSignal is another signal, and when the checkout's installed openvibe-contracts is outside contracts.range; worker units that drain longer than their stop timeout warn (ovhost never stops them); systemd show reports TimeoutStopUSec and KillSignal; test/lifecycle.test.js (11 cases), fixtures carry a lifecycle; README and host.example.json say where the block comes from and that the v0.49.0 pin has none yetOpenVibers · 26 Sept 2026
70fc2ea
-
Protected probes (WS-P task 2): kind sum adds up parts (unknown when any part is, never read as zero; each part validated, no sum in a sum); the example inventory probes Chat sockets (/ready connections), Games players online (readiness sessions), OpenRe ingest sessions (openre.db) and Tools running jobs (the img, audio and docs jobs.db)OpenVibers · 26 Sept 2026
cb0cb55
-
Metrics collection (Track O): scripts/prometheus-config.js renders a Prometheus scrape config from the host inventory (one loopback job per service port, declared extra processes such as the Tools satellites, node-exporter; metrics:false opts out); inventory example declares Tools' seven satellites and Sites' opt-outOpenVibers · 24 Sept 2026
6ff101e
-
C-76 retired: Live runs the release layout since 2026-09-24 05:51 UTC; inventory example reads Live's release (repo current, owner root, runAs ubuntu); Live drill row in the release layoutOpenVibers · 24 Sept 2026
8b720df
-
Restore drills for AI, Games and Tools pass on the host (2026-09-24): AI's drill spec (AI_ENABLED=0, every provider key and seam blanked, no service secret, events or whisper; configuration counts) is new; Games' and Tools' reviewed specs are now installed on the host and ran; Tools compares /release.json without booted_at. docs/restore-drills.md rowsOpenVibers · 24 Sept 2026
438b642
More commits