openvibers/openvibe.ai Commits

AI: developers create projects and read the API reference on openvibe.services (the developer console moved there from openvibe.codes) (#29)

OP OpenVibers committed 8 Oct 2026 · be76fb75ba · 4 files, +6 −6

Claude-Session: https://claude.ai/code/session_01K8AYn3FF3HE7CPfM262qdh

Co-authored-by: Claude Opus 5.5 <[email protected]>

Changes

ddiff --git a/README.md b/README.md
iindex 725a04a..d68d0e8 100644
---- a/README.md
++++ b/README.md
@@@ -147,7 +147,7 @@ app:app_<ULID>`, `project_id prj_<ULID>`, `env sandbox|production`, ns `[project
app.<project_id>.*]`, five minutes. AI accepts one capability for it, `ai.app.run` (public). A
sandbox app holds it without asking (Network's default sandbox allowance); a production app holds it
once OpenVibe staff add it to the project's allowance. Create the project and its app at
--[openvibe.codes/projects](https://openvibe.codes/projects):
++[openvibe.services/projects](https://openvibe.services/projects):
| Route | What |
|---|---|
ddiff --git a/server/app.js b/server/app.js
iindex 4dc1b7e..2686242 100644
---- a/server/app.js
++++ b/server/app.js
@@@ -155,7 +155,7 @@ function createApp({ config, db, registry, pool, quotas, cache, runs, auth, keys
'',
'Callers authenticate with OpenVibe.Network tokens (audience openvibe.ai): first-party service tokens, or a',
'developer app\'s token (ai.app.run) on the six direct operations and GET /api/v1/runs/:id.',
-- 'Developer apps: https://openvibe.codes/projects',
++ 'Developer apps: https://openvibe.services/projects',
'AI output is a draft/evidence package attributed to a workflow, model and run, never to a person.',
'',
'Source: https://github.com/OpenVibers/OpenVibe.AI',
ddiff --git a/server/home.js b/server/home.js
iindex 17d2b78..d583307 100644
---- a/server/home.js
++++ b/server/home.js
@@@ -17,8 +17,8 @@ const appIcon = require('openvibe-shared/app-icon');
const SITE_NAME = 'OpenVibe.AI';
const NETWORK_URL = 'https://openvibe.network';
--const PROJECTS_URL = 'https://openvibe.codes/projects';
--const API_DOCS_URL = 'https://openvibe.codes/docs/api';
++const PROJECTS_URL = 'https://openvibe.services/projects';
++const API_DOCS_URL = 'https://openvibe.services/docs/api';
const SOURCE = 'https://github.com/OpenVibers/OpenVibe.AI';
const GUIDE = `${SOURCE}#developer-apps`;
const DESCRIPTION = 'One API for chat, generation, summaries, classification, extraction and embeddings across many models. '
@@@ -87,7 +87,7 @@ function sections({ siteUrl }) {
}) + showcase.steps({
title: 'Start in four steps',
items: [
-- { title: 'Create a project', text: 'Sign in at openvibe.codes/projects with your OpenVibe account and create a project.' },
++ { title: 'Create a project', text: 'Sign in at openvibe.services/projects with your OpenVibe account and create a project.' },
{ title: 'Add an app', text: 'Add an app to it. A confidential app gets a client id and a secret, shown once.' },
{ title: 'Get a token', text: 'Exchange them at OpenVibe.Network for a five-minute token with the audience openvibe.ai.' },
{ title: 'Call an operation', text: 'POST to /api/v1/chat or any of the other five, and keep the run id to read it later.' },
ddiff --git a/test/home.test.js b/test/home.test.js
iindex 05b0b47..35f1292 100644
---- a/test/home.test.js
++++ b/test/home.test.js
@@@ -29,7 +29,7 @@ t.test('GET / as a browser: the home page, its CSP and a private cache', async (
assert.ok(r.text.includes('Many models, one API.'), 'the hero');
assert.ok(r.text.includes(`<link rel="canonical" href="${SITE}/">`), 'the canonical public origin');
assert.ok(r.text.includes(`${SITE}/api/v1/chat`), 'the examples call the public origin');
-- assert.ok(r.text.includes('https://openvibe.codes/projects'), 'where a project and an app are made');
++ assert.ok(r.text.includes('https://openvibe.services/projects'), 'where a project and an app are made');
assert.ok(!/ai\.openvibe\.network/.test(r.text), 'never the old name');
});