openvibers/openvibe.live Commits
Point Live machine setup to OpenVibe Link (#726)
Changes
@@@ -48,7 +48,7 @@ The **Chat AI** tab's **AI Chat Viewers** card, under **Key & Budget**, **AI souThe key is kept encrypted in OpenVibe.AI, never in Live, and **Test connection** tries it.- **A model on my own computer (free).** Ollama, LM Studio or llama.cpp's server on your own PC, through the OpenVibeNode, with no port opened.-- - **Set it up.** Install it with `--ai` from [openvibe.bot/machines](https://openvibe.bot/machines), then turn on++ - **Set it up.** Install it with `--ai` from [openvibe.link/machines](https://openvibe.link/machines), then turn on"Let my AI use this computer's models" for that computer there.- **Fill in the card.** Name the computer (its `dev_` id from that page) or tick **Any of my computers that is on**(the fastest first, the next when one is busy), name the model as your model server does, save, then@@@ -223,10 +223,10 @@</select></label><div id="aiv-node-fields" style="display:none">-- <p class="ai-bot-hint">Your viewers think with Ollama, LM Studio or llama.cpp on your own computer, through the OpenVibe Link: free, and no port is opened. Install it with <code>--ai</code> from <a href="https://openvibe.bot/machines" target="_blank" rel="noopener">openvibe.bot/machines</a>, then turn on "Let my AI use this computer's models" there.</p>++ <p class="ai-bot-hint">Your viewers think with Ollama, LM Studio or llama.cpp on your own computer, through the OpenVibe Link: free, and no port is opened. Install it with <code>--ai</code> from <a href="https://openvibe.link/machines" target="_blank" rel="noopener">openvibe.link/machines</a>, then turn on "Let my AI use this computer's models" there.</p><label><span>Computer</span>-- <input type="text" id="aiv-node-machine" class="form-input" placeholder="dev_… (from openvibe.bot/machines)" maxlength="30" autocomplete="off" autocapitalize="off" autocorrect="off" spellcheck="false" style="max-width:320px">++ <input type="text" id="aiv-node-machine" class="form-input" placeholder="dev_… (from openvibe.link/machines)" maxlength="30" autocomplete="off" autocapitalize="off" autocorrect="off" spellcheck="false" style="max-width:320px"></label><label class="vibe-switch"><input type="checkbox" id="aiv-node-any" onchange="_aivToggleKeyMode()"> <span>Any of my computers that is on (the fastest first, the next when one is busy)</span></label><label>@@@ -92,7 +92,7 @@ async function store(userId, cfg, { apiKey = null } = {}) {const provider = providerOf(cfg);if (provider === 'node') {const machine = machineOf(cfg);-- if (!machine) return { ok: false, status: 400, body: { code: 'credentials.machine', detail: 'Name your computer (its dev_ id on openvibe.bot/machines), or choose any of yours' } };++ if (!machine) return { ok: false, status: 400, body: { code: 'credentials.machine', detail: 'Name your computer (its dev_ id on openvibe.link/machines), or choose any of yours' } };return await call('PUT', subject, { provider: 'node', machine, models: modelsOf(cfg) });}const put = { provider, base_url: addressOf(cfg, provider), models: modelsOf(cfg) };@@@ -15,7 +15,7 @@ const FALLBACK_SITES = ['https://openvibe.zone', 'https://openvibe.surf', 'https://openvibe.codes', 'https://openvibe.quest','https://openvibe.food', 'https://openvibe.rent', 'https://openvibe.homes', 'https://openvibe.watch','https://openvibe.events', 'https://openre.stream', 'https://search.openvibe.network', 'https://openvibe.email',-- 'https://node.openvibe.network', 'https://openvibe.website',++ 'https://openvibe.link', 'https://openvibe.website',];let cachedSites = null;let cachedAt = 0;nnew file mode 100644@@@ -0,0 +1,10 @@++'use strict';++const assert = require('node:assert/strict');++const { spawnSync } = require('node:child_process');++const path = require('node:path');++const root = path.resolve(__dirname, '..');++const oldName = ['OpenVibe[ .-]No' + 'de', 'openvibe-' + 'node', 'no' + 'd_', 'node[.]openvibe[.]network', 'node:lnk_', 'openvibe[.](bot|my|network)/mach' + 'ines'].join('|');++const result = spawnSync('git', ['grep', '-n', '-I', '-i', '-E', oldName, '--', '.', ':!migrations/**', ':!test/link-brand.test.js'], { cwd: root, encoding: 'utf8' });++assert.ok(result.status === 0 || result.status === 1, result.stderr || 'git grep failed');++assert.equal(result.status, 1, `Old Link brand or principal returned:\n${(result.stdout || '').split('\n').slice(0, 10).join('\n')}`);++console.log(' ok old Link brand and principal IDs are absent');
@@ -48,7 +48,7 @@ The **Chat AI** tab's **AI Chat Viewers** card, under **Key & Budget**, **AI sou
@@ -48,7 +48,7 @@ The **Chat AI** tab's **AI Chat Viewers** card, under **Key & Budget**, **AI sou
The key is kept encrypted in OpenVibe.AI, never in Live, and **Test connection** tries it.
The key is kept encrypted in OpenVibe.AI, never in Live, and **Test connection** tries it.
- **A model on my own computer (free).** Ollama, LM Studio or llama.cpp's server on your own PC, through the OpenVibe
- **A model on my own computer (free).** Ollama, LM Studio or llama.cpp's server on your own PC, through the OpenVibe
Node, with no port opened.
Node, with no port opened.
- - **Set it up.** Install it with `--ai` from [openvibe.bot/machines](https://openvibe.bot/machines), then turn on
+ - **Set it up.** Install it with `--ai` from [openvibe.link/machines](https://openvibe.link/machines), then turn on
"Let my AI use this computer's models" for that computer there.
"Let my AI use this computer's models" for that computer there.
- **Fill in the card.** Name the computer (its `dev_` id from that page) or tick **Any of my computers that is on**
- **Fill in the card.** Name the computer (its `dev_` id from that page) or tick **Any of my computers that is on**
(the fastest first, the next when one is busy), name the model as your model server does, save, then
(the fastest first, the next when one is busy), name the model as your model server does, save, then
@@ -223,10 +223,10 @@
@@ -223,10 +223,10 @@
</select>
</select>
</label>
</label>
<div id="aiv-node-fields" style="display:none">
<div id="aiv-node-fields" style="display:none">
- <p class="ai-bot-hint">Your viewers think with Ollama, LM Studio or llama.cpp on your own computer, through the OpenVibe Link: free, and no port is opened. Install it with <code>--ai</code> from <a href="https://openvibe.bot/machines" target="_blank" rel="noopener">openvibe.bot/machines</a>, then turn on "Let my AI use this computer's models" there.</p>
+ <p class="ai-bot-hint">Your viewers think with Ollama, LM Studio or llama.cpp on your own computer, through the OpenVibe Link: free, and no port is opened. Install it with <code>--ai</code> from <a href="https://openvibe.link/machines" target="_blank" rel="noopener">openvibe.link/machines</a>, then turn on "Let my AI use this computer's models" there.</p>
<label>
<label>
<span>Computer</span>
<span>Computer</span>
- <input type="text" id="aiv-node-machine" class="form-input" placeholder="dev_… (from openvibe.bot/machines)" maxlength="30" autocomplete="off" autocapitalize="off" autocorrect="off" spellcheck="false" style="max-width:320px">
+ <input type="text" id="aiv-node-machine" class="form-input" placeholder="dev_… (from openvibe.link/machines)" maxlength="30" autocomplete="off" autocapitalize="off" autocorrect="off" spellcheck="false" style="max-width:320px">
</label>
</label>
<label class="vibe-switch"><input type="checkbox" id="aiv-node-any" onchange="_aivToggleKeyMode()"> <span>Any of my computers that is on (the fastest first, the next when one is busy)</span></label>
<label class="vibe-switch"><input type="checkbox" id="aiv-node-any" onchange="_aivToggleKeyMode()"> <span>Any of my computers that is on (the fastest first, the next when one is busy)</span></label>
<label>
<label>
@@ -92,7 +92,7 @@ async function store(userId, cfg, { apiKey = null } = {}) {
@@ -92,7 +92,7 @@ async function store(userId, cfg, { apiKey = null } = {}) {
const provider = providerOf(cfg);
const provider = providerOf(cfg);
if (provider === 'node') {
if (provider === 'node') {
const machine = machineOf(cfg);
const machine = machineOf(cfg);
- if (!machine) return { ok: false, status: 400, body: { code: 'credentials.machine', detail: 'Name your computer (its dev_ id on openvibe.bot/machines), or choose any of yours' } };
+ if (!machine) return { ok: false, status: 400, body: { code: 'credentials.machine', detail: 'Name your computer (its dev_ id on openvibe.link/machines), or choose any of yours' } };
return await call('PUT', subject, { provider: 'node', machine, models: modelsOf(cfg) });
return await call('PUT', subject, { provider: 'node', machine, models: modelsOf(cfg) });
}
}
const put = { provider, base_url: addressOf(cfg, provider), models: modelsOf(cfg) };
const put = { provider, base_url: addressOf(cfg, provider), models: modelsOf(cfg) };
@@ -15,7 +15,7 @@ const FALLBACK_SITES = [
@@ -15,7 +15,7 @@ const FALLBACK_SITES = [
'https://openvibe.zone', 'https://openvibe.surf', 'https://openvibe.codes', 'https://openvibe.quest',
'https://openvibe.zone', 'https://openvibe.surf', 'https://openvibe.codes', 'https://openvibe.quest',
'https://openvibe.food', 'https://openvibe.rent', 'https://openvibe.homes', 'https://openvibe.watch',
'https://openvibe.food', 'https://openvibe.rent', 'https://openvibe.homes', 'https://openvibe.watch',
'https://openvibe.events', 'https://openre.stream', 'https://search.openvibe.network', 'https://openvibe.email',
'https://openvibe.events', 'https://openre.stream', 'https://search.openvibe.network', 'https://openvibe.email',
- 'https://node.openvibe.network', 'https://openvibe.website',
+ 'https://openvibe.link', 'https://openvibe.website',
];
];
let cachedSites = null;
let cachedSites = null;
let cachedAt = 0;
let cachedAt = 0;
new file mode 100644
new file mode 100644
@@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
+'use strict';
+const assert = require('node:assert/strict');
+const { spawnSync } = require('node:child_process');
+const path = require('node:path');
+const root = path.resolve(__dirname, '..');
+const oldName = ['OpenVibe[ .-]No' + 'de', 'openvibe-' + 'node', 'no' + 'd_', 'node[.]openvibe[.]network', 'node:lnk_', 'openvibe[.](bot|my|network)/mach' + 'ines'].join('|');
+const result = spawnSync('git', ['grep', '-n', '-I', '-i', '-E', oldName, '--', '.', ':!migrations/**', ':!test/link-brand.test.js'], { cwd: root, encoding: 'utf8' });
+assert.ok(result.status === 0 || result.status === 1, result.stderr || 'git grep failed');
+assert.equal(result.status, 1, `Old Link brand or principal returned:\n${(result.stdout || '').split('\n').slice(0, 10).join('\n')}`);
+console.log(' ok old Link brand and principal IDs are absent');