cai-exos-systems/daveadmin-exos-demo:exosneeds/index.php
exosneeds/index.php
```text
<?php
declare(strict_types=1);
exosneeds/index.php and hourly GPU. Prove the agent loop before Azure.</h1> <p class="lead"> Assume EXOS has telecom skill, TM Forum knowledge, delivery discipline, and support, but no dedicated AI infrastructure for this project yet. The recommended first build is plain Qwen 7B, no tuning, no RAG, then the thesis evidence pattern as a controlled EXOS standards layer. </p> <div class="docs"> <a class="doc-link" href="overview.php">Overview</a> <a class="doc-link" href="architecture.php">Architecture</a> <a class="doc-link" href="infrastructure.php">Infrastructure</a> <a class="doc-link" href="pricing.php">Pricing</a> <a class="doc-link" href="questions.php">Questions</a> </div> </section> <section class="interactive" aria-label="Interactive sizing selector"> <aside class="control-panel"> <div class="eyebrow">Interactive Starter Sizing</div> <div class="control"> <label for="phase">Build phase</label> <select id="phase"> <option value="baseline">Baseline: Qwen 7B, no RAG</option> <option value="evidence">Controlled evidence layer</option> <option value="azure">Azure migration proof</option> </select> </div> <div class="control"> <label for="vps">VPS provider</label> <select id="vps"> <option value="hetzner">Hetzner</option> <option value="digitalocean">DigitalOcean</option> <option value="vultr">Vultr</option> </select> </div> <div class="control"> <label for="gpu">GPU provider</label> <select id="gpu"> <option value="simplepod">SimplePod-style RTX 4090</option> <option value="runpod">RunPod RTX 4090</option> <option value="vast">Vast.ai RTX 4090</option> </select> </div> <div class="control"> <label for="hours">GPU hours per month</label> <div class="range-row"> <input id="hours" type="range" min="0" max="160" value="40" step="5"> <strong id="hoursOut">40 h</strong> </div> </div> </aside> <div class="output-panel"> <h2 class="rec-title" id="recTitle">Baseline EXOS demo lane</h2> <p id="recCopy">Start with plain Qwen 7B and visible tool traces. Add evidence only after the outcome loop works.</p> <div class="rec-grid"> <div class="rec-box"><span>VPS</span><b id="vpsRec">Hetzner CPX31/CX42</b><p id="vpsCost">$18-$35/mo planning range</p></div> <div class="rec-box"><span>GPU</span><b id="gpuRec">RTX 4090</b><p id="gpuCost">$9.20 estimated at 40h</p></div> <div class="rec-box"><span>Total</span><b id="totalCost">$27-$75/mo</b><p>Before Azure, backups, and support time.</p></div> </div> <div class="checklist" aria-label="Clarifying questions"> <label class="check-item"><input type="checkbox"> EXOS owns the VPS account</label> <label class="check-item"><input type="checkbox"> EXOS owns the GPU rental account</label> <label class="check-item"><input type="checkbox"> Baseline can be Qwen 7B only</label> <label class="check-item"><input type="checkbox"> Quote-to-order is the first TM Forum flow</label> <label class="check-item"><input type="checkbox"> Evidence layer may index public TM Forum docs</label> <label class="check-item"><input type="checkbox"> Azure target prefers Copilot Studio</label> </div> </div> </section> <section class="grid" aria-label="Recommended starting stack"> <article class="card"> <span class="tag">GPU Start</span> <span class="price">$0.23-$0.40/hr</span> <h2>SimplePod-style RTX 4090</h2> <p>Use hourly rental for Qwen 7B and Qwen 14B experiments. Start it only when developing or demoing. Keep inference private over VPN or IP allowlist.</p> </article> <article class="card"> <span class="tag">VPS Start</span> <span class="price">$18-$50/mo</span> <h2>Hetzner First, DO/Vultr Alternatives</h2> <p>Run the always-on control plane: PHP app, BSS demo data, Directus, OPA, Qdrant, workflow automation, traces, and backups.</p> </article> <article class="card"> <span class="tag">Azure Target</span> <span class="price">After proof</span> <h2>Container Apps, Key Vault, Monitor</h2> <p>Move to Azure when the agent flow is validated. Use Azure-native governance, observability, managed databases, and Copilot Studio/AI Foundry where it fits.</p> </article> </section>
exosneeds/index.php inference private over VPN or IP allowlist.</p> </article> <article class="card"> <span class="tag">VPS Start</span> <span class="price">$18-$50/mo</span> <h2>Hetzner First, DO/Vultr Alternatives</h2> <p>Run the always-on control plane: PHP app, BSS demo data, Directus, OPA, Qdrant, workflow automation, traces, and backups.</p> </article> <article class="card"> <span class="tag">Azure Target</span> <span class="price">After proof</span> <h2>Container Apps, Key Vault, Monitor</h2> <p>Move to Azure when the agent flow is validated. Use Azure-native governance, observability, managed databases, and Copilot Studio/AI Foundry where it fits.</p> </article> </section> <section class="wide"> <h2>How The Current Demo Gets Results</h2> <p>The result is not only an LLM completion. It is a visible BSS outcome trace, then Qwen synthesis over that trace.</p> <div class="flow"> <div class="step"><b>1. Sense</b>Read prompt, customer, account, mode.</div> <div class="step"><b>2. BSS</b>Read FOSSBilling customer, invoices, orders, tickets.</div> <div class="step"><b>3. Catalog</b>Read product offerings and selected SKUs.</div> <div class="step"><b>4. Policy</b>OPA decides allowed, blocked, or human gate.</div> <div class="step"><b>5. Evidence</b>Standards evidence maps actions to TM Forum APIs.</div> <div class="step"><b>6. Act</b>Provision, entitle, ticket, then explain the trace.</div> </div> </section> <section class="wide"> <h2>Install From Zero</h2> <table> <thead><tr><th>Layer</th><th>Install</th><th>Reason</th></tr></thead> <tbody> <tr><td>VPS</td><td>Ubuntu 24.04, Docker Compose, Nginx/Caddy, PHP 8.3/8.4, MariaDB/PostgreSQL, Redis</td><td>Always-on demo and API control plane.</td></tr> <tr><td>BSS tools</td><td>FOSSBilling, Directus, OPA, n8n or Logic Apps-compatible workflow definitions</td><td>Gives the agent real tools and state instead of pure chat.</td></tr> <tr><td>Observability</td><td>Langfuse or OpenTelemetry, structured run logs, backups</td><td>Shows what happened, what tools were called, and why.</td></tr> <tr><td>GPU</td><td>RTX 4090 pod, Ollama or vLLM, Qwen 7B</td><td>Cheap development inference without buying hardware.</td></tr> <tr><td>Evidence phase</td><td>Qdrant, embedding model, ingestion jobs, validation runner</td><td>Adds the thesis system's source locking and scoring after baseline works.</td></tr> </tbody> </table> </section> <section class="wide warn"> <h2>Important Naming</h2> <p> For EXOS-facing demos, do not call the duplicated evidence system CaveauAI. Call it the EXOS controlled evidence layer, EXOS standards evidence layer, or EXOS agent validation layer. The starting baseline is plain Qwen 7B with no RAG and no fine-tuning. </p> </section>
exosneeds/index.php 7B</td><td>Cheap development inference without buying hardware.</td></tr> <tr><td>Evidence phase</td><td>Qdrant, embedding model, ingestion jobs, validation runner</td><td>Adds the thesis system's source locking and scoring after baseline works.</td></tr> </tbody> </table> </section> <section class="wide warn"> <h2>Important Naming</h2> <p> For EXOS-facing demos, do not call the duplicated evidence system CaveauAI. Call it the EXOS controlled evidence layer, EXOS standards evidence layer, or EXOS agent validation layer. The starting baseline is plain Qwen 7B with no RAG and no fine-tuning. </p> </section> <section class="wide"> <h2>Source Links</h2> <p> EXOS public direction: <a href="https://www.exos-systems.com/">exos-systems.com</a>. GPU pricing sources include <a href="https://simplepod.ai/blog/cloud-gpu-pricing/">SimplePod</a>, <a href="https://simplepod.ai/blog/why-renting-cloud-gpus-is-better-than-buying/">SimplePod rental rationale</a>, and current provider consoles. VPS pricing sources include <a href="https://www.hetzner.com/cloud/regular-performance">Hetzner</a>, <a href="https://www.digitalocean.com/pricing/droplets">DigitalOcean</a>, and <a href="https://www.vultr.com/pricing/">Vultr</a>. Azure sizing references: <a href="https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/gpu-accelerated/ncast4v3-series">NCasT4_v3</a> and the <a href="https://learn.microsoft.com/en-us/rest/api/cost-management/retail-prices/azure-retail-prices">Azure Retail Prices API</a>. </p> </section> </main> <script> const pricing = { vps: { hetzner: {label: 'Hetzner CPX31/CX42', low: 18, high: 35, note: 'Best price/performance for the first EU-friendly dev lane.'}, digitalocean: {label: 'DigitalOcean 4vCPU/8GB', low: 48, high: 63, note: 'Predictable UI and billing, higher monthly baseline.'}, vultr: {label: 'Vultr 4vCPU/8GB', low: 48, high: 72, note: 'Comparable VPS alternative with global regions.'} }, gpu: { simplepod: {label: 'SimplePod-style RTX 4090', rate: 0.23, note: 'Lowest cited starting point; confirm current stock/pricing.'}, runpod: {label: 'RunPod RTX 4090', rate: 0.34, note: 'Known GPU-cloud alternative for repeatable demos.'}, vast: {label: 'Vast.ai RTX 4090', rate: 0.27, note: 'Cheapest marketplace-style experiments; reliability varies.'} }, phase: { baseline: { title: 'Baseline EXOS demo lane', copy: 'Plain Qwen 7B, no RAG, no fine-tuning. Prove tool calling, policy, BSS state, and audit trace first.' }, evidence: { title: 'Controlled evidence layer lane', copy: 'Add Qdrant, embeddings, indexed TM Forum/EXOS documents, pinned evidence, and scoring after the baseline works.' }, azure: { title: 'Azure migration proof lane', copy: 'Map the proven stack to Azure Container Apps/AKS, Key Vault, Azure Monitor, managed databases, and Copilot Studio.' } } }; function money(value) { return '$' + value.toFixed(value >= 100 ? 0 : 2).replace(/\.00$/, ''); } function renderSizing() { const phase = pricing.phase[document.getElementById('phase').value]; const vps = pricing.vps[document.getElementById('vps').value]; const gpu = pricing.gpu[document.getElementById('gpu').value]; const hours = Number(document.getElementById('hours').value); const gpuTotal = hours * gpu.rate; document.getElementById('hoursOut').textContent = hours + ' h'; document.getElementById('recTitle').textContent = phase.title; document.getElementById('recCopy').textContent = phase.copy; document.getElementById('vpsRec').textContent = vps.label; document.getElementById('vpsCost').textContent = `${money(vps.low)}-${money(vps.high)}/mo. ${vps.note}`; document.getElementById('gpuRec').textContent = gpu.label; document.getElementById('gpuCost').textContent = `${money(gpuTotal)} estimated at ${hours}h. ${gpu.note}`; document.getElementById('totalCost').textContent = `${money(vps.low + gpuTotal)}-${money(vps.high + gpuTotal)}/mo`; } ['phase','vps','gpu','hours'].forEach(id => document.getElementById(id).addEventListener('input', renderSizing)); renderSizing(); </script> </body> </html> ```
exosneeds/index.php and hourly GPU. Prove the agent loop before Azure.</h1> <p class="lead"> Assume EXOS has telecom skill, TM Forum knowledge, delivery discipline, and support, but no dedicated AI infrastructure for this project yet. The recommended first build is plain Qwen 7B, no tuning, no RAG, then the thesis evidence pattern as a controlled EXOS standards layer. </p> <div class="docs"> <a class="doc-link" href="overview.php">Overview</a> <a class="doc-link" href="architecture.php">Architecture</a> <a class="doc-link" href="infrastructure.php">Infrastructure</a> <a class="doc-link" href="pricing.php">Pricing</a> <a class="doc-link" href="questions.php">Questions</a> </div> </section> <section class="interactive" aria-label="Interactive sizing selector"> <aside class="control-panel"> <div class="eyebrow">Interactive Starter Sizing</div> <div class="control"> <label for="phase">Build phase</label> <select id="phase"> <option value="baseline">Baseline: Qwen 7B, no RAG</option> <option value="evidence">Controlled evidence layer</option> <option value="azure">Azure migration proof</option> </select> </div> <div class="control"> <label for="vps">VPS provider</label> <select id="vps"> <option value="hetzner">Hetzner</option> <option value="digitalocean">DigitalOcean</option> <option value="vultr">Vultr</option> </select> </div> <div class="control"> <label for="gpu">GPU provider</label> <select id="gpu"> <option value="simplepod">SimplePod-style RTX 4090</option> <option value="runpod">RunPod RTX 4090</option> <option value="vast">Vast.ai RTX 4090</option> </select> </div> <div class="control"> <label for="hours">GPU hours per month</label> <div class="range-row"> <input id="hours" type="range" min="0" max="160" value="40" step="5"> <strong id="hoursOut">40 h</strong> </div> </div> </aside> <div class="output-panel"> <h2 class="rec-title" id="recTitle">Baseline EXOS demo lane</h2> <p id="recCopy">Start with plain Qwen 7B and visible tool traces. Add evidence only after the outcome loop works.</p> <div class="rec-grid"> <div class="rec-box"><span>VPS</span><b id="vpsRec">Hetzner CPX31/CX42</b><p id="vpsCost">$18-$35/mo planning range</p></div> <div class="rec-box"><span>GPU</span><b id="gpuRec">RTX 4090</b><p id="gpuCost">$9.20 estimated at 40h</p></div> <div class="rec-box"><span>Total</span><b id="totalCost">$27-$75/mo</b><p>Before Azure, backups, and support time.</p></div> </div> <div class="checklist" aria-label="Clarifying questions"> <label class="check-item"><input type="checkbox"> EXOS owns the VPS account</label> <label class="check-item"><input type="checkbox"> EXOS owns the GPU rental account</label> <label class="check-item"><input type="checkbox"> Baseline can be Qwen 7B only</label> <label class="check-item"><input type="checkbox"> Quote-to-order is the first TM Forum flow</label> <label class="check-item"><input type="checkbox"> Evidence layer may index public TM Forum docs</label> <label class="check-item"><input type="checkbox"> Azure target prefers Copilot Studio</label> </div> </div> </section> <section class="grid" aria-label="Recommended starting stack"> <article class="card"> <span class="tag">GPU Start</span> <span class="price">$0.23-$0.40/hr</span> <h2>SimplePod-style RTX 4090</h2> <p>Use hourly rental for Qwen 7B and Qwen 14B experiments. Start it only when developing or demoing. Keep inference private over VPN or IP allowlist.</p> </article> <article class="card"> <span class="tag">VPS Start</span> <span class="price">$18-$50/mo</span> <h2>Hetzner First, DO/Vultr Alternatives</h2> <p>Run the always-on control plane: PHP app, BSS demo data, Directus, OPA, Qdrant, workflow automation, traces, and backups.</p> </article> <article class="card"> <span class="tag">Azure Target</span> <span class="price">After proof</span> <h2>Container Apps, Key Vault, Monitor</h2> <p>Move to Azure when the agent flow is validated. Use Azure-native governance, observability, managed databases, and Copilot Studio/AI Foundry where it fits.</p> </article> </section>
exosneeds/index.php inference private over VPN or IP allowlist.</p> </article> <article class="card"> <span class="tag">VPS Start</span> <span class="price">$18-$50/mo</span> <h2>Hetzner First, DO/Vultr Alternatives</h2> <p>Run the always-on control plane: PHP app, BSS demo data, Directus, OPA, Qdrant, workflow automation, traces, and backups.</p> </article> <article class="card"> <span class="tag">Azure Target</span> <span class="price">After proof</span> <h2>Container Apps, Key Vault, Monitor</h2> <p>Move to Azure when the agent flow is validated. Use Azure-native governance, observability, managed databases, and Copilot Studio/AI Foundry where it fits.</p> </article> </section> <section class="wide"> <h2>How The Current Demo Gets Results</h2> <p>The result is not only an LLM completion. It is a visible BSS outcome trace, then Qwen synthesis over that trace.</p> <div class="flow"> <div class="step"><b>1. Sense</b>Read prompt, customer, account, mode.</div> <div class="step"><b>2. BSS</b>Read FOSSBilling customer, invoices, orders, tickets.</div> <div class="step"><b>3. Catalog</b>Read product offerings and selected SKUs.</div> <div class="step"><b>4. Policy</b>OPA decides allowed, blocked, or human gate.</div> <div class="step"><b>5. Evidence</b>Standards evidence maps actions to TM Forum APIs.</div> <div class="step"><b>6. Act</b>Provision, entitle, ticket, then explain the trace.</div> </div> </section> <section class="wide"> <h2>Install From Zero</h2> <table> <thead><tr><th>Layer</th><th>Install</th><th>Reason</th></tr></thead> <tbody> <tr><td>VPS</td><td>Ubuntu 24.04, Docker Compose, Nginx/Caddy, PHP 8.3/8.4, MariaDB/PostgreSQL, Redis</td><td>Always-on demo and API control plane.</td></tr> <tr><td>BSS tools</td><td>FOSSBilling, Directus, OPA, n8n or Logic Apps-compatible workflow definitions</td><td>Gives the agent real tools and state instead of pure chat.</td></tr> <tr><td>Observability</td><td>Langfuse or OpenTelemetry, structured run logs, backups</td><td>Shows what happened, what tools were called, and why.</td></tr> <tr><td>GPU</td><td>RTX 4090 pod, Ollama or vLLM, Qwen 7B</td><td>Cheap development inference without buying hardware.</td></tr> <tr><td>Evidence phase</td><td>Qdrant, embedding model, ingestion jobs, validation runner</td><td>Adds the thesis system's source locking and scoring after baseline works.</td></tr> </tbody> </table> </section> <section class="wide warn"> <h2>Important Naming</h2> <p> For EXOS-facing demos, do not call the duplicated evidence system CaveauAI. Call it the EXOS controlled evidence layer, EXOS standards evidence layer, or EXOS agent validation layer. The starting baseline is plain Qwen 7B with no RAG and no fine-tuning. </p> </section>
exosneeds/index.php 7B</td><td>Cheap development inference without buying hardware.</td></tr> <tr><td>Evidence phase</td><td>Qdrant, embedding model, ingestion jobs, validation runner</td><td>Adds the thesis system's source locking and scoring after baseline works.</td></tr> </tbody> </table> </section> <section class="wide warn"> <h2>Important Naming</h2> <p> For EXOS-facing demos, do not call the duplicated evidence system CaveauAI. Call it the EXOS controlled evidence layer, EXOS standards evidence layer, or EXOS agent validation layer. The starting baseline is plain Qwen 7B with no RAG and no fine-tuning. </p> </section> <section class="wide"> <h2>Source Links</h2> <p> EXOS public direction: <a href="https://www.exos-systems.com/">exos-systems.com</a>. GPU pricing sources include <a href="https://simplepod.ai/blog/cloud-gpu-pricing/">SimplePod</a>, <a href="https://simplepod.ai/blog/why-renting-cloud-gpus-is-better-than-buying/">SimplePod rental rationale</a>, and current provider consoles. VPS pricing sources include <a href="https://www.hetzner.com/cloud/regular-performance">Hetzner</a>, <a href="https://www.digitalocean.com/pricing/droplets">DigitalOcean</a>, and <a href="https://www.vultr.com/pricing/">Vultr</a>. Azure sizing references: <a href="https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/gpu-accelerated/ncast4v3-series">NCasT4_v3</a> and the <a href="https://learn.microsoft.com/en-us/rest/api/cost-management/retail-prices/azure-retail-prices">Azure Retail Prices API</a>. </p> </section> </main> <script> const pricing = { vps: { hetzner: {label: 'Hetzner CPX31/CX42', low: 18, high: 35, note: 'Best price/performance for the first EU-friendly dev lane.'}, digitalocean: {label: 'DigitalOcean 4vCPU/8GB', low: 48, high: 63, note: 'Predictable UI and billing, higher monthly baseline.'}, vultr: {label: 'Vultr 4vCPU/8GB', low: 48, high: 72, note: 'Comparable VPS alternative with global regions.'} }, gpu: { simplepod: {label: 'SimplePod-style RTX 4090', rate: 0.23, note: 'Lowest cited starting point; confirm current stock/pricing.'}, runpod: {label: 'RunPod RTX 4090', rate: 0.34, note: 'Known GPU-cloud alternative for repeatable demos.'}, vast: {label: 'Vast.ai RTX 4090', rate: 0.27, note: 'Cheapest marketplace-style experiments; reliability varies.'} }, phase: { baseline: { title: 'Baseline EXOS demo lane', copy: 'Plain Qwen 7B, no RAG, no fine-tuning. Prove tool calling, policy, BSS state, and audit trace first.' }, evidence: { title: 'Controlled evidence layer lane', copy: 'Add Qdrant, embeddings, indexed TM Forum/EXOS documents, pinned evidence, and scoring after the baseline works.' }, azure: { title: 'Azure migration proof lane', copy: 'Map the proven stack to Azure Container Apps/AKS, Key Vault, Azure Monitor, managed databases, and Copilot Studio.' } } }; function money(value) { return '$' + value.toFixed(value >= 100 ? 0 : 2).replace(/\.00$/, ''); } function renderSizing() { const phase = pricing.phase[document.getElementById('phase').value]; const vps = pricing.vps[document.getElementById('vps').value]; const gpu = pricing.gpu[document.getElementById('gpu').value]; const hours = Number(document.getElementById('hours').value); const gpuTotal = hours * gpu.rate; document.getElementById('hoursOut').textContent = hours + ' h'; document.getElementById('recTitle').textContent = phase.title; document.getElementById('recCopy').textContent = phase.copy; document.getElementById('vpsRec').textContent = vps.label; document.getElementById('vpsCost').textContent = `${money(vps.low)}-${money(vps.high)}/mo. ${vps.note}`; document.getElementById('gpuRec').textContent = gpu.label; document.getElementById('gpuCost').textContent = `${money(gpuTotal)} estimated at ${hours}h. ${gpu.note}`; document.getElementById('totalCost').textContent = `${money(vps.low + gpuTotal)}-${money(vps.high + gpuTotal)}/mo`; } ['phase','vps','gpu','hours'].forEach(id => document.getElementById(id).addEventListener('input', renderSizing)); renderSizing(); </script> </body> </html> ```