openvibers/openvibe.sites Commits
openvibe.host says what Host is today, not bots-and-mods hosting
Changes
@@@ -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'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.">++<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'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."><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'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."><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'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.</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 & 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 <site>.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>@@@ -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",@@@ -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"},@@@ -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|&|&) 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`);}
@@ -3,9 +3,9 @@
@@ -3,9 +3,9 @@
<head>
<head>
<meta charset="utf-8">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<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'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.">
+<meta name="keywords" content="openvibe host, static site hosting, deployment, openvibe projects">
<meta name="robots" content="index, follow, max-image-preview:large">
<meta name="robots" content="index, follow, max-image-preview:large">
<meta name="theme-color" content="#94a3b8">
<meta name="theme-color" content="#94a3b8">
<link rel="canonical" href="https://openvibe.host/">
<link rel="canonical" href="https://openvibe.host/">
@@ -16,15 +16,15 @@
@@ -16,15 +16,15 @@
<meta property="og:type" content="website">
<meta property="og:type" content="website">
<meta property="og:site_name" content="OpenVibe.Host">
<meta property="og:site_name" content="OpenVibe.Host">
<meta property="og:url" content="https://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'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.">
<meta property="og:image" content="https://openvibe.network/assets/logo-512.png">
<meta property="og:image" content="https://openvibe.network/assets/logo-512.png">
<meta property="og:image:alt" content="OpenVibe">
<meta property="og:image:alt" content="OpenVibe">
<meta name="twitter:card" content="summary">
<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'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.">
<meta name="twitter:image" content="https://openvibe.network/assets/logo-512.png">
<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>(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>
<script src="https://openvibe.network/shared/theme-loader.js" defer></script>
<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin>
<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
@@ -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="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>
<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>
<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'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.</p>
<div class="ctas">
<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 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>
<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
@@ -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>
<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>
<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="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 & 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 <site>.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>
</div>
</section>
</section>
@@ -119,7 +119,8 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
@@ -119,7 +119,8 @@ a.card:hover{transform:translateY(-3px);border-color:rgba(var(--site-rgb),.6);bo
<h2>Meanwhile, on the network</h2>
<h2>Meanwhile, on the network</h2>
<p class="lead2">Most of this already exists somewhere on OpenVibe — start there today.</p>
<p class="lead2">Most of this already exists somewhere on OpenVibe — start there today.</p>
<div class="grid">
<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>
</div>
</section>
</section>
@@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
{
{
"name": "OpenVibe.Host",
"name": "OpenVibe.Host",
"short_name": "Host",
"short_name": "Host",
- "description": "Run it yourself.",
+ "description": "Static sites for OpenVibe projects.",
"start_url": "/",
"start_url": "/",
"scope": "/",
"scope": "/",
"display": "standalone",
"display": "standalone",
@@ -283,34 +283,39 @@
@@ -283,34 +283,39 @@
"name": "OpenVibe.Host",
"name": "OpenVibe.Host",
"icon": "fa-server",
"icon": "fa-server",
"accent": "#94a3b8",
"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": [
"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": [
"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",
"plannedRepo": "OpenVibe.Host",
"launch": "the owner's go on its launch checklist"
"launch": "the owner's go on its launch checklist"
},
},
@@ -15,6 +15,9 @@ execFileSync(process.execPath, [path.join(ROOT, 'build.js'), '--check'], { stdio
@@ -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.
// 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;
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|&|&) mods hosting|\bservice hosting\b/i;
let pages = 0;
let pages = 0;
for (const site of catalog.sites) {
for (const site of catalog.sites) {
@@ -25,6 +28,7 @@ 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, 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.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, 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)) {
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`);
assert.doesNotThrow(() => JSON.parse(m[1]), `${d}: JSON-LD parses`);
}
}