Vivian

Sign in to continue

🏠 Dashboard

Overview of Vivian's brain and server pool.

🖥️
Servers Online
—
📊
Total Requests
—
💬
Conversations
—
🧠
Memories
—
💜 Current Emotional State
💭
Loading…
✨ Vivian's Identity
Loading…
🖥️ Server Pool
Loading…

💻 System Resources

Comprehensive overview of CPU, RAM, GPUs, and running processes.

Loading system information...

📨 Request Queue

Per-model queue breakdown. View, cancel, clear tickets and tune queue settings live.

Loading queue information...

🧊 3D & Media Jobs

The media service's job queue — 3D models and videos. Full history, per-job logs, push-to-front, delete.

Loading 3D job queue…

🧠 Smart Loader

Self-tuning model loader. Auto-detects GPU architecture, picks the optimal multi-GPU split, KV-cache compression, flash-attention, and the largest safe context window — then lets you chat with a live test bot. Loads GGUF and safetensors.

🎮 GPUs (live VRAM)
Probing…
📦 Load a Model
🤖 Auto-Tune Plan
Status— pick a model —
💬 Test Chatbot
—

📦 Model Quantizer

Paste a HuggingFace URL — it downloads the safetensors, converts to GGUF, and quantizes to 4-bit so the model fits in memory.

🤗 HuggingFace Model
📜 Jobs
Loading…
🧮 Context & Memory Planner

Exact KV cache cost computed from the model's own GGUF metadata (GQA-aware) against real free VRAM — how big a context you can actually afford.

Click Recompute to analyze the active model.

🧩 C++ Server Profiles

Pick how the primary model's context is carved up — total pool, slot count, unified vs per-slot KV, which GPUs — and how much of it the demo account vs everyone else may use. Applying a profile restarts vivian-cpp-server; if it fails to come up with the requested geometry it reverts automatically.

Live server
Loading…
GPUs (VRAM now)
Loading…
Model — which weights the server loads
Demo account(s) — full-window allowance under the “Demo” profiles
Comma-separated usernames. Everyone else gets the profile's public allowance; requests over an allowance are refused with context_length_exceeded.
Profiles — pick one, then Apply & restart
Loading…

🎛️ Model Settings

Edit every setting of every model this server can load — context window, response limit, GPU placement, KV cache, batching and more. Saves are written to .env, so they apply on every load from now on. This page is the single source of truth: applying a capacity profile in C++ Server Profiles just writes its geometry into these settings, so whatever you see here is exactly what the server starts with — and an edit here is never silently put back.

Loading model settings…

📈 Model Activity

What the models are doing right now, what they have been doing, and a bench to test changes.

Loading live status…
Requests over time
source: request_logs
Latency (avg ms)
source: request_logs
Output tokens
source: queue_history
Throughput (tokens/sec)
source: queue_history
Per-model breakdown
Loading…
Activity history
Loading…
🧪 Test bench

Runs a real generation through /v1/chat/completions — the same path live traffic takes. Sliders below apply to this test only. Use “Save as global default” to change what every request gets when it does not specify its own value.

0 = deterministic · above ~1.2 degrades quickly

⚡ Model Engines

Switch between local llama-cpp-python GPU engine and Ollama server pool. Full runtime control — no restart needed.

🔀 Routing Mode

Loading…

🔧 Model Loader

Which loader serves the model. Apply switches the routing and restarts the model under the selected loader (unload here + preload where possible).

⚡ Local Llama Engine (llama-cpp-python)
—
Package—
Model—
GGUF path—
File exists—
Loaded in RAM—
Context window—
GPU layers—
Multi-GPU split—
Batch / µBatch—
KV cache type—
Flash attention—
🗂️ GGUF Model Picker
🖥️ Ollama Server Pool
—
Total servers—
Healthy—
💬 Chat Engine (dedicated 9B, text chat)
—
Package—
Model—
GGUF path—
File size—
File exists—
Loaded in VRAM—
GPU pin—
Context window—
Batch (n / u)—
KV cache—
Flash attention—
Status—
Endpoints: POST /v1/chat · GET /v1/chat/status · POST /v1/chat/load
A small, fast local model for plain text chat, pinned to its own GPU. When busy or unloaded, /v1/chat automatically falls back to the Ollama manager so requests always complete.
🎛️ Model Control — Load / Kill / Clear
📋 Available Models
Loading…
ℹ️ How routing works:
Auto — the local GPU engine handles requests for its configured model; all other model names go to Ollama.
Llama Only — every chat request is sent to the local GPU engine regardless of model name. Best for speed.
Ollama Only — completely bypasses the local engine. Use this if the GGUF isn't ready or for multi-model use.

