openvibers/openvibe.zone Commits
README/STATUS: s3.openvibe.media and api.openvibe.zone have their DNS records (2026-10-21); Zone is deployed (live since 10-14), and STATUS names its own plan (ADR-031), not Games' (#26)
Changes
@@@ -6,7 +6,8 @@ Private S3-compatible storage zones for OpenVibe projects, at https://openvibe.zOpenVibe.Contracts, with its amendments of 2026-10-02 and 2026-10-14.A **zone** is a named object zone of one project environment, sandbox or production. Any S3 tool reaches it as a--bucket at `https://s3.openvibe.media`, path style (`https://s3.openvibe.network` until that name's DNS record exists).++bucket at `https://s3.openvibe.media`, path style. That name is DNS-only, so an object may be larger than the 100 MB a++request Cloudflare's proxy carries; `https://s3.openvibe.network` is the same surface behind Cloudflare.## Owns@@@ -54,7 +55,7 @@ Zone never lists keys, never holds bytes and never counts.## Capabilities and API--Base `https://openvibe.zone/api/v1`. A caller is either:++Base `https://openvibe.zone/api/v1` (`https://api.openvibe.zone/api/v1` is the same API). A caller is either:- a developer app of the project, with the route's capability for audience `openvibe.zone` (a sandbox app reaches only the sandbox), or- a member of the project: any role reads, and admins and owners change.@@@ -3,7 +3,7 @@"stage": "alpha","code": true,"wave": "T8",-- "plan": "Plan track T8 (Games), OpenVibe.Games ADR-0007 decision 10 and M5: the platform's game services as their own service",++ "plan": "ADR-031 in OpenVibe.Contracts and its amendments of 2026-10-02 and 2026-10-14 (OpenVibe.Zone replaces the planned OpenVibe.Data); live since 2026-10-14","runtime": "node 22, express 4, PostgreSQL 18 (openvibe-sdk/db, async) + Valkey 9","port": 5050,"domain": "openvibe.zone",@@@ -26,12 +26,11 @@],"notYet": ["Per-zone usage series (Media's hourly rollups with the zone's resource name)",-- "api.openvibe.zone and s3.openvibe.media DNS records (owner)","CopyObject and UploadPartCopy on Media's S3 surface"],"capabilitiesRegistered": true,"serviceManifestRegistered": true,-- "deployed": false,++ "deployed": true,"placeholderInSites": false,"features": ["Default zone per project environment, created on first use",@@@ -42,5 +41,5 @@"Resource index and control (delete) for OpenVibe.Services"],"deployment": "openvibe-ovh: unit openvibe-zone.service on 127.0.0.1:5050 (git checkout /opt/openvibe.zone, env /etc/openvibe/zone.env, database ov_zone)",-- "updated": "2026-10-20"++ "updated": "2026-10-21"}@@@ -5,7 +5,7 @@## nginx after changing it. The Node app (port 5050, systemd unit openvibe-zone) renders every page and serves## the API; nginx terminates TLS with openvibe.zone's own certificate (openvibe.zone and *.openvibe.zone: a repo vhost## uses the certificate that really covers its name, or Cloudflare answers 526), rate-limits sign-in and the API, keeps--## /internal/ off the internet, and compresses text. api.openvibe.zone is the same site once its DNS record exists;++## /internal/ off the internet, and compresses text. api.openvibe.zone (DNS since 2026-10-21) is the same site;## www.openvibe.zone redirects to the apex. The bytes of a zone never pass here: they go to s3.openvibe.media.#### No proxy_cache: the app decides cacheability per response (public for the pages rendered for anonymous
@@ -6,7 +6,8 @@ Private S3-compatible storage zones for OpenVibe projects, at https://openvibe.z
@@ -6,7 +6,8 @@ Private S3-compatible storage zones for OpenVibe projects, at https://openvibe.z
OpenVibe.Contracts, with its amendments of 2026-10-02 and 2026-10-14.
OpenVibe.Contracts, with its amendments of 2026-10-02 and 2026-10-14.
A **zone** is a named object zone of one project environment, sandbox or production. Any S3 tool reaches it as a
A **zone** is a named object zone of one project environment, sandbox or production. Any S3 tool reaches it as a
-bucket at `https://s3.openvibe.media`, path style (`https://s3.openvibe.network` until that name's DNS record exists).
+bucket at `https://s3.openvibe.media`, path style. That name is DNS-only, so an object may be larger than the 100 MB a
+request Cloudflare's proxy carries; `https://s3.openvibe.network` is the same surface behind Cloudflare.
## Owns
## Owns
@@ -54,7 +55,7 @@ Zone never lists keys, never holds bytes and never counts.
@@ -54,7 +55,7 @@ Zone never lists keys, never holds bytes and never counts.
## Capabilities and API
## Capabilities and API
-Base `https://openvibe.zone/api/v1`. A caller is either:
+Base `https://openvibe.zone/api/v1` (`https://api.openvibe.zone/api/v1` is the same API). A caller is either:
- a developer app of the project, with the route's capability for audience `openvibe.zone` (a sandbox app reaches only the sandbox), or
- a developer app of the project, with the route's capability for audience `openvibe.zone` (a sandbox app reaches only the sandbox), or
- a member of the project: any role reads, and admins and owners change.
- a member of the project: any role reads, and admins and owners change.
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"stage": "alpha",
"stage": "alpha",
"code": true,
"code": true,
"wave": "T8",
"wave": "T8",
- "plan": "Plan track T8 (Games), OpenVibe.Games ADR-0007 decision 10 and M5: the platform's game services as their own service",
+ "plan": "ADR-031 in OpenVibe.Contracts and its amendments of 2026-10-02 and 2026-10-14 (OpenVibe.Zone replaces the planned OpenVibe.Data); live since 2026-10-14",
"runtime": "node 22, express 4, PostgreSQL 18 (openvibe-sdk/db, async) + Valkey 9",
"runtime": "node 22, express 4, PostgreSQL 18 (openvibe-sdk/db, async) + Valkey 9",
"port": 5050,
"port": 5050,
"domain": "openvibe.zone",
"domain": "openvibe.zone",
@@ -26,12 +26,11 @@
@@ -26,12 +26,11 @@
],
],
"notYet": [
"notYet": [
"Per-zone usage series (Media's hourly rollups with the zone's resource name)",
"Per-zone usage series (Media's hourly rollups with the zone's resource name)",
- "api.openvibe.zone and s3.openvibe.media DNS records (owner)",
"CopyObject and UploadPartCopy on Media's S3 surface"
"CopyObject and UploadPartCopy on Media's S3 surface"
],
],
"capabilitiesRegistered": true,
"capabilitiesRegistered": true,
"serviceManifestRegistered": true,
"serviceManifestRegistered": true,
- "deployed": false,
+ "deployed": true,
"placeholderInSites": false,
"placeholderInSites": false,
"features": [
"features": [
"Default zone per project environment, created on first use",
"Default zone per project environment, created on first use",
@@ -42,5 +41,5 @@
@@ -42,5 +41,5 @@
"Resource index and control (delete) for OpenVibe.Services"
"Resource index and control (delete) for OpenVibe.Services"
],
],
"deployment": "openvibe-ovh: unit openvibe-zone.service on 127.0.0.1:5050 (git checkout /opt/openvibe.zone, env /etc/openvibe/zone.env, database ov_zone)",
"deployment": "openvibe-ovh: unit openvibe-zone.service on 127.0.0.1:5050 (git checkout /opt/openvibe.zone, env /etc/openvibe/zone.env, database ov_zone)",
- "updated": "2026-10-20"
+ "updated": "2026-10-21"
}
}
@@ -5,7 +5,7 @@
@@ -5,7 +5,7 @@
## nginx after changing it. The Node app (port 5050, systemd unit openvibe-zone) renders every page and serves
## nginx after changing it. The Node app (port 5050, systemd unit openvibe-zone) renders every page and serves
## the API; nginx terminates TLS with openvibe.zone's own certificate (openvibe.zone and *.openvibe.zone: a repo vhost
## the API; nginx terminates TLS with openvibe.zone's own certificate (openvibe.zone and *.openvibe.zone: a repo vhost
## uses the certificate that really covers its name, or Cloudflare answers 526), rate-limits sign-in and the API, keeps
## uses the certificate that really covers its name, or Cloudflare answers 526), rate-limits sign-in and the API, keeps
-## /internal/ off the internet, and compresses text. api.openvibe.zone is the same site once its DNS record exists;
+## /internal/ off the internet, and compresses text. api.openvibe.zone (DNS since 2026-10-21) is the same site;
## www.openvibe.zone redirects to the apex. The bytes of a zone never pass here: they go to s3.openvibe.media.
## www.openvibe.zone redirects to the apex. The bytes of a zone never pass here: they go to s3.openvibe.media.
##
##
## No proxy_cache: the app decides cacheability per response (public for the pages rendered for anonymous
## No proxy_cache: the app decides cacheability per response (public for the pages rendered for anonymous