openvibers/openvibe.sites Commits

openvibe.host says what Host is today, not bots-and-mods hosting

OP OpenVibers committed 24 Sept 2026 · a82cb670cd · 4 files, +40 −30

The placeholder advertised "deploy OpenVibe services, bots, mods and static sites, with TLS, DNS and
logs handled for you" and "Bots & mods: host your bot or mod". Host runs none of that: Stage A is the
operator tooling (ovhost) the network runs its own deploys, backups and restore drills with; Stage B is
static site hosting, built and running on loopback, not launched; Stage C (running user code) is
deliberately not started, and Host handles neither DNS nor logs for anyone.

The page now describes the tooling that exists and the static hosting that is waiting for the owner's
go: folder or .tar.gz uploads served at <site>.openvibe.host, immutable content-addressed deploys with
one-step rollback, TXT-verified custom domains with operator-issued certificates, static files only.
Meanwhile links go to the Host repository (launch checklist, threat review) and openvibe.codes.

test/build.test.js fails any page that claims "handled for you" hosting or bot/mod hosting.

Changes

ddiff --git a/dist/openvibe.host/index.html b/dist/openvibe.host/index.html
iindex 09d2eb2..a933ffb 100644
---- a/dist/openvibe.host/index.html
++++ b/dist/openvibe.host/index.html
@@@ -3,9 +3,9 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
--<title>OpenVibe.Host — Run it yourself.</title>
--<meta name="description" content="OpenVibe.Host is the hosting and deployment surface of the OpenVibe network: deploy OpenVibe services, bots, mods and static sites, with TLS, DNS and logs handled for you.">
--<meta name="keywords" content="openvibe host, hosting, deployment, self-hosting openvibe">
++<title>OpenVibe.Host — Static sites for OpenVibe projects.</title>
++<meta name="description" content="OpenVibe.Host is the network&#39;s deployment tooling and, next, static site hosting for OpenVibe projects. The tooling (ovhost) already runs on the network&#39;s host: deploys with automatic rollback, backups and restore drills for the network&#39;s own services. The hosting part will let a project upload a folder of HTML, CSS, JavaScript and images, serve it at &lt;site&gt;.openvibe.host and roll back to any earlier deploy in one step. Static files only: nothing uploaded is run as code.">
++<meta name="keywords" content="openvibe host, static site hosting, deployment, openvibe projects">
<meta name="robots" content="index, follow, max-image-preview:large">
<meta name="theme-color" content="#94a3b8">
<link rel="canonical" href="https://openvibe.host/">
@@@ -16,15 +16,15 @@
<meta property="og:type" content="website">
<meta property="og:site_name" content="OpenVibe.Host">
<meta property="og:url" content="https://openvibe.host/">
--<meta property="og:title" content="OpenVibe.Host — Run it yourself.">
--<meta property="og:description" content="OpenVibe.Host is the hosting and deployment surface of the OpenVibe network: deploy OpenVibe services, bots, mods and static sites, with TLS, DNS and logs handled for you.">
++<meta property="og:title" content="OpenVibe.Host — Static sites for OpenVibe projects.">
++<meta property="og:description" content="OpenVibe.Host is the network&#39;s deployment tooling and, next, static site hosting for OpenVibe projects. The tooling (ovhost) already runs on the network&#39;s host: deploys with automatic rollback, backups and restore drills for the network&#39;s own services. The hosting part will let a project upload a folder of HTML, CSS, JavaScript and images, serve it at &lt;site&gt;.openvibe.host and roll back to any earlier deploy in one step. Static files only: nothing uploaded is run as code.">
<meta property="og:image" content="https://openvibe.network/assets/logo-512.png">
<meta property="og:image:alt" content="OpenVibe">
<meta name="twitter:card" content="summary">
--<meta name="twitter:title" content="OpenVibe.Host — Run it yourself.">
--<meta name="twitter:description" content="OpenVibe.Host is the hosting and deployment surface of the OpenVibe network: deploy OpenVibe services, bots, mods and static sites, with TLS, DNS and logs handled for you.">
++<meta name="twitter:title" content="OpenVibe.Host — Static sites for OpenVibe projects.">
++<meta name="twitter:description" content="OpenVibe.Host is the network&#39;s deployment tooling and, next, static site hosting for OpenVibe projects. The tooling (ovhost) already runs on the network&#39;s host: deploys with automatic rollback, backups and restore drills for the network&#39;s own services. The hosting part will let a project upload a folder of HTML, CSS, JavaScript and images, serve it at &lt;site&gt;.openvibe.host and roll back to any earlier deploy in one step. Static files only: nothing uploaded is run as code.">
<meta name="twitter:image" content="https://openvibe.network/assets/logo-512.png">
--<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://openvibe.host/#site","url":"https://openvibe.host/","name":"OpenVibe.Host","description":"OpenVibe.Host is the hosting and deployment surface of the OpenVibe network: deploy OpenVibe services, bots, mods and static sites, with TLS, DNS and logs handled for you.","inLanguage":"en","publisher":{"@type":"Organization","@id":"https://openvibe.network/#org","name":"OpenVibe","url":"https://openvibe.network/","logo":"https://openvibe.network/assets/logo-512.png","sameAs":["https://github.com/OpenVibers","https://discord.gg/M6MuRUaeJj"]},"isPartOf":{"@type":"WebSite","@id":"https://openvibe.network/#site","name":"OpenVibe.Network","url":"https://openvibe.network/"}},{"@type":"WebPage","@id":"https://openvibe.host/#page","url":"https://openvibe.host/","name":"OpenVibe.Host — Run it yourself.","description":"OpenVibe.Host is the hosting and deployment surface of the OpenVibe network: deploy OpenVibe services, bots, mods and static sites, with TLS, DNS and logs handled for you.","isPartOf":{"@id":"https://openvibe.host/#site"},"datePublished":"2026-09-17","dateModified":"2026-09-24","breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"OpenVibe","item":"https://openvibe.network/"},{"@type":"ListItem","position":2,"name":"OpenVibe.Host","item":"https://openvibe.host/"}]}}]}</script>
++<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://openvibe.host/#site","url":"https://openvibe.host/","name":"OpenVibe.Host","description":"OpenVibe.Host is the network's deployment tooling and, next, static site hosting for OpenVibe projects. The tooling (ovhost) already runs on the network's host: deploys with automatic rollback, backups and restore drills for the network's own services. The hosting part will let a project upload a folder of HTML, CSS, JavaScript and images, serve it at <site>.openvibe.host and roll back to any earlier deploy in one step. Static files only: nothing uploaded is run as code.","inLanguage":"en","publisher":{"@type":"Organization","@id":"https://openvibe.network/#org","name":"OpenVibe","url":"https://openvibe.network/","logo":"https://openvibe.network/assets/logo-512.png","sameAs":["https://github.com/OpenVibers","https://discord.gg/M6MuRUaeJj"]},"isPartOf":{"@type":"WebSite","@id":"https://openvibe.network/#site","name":"OpenVibe.Network","url":"https://openvibe.network/"}},{"@type":"WebPage","@id":"https://openvibe.host/#page","url":"https://openvibe.host/","name":"OpenVibe.Host — Static sites for OpenVibe projects.","description":"OpenVibe.Host is the network's deployment tooling and, next, static site hosting for OpenVibe projects. The tooling (ovhost) already runs on the network's host: deploys with automatic rollback, backups and restore drills for the network's own services. The hosting part will let a project upload a folder of HTML, CSS, JavaScript and images, serve it at <site>.openvibe.host and roll back to any earlier deploy in one step. Static files only: nothing uploaded is run as code.","isPartOf":{"@id":"https://openvibe.host/#site"},"datePublished":"2026-09-17","dateModified":"2026-09-24","breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"OpenVibe","item":"https://openvibe.network/"},{"@type":"ListItem","position":2,"name":"OpenVibe.Host","item":"https://openvibe.host/"}]}}]}</script>
<script>(function(){try{var raw=localStorage.getItem('ov_theme');if(!raw)return;var t=JSON.parse(raw),v=t&&t.variables;if(!v)return;var el=document.documentElement;for(var k in v)if(k.charAt(0)==='-')el.style.setProperty(k,v[k]);if(t.id)el.setAttribute('data-theme',t.id);}catch(_){}})();</script>
<script src="https://openvibe.network/shared/theme-loader.js" defer></script>
<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin>
@@@ -94,8 +94,8 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<div class="mark"><i class="fa-solid fa-server" aria-hidden="true"></i></div>
<div class="badge"><span class="ov-mark" data-size="16" data-variant="host"></span> Part of the OpenVibe network · <b>in development</b></div>
<h1>OpenVibe<span class="d">.</span><span class="tld">Host</span></h1>
-- <div class="tag">Run it yourself.</div>
-- <p class="lead">OpenVibe.Host is the hosting and deployment surface of the OpenVibe network: deploy OpenVibe services, bots, mods and static sites, with TLS, DNS and logs handled for you.</p>
++ <div class="tag">Static sites for OpenVibe projects.</div>
++ <p class="lead">OpenVibe.Host is the network&#39;s deployment tooling and, next, static site hosting for OpenVibe projects. The tooling (ovhost) already runs on the network&#39;s host: deploys with automatic rollback, backups and restore drills for the network&#39;s own services. The hosting part will let a project upload a folder of HTML, CSS, JavaScript and images, serve it at &lt;site&gt;.openvibe.host and roll back to any earlier deploy in one step. Static files only: nothing uploaded is run as code.</p>
<div class="ctas">
<a class="btn btn-primary" href="https://openvibe.network/login?return=https%3A%2F%2Fopenvibe.host%2F"><i class="fa-solid fa-right-to-bracket"></i> Sign in with OpenVibe</a>
<a class="btn" href="https://openvibe.network/#network"><i class="fa-solid fa-circle-nodes"></i> The whole network</a>
@@@ -108,10 +108,10 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<h2>What OpenVibe.Host will be</h2>
<p class="lead2">Same account, same themes, same navbar as every other OpenVibe site — built in the open, run by its community.</p>
<div class="grid">
-- <div class="card"><div class="ic"><i class="fa-solid fa-server" aria-hidden="true"></i></div><b>Service hosting</b><span>Every OpenVibe service, deployable in one step.</span></div>
-- <div class="card"><div class="ic"><i class="fa-solid fa-server" aria-hidden="true"></i></div><b>Bots &amp; mods</b><span>Host your bot or mod next to the network it talks to.</span></div>
-- <div class="card"><div class="ic"><i class="fa-solid fa-server" aria-hidden="true"></i></div><b>Static sites</b><span>A folder in, a domain out, with TLS.</span></div>
-- <div class="card"><div class="ic"><i class="fa-solid fa-server" aria-hidden="true"></i></div><b>Open source</b><span>The same deploy tooling the network runs on.</span></div>
++ <div class="card"><div class="ic"><i class="fa-solid fa-server" aria-hidden="true"></i></div><b>Static sites</b><span>Upload a folder or a .tar.gz of HTML, CSS, JavaScript, images and fonts; it is served at &lt;site&gt;.openvibe.host over HTTPS.</span></div>
++ <div class="card"><div class="ic"><i class="fa-solid fa-server" aria-hidden="true"></i></div><b>Every deploy kept</b><span>Deploys are immutable and content-addressed: switch to, or roll back to, any earlier one in one step.</span></div>
++ <div class="card"><div class="ic"><i class="fa-solid fa-server" aria-hidden="true"></i></div><b>Your own domain</b><span>Custom domains you prove with a DNS TXT record; their certificates are issued by an operator for now.</span></div>
++ <div class="card"><div class="ic"><i class="fa-solid fa-server" aria-hidden="true"></i></div><b>Static only</b><span>No build step and no server-side code: nothing you upload is run. Running bots, mods or apps is not offered; that needs isolation the network has not built yet.</span></div>
</div>
</section>
@@@ -119,7 +119,8 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<h2>Meanwhile, on the network</h2>
<p class="lead2">Most of this already exists somewhere on OpenVibe — start there today.</p>
<div class="grid">
-- <a class="card" href="https://github.com/OpenVibers"><div class="ic"><i class="fa-solid fa-arrow-up-right-from-square" aria-hidden="true"></i></div><b>Deploy docs</b><span>Every service ships its own deploy scripts on GitHub.</span><span class="go">github.com/OpenVibers →</span></a>
++ <a class="card" href="https://github.com/OpenVibers/OpenVibe.Host"><div class="ic"><i class="fa-solid fa-arrow-up-right-from-square" aria-hidden="true"></i></div><b>OpenVibe.Host on GitHub</b><span>The code, the launch checklist and the threat review.</span><span class="go">github.com/OpenVibers/OpenVibe.Host →</span></a>
++ <a class="card" href="https://openvibe.codes"><div class="ic"><i class="fa-solid fa-arrow-up-right-from-square" aria-hidden="true"></i></div><b>Build on OpenVibe</b><span>Projects, apps and credentials on OpenVibe.Codes, the developer portal.</span><span class="go">openvibe.codes →</span></a>
</div>
</section>
ddiff --git a/dist/openvibe.host/manifest.webmanifest b/dist/openvibe.host/manifest.webmanifest
iindex 62dc8e2..a0def71 100644
---- a/dist/openvibe.host/manifest.webmanifest
++++ b/dist/openvibe.host/manifest.webmanifest
@@@ -1,7 +1,7 @@
{
"name": "OpenVibe.Host",
"short_name": "Host",
-- "description": "Run it yourself.",
++ "description": "Static sites for OpenVibe projects.",
"start_url": "/",
"scope": "/",
"display": "standalone",
ddiff --git a/sites.json b/sites.json
iindex 742e222..d34dbc0 100644
---- a/sites.json
++++ b/sites.json
@@@ -283,34 +283,39 @@
"name": "OpenVibe.Host",
"icon": "fa-server",
"accent": "#94a3b8",
-- "tagline": "Run it yourself.",
-- "description": "OpenVibe.Host is the hosting and deployment surface of the OpenVibe network: deploy OpenVibe services, bots, mods and static sites, with TLS, DNS and logs handled for you.",
++ "tagline": "Static sites for OpenVibe projects.",
++ "description": "OpenVibe.Host is the network's deployment tooling and, next, static site hosting for OpenVibe projects. The tooling (ovhost) already runs on the network's host: deploys with automatic rollback, backups and restore drills for the network's own services. The hosting part will let a project upload a folder of HTML, CSS, JavaScript and images, serve it at <site>.openvibe.host and roll back to any earlier deploy in one step. Static files only: nothing uploaded is run as code.",
"pillars": [
[
-- "Service hosting",
-- "Every OpenVibe service, deployable in one step."
++ "Static sites",
++ "Upload a folder or a .tar.gz of HTML, CSS, JavaScript, images and fonts; it is served at <site>.openvibe.host over HTTPS."
],
[
-- "Bots & mods",
-- "Host your bot or mod next to the network it talks to."
++ "Every deploy kept",
++ "Deploys are immutable and content-addressed: switch to, or roll back to, any earlier one in one step."
],
[
-- "Static sites",
-- "A folder in, a domain out, with TLS."
++ "Your own domain",
++ "Custom domains you prove with a DNS TXT record; their certificates are issued by an operator for now."
],
[
-- "Open source",
-- "The same deploy tooling the network runs on."
++ "Static only",
++ "No build step and no server-side code: nothing you upload is run. Running bots, mods or apps is not offered; that needs isolation the network has not built yet."
]
],
"meanwhile": [
[
-- "Deploy docs",
-- "https://github.com/OpenVibers",
-- "Every service ships its own deploy scripts on GitHub."
++ "OpenVibe.Host on GitHub",
++ "https://github.com/OpenVibers/OpenVibe.Host",
++ "The code, the launch checklist and the threat review."
++ ],
++ [
++ "Build on OpenVibe",
++ "https://openvibe.codes",
++ "Projects, apps and credentials on OpenVibe.Codes, the developer portal."
]
],
-- "keywords": "openvibe host, hosting, deployment, self-hosting openvibe",
++ "keywords": "openvibe host, static site hosting, deployment, openvibe projects",
"plannedRepo": "OpenVibe.Host",
"launch": "the owner's go on its launch checklist"
},
ddiff --git a/test/build.test.js b/test/build.test.js
iindex 7f65d0f..28f6d4b 100644
---- a/test/build.test.js
++++ b/test/build.test.js
@@@ -15,6 +15,9 @@ execFileSync(process.execPath, [path.join(ROOT, 'build.js'), '--check'], { stdio
// Pricing copy is never used on the network (no "free"/"$0"/"no ads" claims); "free speech" is fine.
const PRICING = /\$0\b|\bfor free\b|\bfree (forever|to use|of charge|plan|tier)\b|\bno ads\b|\bad-free\b/i;
++// Claims no OpenVibe service makes good on (2026-09-24 audit): Host serves static files only (Stage C,
++// running user code, is not started) and handles neither DNS nor logs for anyone.
++const UNBACKED = /handled for you|host your (bot|mod)|bots,? (and|&amp;|&) mods hosting|\bservice hosting\b/i;
let pages = 0;
for (const site of catalog.sites) {
@@@ -25,6 +28,7 @@ for (const site of catalog.sites) {
assert.match(html, new RegExp(`<link rel="canonical" href="https://${d.replace(/\./g, '\\.')}/?"`), `${d}: canonical`);
assert.match(html, /placeholder/i, `${d}: says it is a placeholder (never claim a product is live)`);
assert.doesNotMatch(html, PRICING, `${d}: pricing copy`);
++ assert.doesNotMatch(html, UNBACKED, `${d}: claims a hosting product that does not exist`);
for (const m of html.matchAll(/<script type="application\/ld\+json">([\s\S]*?)<\/script>/g)) {
assert.doesNotThrow(() => JSON.parse(m[1]), `${d}: JSON-LD parses`);
}