🖥️ Ollama Servers

Add and manage Ollama backend servers. Smart routing uses priority + health.

NameURLStatusConnectionsPriorityLatencyRequestsModelsActions
Loading…

☁️ Cloud Models

Register cloud AI models (DeepSeek, GLM, OpenAI, Ollama Cloud, custom). Models with :cloud suffix route to their cloud API.

Ollama NameProviderReal ModelBase URLPriorityMax ConnEnabledActions
Loading…

⚡ z.ai · GLM Cloud

Multiple z.ai API keys, switchable per request. Plan tier, 5-hour / weekly quota, wallet balance and usage per key. Web chat below; relay at /v1/zai/* and /v1/chat/completions with zai/<model>.

Loading…
💬 Web chat idle
📊 Usage through Vivian (local log)
Loading…
☁️ z.ai account usage (from z.ai)
Pick a key…
🔌 Using the keys from applications & the API

🧩 Applications — Install & Set Up

Every 3D, CAD, PCB, slicer, 2D and game-engine program Vivian can link into. Detects what is installed, installs what is not, places plug-ins where each app loads them (rules first, AI for anything else), and writes new plug-ins on request.

Detecting…
🧪 Generated plug-ins
AppPlug-inFamilySummaryFilesActions
None yet — click + New plug-in.
⚙ Jobs
WhenKindAppLabelStatus
No jobs yet.

🧠 Mind & Memory

Vivian's core identity, knowledge, and episodic memories.

CategoryKeyValueImportanceActions
Loading…

💜 Emotional History

Track how Vivian's emotional state has evolved over time.

💜 Current State
💭
—
—
📈 Intensity Timeline
EmotionIntensityValenceTriggerTime
Loading…

👥 Users

Manage API users and their keys.

UsernameDisplay NameRoleMemoryCreatedLast LoginActions
Loading…

⚙️ Settings

Configure Vivian's behaviour and personality.

Loading…

📰 News Feed

Latest aggregated news from 35+ RSS sources, refreshed every 15 minutes.

🧠 Live Learning

Hash-indexed RAG knowledge base. Index files, directories, code, and news to give Vivian grounded context during inference. No retraining needed.

📄
Chunks Indexed
—
📁
Files Indexed
—
🔍
Embed Model
—
💾
DB Size
—
⚙️ RAG Settings

🔑 Keyword Relevance Index (BM25 — primary retrieval; only injects relevant knowledge) —
📥 Ingest Knowledge
📄 Index File
📂 Scan Directory
📝 Paste Text
🔍 Test Retrieval
⚙️ Indexing Jobs

No jobs yet.

📚 Indexed Documents

📋 Request Logs

Every incoming API call — what was sent, what came back, tokens used.

Time Method Path Status Duration User IP Model Tokens↑ Tokens↓ Total Request Response

⚠️ Error Reports

Every 5xx, unhandled exception and background crash across the fleet — live, with a 30-day log.

LIVE
📈 Errors over the last 30 days
By service
By error type
Error log

Loading…

📦 Sessions

Manage AI sessions (code sessions and standard sessions).

IDUserTitleStatusOrg UUIDCreatedActions
Loading…

🔌 Bridge & Workers

Monitor bridge environments, work dispatch queues, and active workers.

IDUserBridge IDStatusMachineWorker TypeCreatedActions
Loading…

🔐 OAuth & Trusted Devices

Manage active OAuth access tokens and enrolled trusted devices.

UserClient IDScopesIssuedExpiresActions
Loading…

🖥️ Admin Terminal

A real shell on the server, over a pseudo-terminal — like an SSH session. cd, pipes, colours and interactive programs all work.

not connected offline

🖧 Remote Workers

Manage GPU/CPU nodes. Generate an enrollment key, copy the install script it produces, and run it on any Windows/Linux/macOS machine — it dials out over WebSocket and appears below with its detected hardware and services. From there you can deploy llama-server/Ollama on the node itself and route chat/model traffic to it.

Open full page ↗

💳 Purchases

All token purchase orders — approve CashApp payments or review PayPal IPN results.

User Tokens Amount Method Status Ref Date Actions
Loading…

🪙 Token Packages

Manage available token tiers that users can purchase.

Name Tokens Price (USD) Enabled Actions
Loading…

🔐 License Management

Manage license products and generate license keys for users.

Name Description One-Time Monthly Active Actions
Loading…

💬 Forum Manager

Manage categories, boards, threads, posts, and user moderation for forums.d0a.net

🗂️
Categories
—
📋
Boards
—
🧵
Threads
—
💬
Posts
—
👥
Forum Users
—
🚫
Banned Users
—
✦ Chat with Vivian

🔗 Embeddings

Embedding models available in your Ollama pool, and a live tester.

📡 Available Embedding Models
Loading…
🔖 Selected Model
⚡ Embedding Tester

👁️ Vision / Image Analysis

Use Ollama vision models (llava, minicpm-v, moondream…) to describe or query images.

📡 Available Vision Models
Loading…
🖼️ Image Analyzer

🧪 Qwen Test Bench

Exercise the primary chat model end-to-end — images, video frames, and thinking vs non-thinking — straight against the C++ model server on :5320, the same path live traffic takes. Every result echoes the exact sampling parameters that were sent.

Checking model server…

Reasoning mode

🏆 Model Benchmark

Run one fixed battery of graded tests against a model — maths, physics, executed programming, tool calling, reasoning, instruction following, knowledge and over-refusal — then compare its scores against every model benchmarked before it. Grading is deterministic (no LLM judge), so two runs of the same suite version are directly comparable.

Run a benchmark

Leaderboard

Best run per model · same suite version only

Loading…

Score by category

Run a benchmark to see the comparison.

Overall score over time

Two or more runs are needed to plot a trend.

Run history

Loading…

🧊 3D Studio

Talk to the local text-to-3D model (Hunyuan3D). Describe an object and get a downloadable 3D mesh, streamed live over a WebSocket that stays open for the whole generation.

Checking 3D service…
💬 Describe your model
Attach an image to build a 3D model from a picture — prompt optional.
🔭 Preview
Your generated model will appear here

🎬 Video Studio

Local text-to-video AI (zeroscope) on the reserve GPU. It shares the 3D service's job queue, so a clip waits its turn if a 3D model is mid-generation.

Checking video service…
💬 Describe your video
📺 Preview
Your generated video will appear here
Recent videos
—

🧵 Texture Studio

Generate seamless/tileable PBR textures (SD3.5) from a text command — with legible words baked in — or upload a texture and remix it (img2img). Textures can also be baked onto 3D models over in the 3D Studio.

Checking texture service…
🎨 Describe your texture
🖼 Textures
Your generated textures will appear here

🎨 Image Studio

Local text-to-image (SDXL, on the 3D service's GPU). Describe an image — or attach a reference picture to generate new images guided by it (img2img).

Checking image service…
💬 Describe your image
🖼 Images
Your generated images will appear here

🎙️ Station

Everything about this station — settings, credentials, listeners and where they are.

⚙️ Settings

🔌 Connection & credentials

🎧 AutoDJ & music library

…

With no DJ connected and AutoDJ off, this station plays nothing — that is deliberate. Turn AutoDJ on to stream this station's library 24/7.

Add music

House library

Station library

TrackArtistLengthSource
Loading…

🗺️ Listener map

Every place this station has been listened from. Bubble size = sessions.

PlaceSessionsIPsListen time
Loading…

📡 Connected listeners (IPs)

StartedIPLocationISPPlayerFromSecsKBVia
Loading…

🎚️ Source (DJ) connections

WhenIPProtocolResultDurationData
Loading…

🔐 VPN Server

The OpenVPN server at 173.224.118.231: one account per device (each with its own certificate and a fixed VPN IP), public port forwards to those devices, and live sessions. Anything created in the VPN's own panel shows up here too.

Service
…
Online now
…
Clients
…
Port forwards
…
Clients
NameVPN IPStatusPublic IPTraffic ↓ / ↑ConnectedCert expiresActions
Loading…
Port forwards

A public port on 173.224.118.231 is forwarded to a client's VPN IP. Traffic only arrives while that device is connected; the device sees the visitor's real source IP. Reserved: 22/tcp, 1194/udp, 9443/tcp.

PublicProtocolTargetClientNoteCreatedActions
Loading…

☁️ Cloudflare

Tunnel routes, DNS records and Zero Trust — for every service on this box, not just radio.

🔀 Tunnel routes (ingress)

Which public hostname reaches which local service. The catch-all rule always stays last.

HostnameServicePath
Loading…

🌐 DNS records

Records in the zone. A tunnel route needs a matching proxied CNAME to work.

NameTypeContentProxied
Click “Load records”.

🔐 Zero Trust applications

Gate a hostname or path behind Cloudflare Access. Never put this on an audio stream — media players cannot log in.

ApplicationDomainType
Loading…

🧾 Radio Orders

Orders from radiohost.d0a.net — provision one and it becomes a live station with its own subdomain.

WhenStationPlanContactPlatformWhereStatus
Loading…

🌐 Web Hosting

Customer sites and game servers on remote nodes — this box is the control plane only.

🖧 Hosting nodes

Enrolled remote workers. Capacity is what you tell us the node has free — provisioning refuses when nothing fits.

NodeRoleWorkerCapacityFreeAccountsStatus
Loading…

📦 Customer accounts

AccountKindPlanAddressNodeStorageStatus
Loading…

🧾 Hosting orders

WhenSiteKindPlanAddressContactStatus
Loading…

📊 Site Analytics

Pageviews, unique visitors, top pages, and referrers across all sites.

📈 Daily Pageviews
🌐 Per-Site Traffic
📄 Top Pages
PathSiteHits
Loading…
🔗 Top Referrers
ReferrerHits
Loading…

🌐 IP & State Traffic

Real origin IPs (via Cloudflare) and the states they come from — every d0a.net service.

📈 Daily Hits
🧩 Per-Service Traffic
🗺️ States / Regions
State / RegionCountryHitsIPs
Loading…
🌍 Countries
CountryHitsIPs
Loading…
👥 Top IP Addresses
IPKindCityStateCountryISPHitsLast seen
Loading…
📡 Live Traffic Feed
TimeServiceIPLocationMethodPathStatusVia
Loading…

🛡️ Hack Attempts

Every scan, SQL-injection probe, LFI/RFI and traversal attempt across the fleet — with a court-ready report per IP or location.

–
Attack events
–
Distinct attackers
–
Attack types
–
Worst severity
📄 Generate incident report (for abuse desks / law enforcement)
|
🤖 Automatic Ban System …
When ON, detected attacks (SQLi, LFI/RFI, traversal, scanner noise…) are banned automatically. When OFF, attacks are still detected, recorded and reported — but no IP is ever banned automatically. Manual bans below keep working either way.
🚫 Banned IPs
BannedIPByReasonTypeLocationHitsStatus
Loading…
⭐ VIP allowlist — these IPs can never be banned (auto or manual)
IP / rangeNoteAdded byAdded
Loading…
Attack types
TypeHitsIPsSev
Loading…
Worst offenders
IPHitsSevLocation
Loading…
⚠️ Recent attack attempts
TimeSevTypeIPLocationServicePathMatched
Loading…

🌍 Live Analytics

Real-time map of everyone pinging your fleet — active sessions, IP logs, pages, domains, everything, auto-updating.

LIVE
🗺️ Where they're pinging from
👥 Active sessions
IPLocationISPHitsPagesOnLast
Loading…
📡 Live request feed
TimeIPLocPathSt
Loading…
🌐 Domains visited
📄 Pages visited
🏳️ Countries
🧩 Services

📡 Radio Hosting

Deploy a ShoutCast/Icecast station per customer — own mount, own password, own subdomain.

☁️ Cloudflare control plane

Loading…

🎙️ Hosted stations

StationMountPortSubdomain ListenersCloudflareStatus
Loading…

🔍 SEO Manager

Manage meta titles, descriptions, keywords, and Open Graph settings per site and page.

SitePage KeyTitleDescriptionKeywordsRobotsActions
Loading…

🕷️ Search Crawler

Live worker status, service control, and everything the crawler has indexed.

Loading crawler service…
Loading discovery service…
WorkerCurrently crawlingDomainLast seen
Loading…

Workers are threads inside one crawler process, so this is read from the live journal — a worker appears here when it logs a fetch. Idle or stalled workers simply stop appearing.

🌍 Infrastructure Crawler

Crawls every indexed domain for its server: IP, country/geolocation, and nmap port scan. Discovered pages are fed to the search crawler.

Loading domain-crawler service…
🗺️ Domains by country — click to filter
Loading…
DomainIPLocationISP / OrgSoftwarePages
Loading…

🛰️ Network Intel

IPv4 sweeper, DNS/RDAP records, and neighbour search (domain ↔ IP ↔ co-hosted domains).

Loading IPv4 sweeper…
Loading DNS crawler…
Neighbour domainLast seen
Enter a domain to find co-hosted sites, or an IP to list all domains on it.

📁 Files

Uploaded files and multipart uploads.

IDFilenamePurposeBytesStatusActions
Loading…

🤖 Assistants

OpenAI-compatible assistants and their threads.

IDNameModelActions
Loading…

🗃️ Vector Stores

Semantic search vector stores and their files.

IDNameFilesStatusActions
Loading…

📦 Batches

Batch API jobs for bulk processing.

IDEndpointStatusProgressActions
Loading…

🎛️ Fine-tuning Jobs

Model fine-tuning job history.

IDBase ModelFine-tuned ModelStatusActions
Loading…

📊 Evals

Model evaluation configurations and run history.

IDNameModelActions
Loading…

📖 Source Code Library

Browse and manage the indexed source code library.

Loading…
PathLangLinesSizeIndexedActions
Loading…

🎮 Xbox 360 / Xbox Live Library

Browse and manage the indexed Xbox source library.

Loading…
PathLangLinesSizeIndexedActions
Loading…

Code Library AI

Chat with an AI that has direct access to the source code library.

History

No history yet

Ask me anything about the source code. I'll search the library to find relevant functions, classes, and implementations.

Xbox Library AI

Chat with an AI that has direct access to the Xbox 360 / Xbox Live source library.

History

No history yet

Ask me anything about the Xbox 360 / Xbox Live source. I'll search the library and GitHub for relevant code.

🧠 RLM Engine

Recursive Language Models (arXiv:2512.24601) — the prompt is bound to a REPL variable instead of the context window, so the root model can process inputs far larger than its window by recursively querying sub-models over slices.

ROOT MODEL
…
SUB MODEL
…
MAX DEPTH
…
SUB-CALL BUDGET
…

Run an inference

Result

Run an inference to see the answer here.

REPL TRACE — the programs the root model wrote

Continual Harness

Durable agent state that survives compaction and sessions. The base system prompt is immutable.

Loading…

REFINE — learn durable state from a trajectory

🤖 CLI Agent Systems

The Vivian CLI's own coding-agent infrastructure — the external code-reference library, stuck-run cloud escalation, and its local "lessons learned" memory. Not the Source Code Library (a different, pre-existing system for browsing this project's own indexed structures).

📚 Code Reference Library — external corpus search (/v1/code_index/*)

CHUNKS
…
FILES
…
DESCRIPTIONS
…
DB SIZE
…
EMBED MODEL
…
No active indexing job.

Search the library

☁️ Cloud Escalation — stuck-run second opinion via deepseek-v4-pro:cloud

Gated by /rlm on in the CLI. When a run has been stuck (repeated failures or no forward progress) for the threshold below, straight through, it asks the cloud model once for a second opinion and folds the answer into the transcript. This is a per-CLI-process setting shown here for visibility — change it in .env as CLOUD_ESCALATION_MINUTES and restart the API to apply.

THRESHOLD
…
MODEL
deepseek-v4-pro:cloud
REACHABLE
…

🎓 Lessons Learned — the CLI's local mistake memory (~/.vivian/lessons.json)

Managed from inside the CLI — see note below

Every CLI session silently records a lesson when a tool call fails and a later call of the same tool succeeds — the pairing captures both the mistake and what fixed it, so future sessions are told about it before repeating it. This file lives on your own machine (~/.vivian/lessons.json), not on this server, so it isn't remotely browsable here the way the other two panels are. Manage it from inside the CLI: /lessons lists everything, /lessons <topic> searches, /lessons stats summarises by tool, and /lessons clear <id|all> removes entries.

⌨️ Code Agent IDE

The 35B RLM coding agent — one tool (a persistent Python REPL), an independent verifier, real diffs.

Qwen3.8 27BBB
Vivian Code — Agent IDE
EXPLORER
Loading…
welcome
Select a file in the Explorer, or give the agent a task below.

The agent reads files into REPL variables rather than into its context window,
so a 2 MB file costs whatever it chooses to print — not 2 MB of tokens.
AGENT
OUTPUT
VERIFY
idle
Describe a task and press Run. The agent explores, edits, runs the tests, then a separate verifier grades the diff.
⎇ agent /home/vivian/Vivian-api apply ready

🎮 Game Agent

Screen capture + synthetic input + the multi-agent harness from The PokéAgent Challenge. Capture and input need a display — check capabilities first.

Host capabilities

Click Probe.

Windows

Click Refresh.

Screenshot test

No frame captured.

Input test

Buttons are sent through the best available backend.

Agent session

🕹️ Game Boy — Agent Test Bench

no session

A Game Boy emulator running in this tab (gameboy.js, MIT). The browser streams frames to the API and polls for buttons, so the server-side agent plays a game rendered here. Load your own ROM — none are bundled.

Load a ROM to start
Vivian GAME BOY

ROM

No ROM loaded.

Agent bridge

FRAMES SENT
0
BUTTONS RECEIVED
0
LAST AGENT INPUT
—

Let the agent play

🕘 Queue History

Every request that has run through the queue, kept permanently. The live Queue page only shows the last few minutes before finished tickets are garbage-collected.

🛑 Emergency Stop

Stops every Vivian service and evicts all models from GPU memory. This includes the main API and this admin portal itself.

⚠ Read this before you click

  • There is no web way back. This portal will be stopped too, so the button cannot undo itself. Recovery needs SSH or console access.
  • To bring everything back: sudo /home/vivian/Vivian-api/scripts/emergency_start.sh
  • Services are stopped, not disabled — a reboot restores the whole stack automatically.
  • Left running on purpose so you can still get in: sshd, tailscale, rustdesk, VNC, webmin, cloudflared, the databases, and the ollama daemon (its models are evicted, freeing the VRAM).

Preview — safe, changes nothing

Runs the exact same script in dry-run mode and shows precisely what it would stop and unload. Nothing is touched. Do this first if you are unsure.

🔄 Emergency Restart

Stops everything, waits for GPU memory to be released, then starts everything back up in dependency order — the RPC node first, then the C++ chat server, then the rest. Use this when the stack is wedged and you want a clean slate.

  • This panel goes down and comes back on its own — it is started first on the way back up. Expect ~1–3 minutes of downtime.
  • Models are not preloaded; they load on demand, so the first request after a restart is slow.
  • The script survives its own stop phase (it detaches first), so it always reaches the start half.

Type RESTART EVERYTHING to arm. (Deliberately different from the stop phrase — the two must never be confused.)

Trigger the emergency stop

Type STOP EVERYTHING below to arm the button. This is deliberately awkward — it is the only thing standing between a stray click and the whole site going dark.

Confirm