⚙️

SmithBuddy Admin

Family management

Family Members

Activate Member

Households

Each Portal serves one household. Grouping members by home lets voice-ID (coming) tell apart just that home's few voices.

Global Settings

System-wide defaults that apply to all family members.

Topic Suggestions

When enabled, SmithBuddy will suggest starting a new chat when the conversation topic changes significantly. This helps keep conversations organized and focused.

Chat Provider (A/B test)

Which model answers regular family chat. Local uses your own GPUs (fully private). Cloud options are faster but send the prompt — including any injected family context — to that provider. Falls back to Local automatically if the cloud provider errors. Dev Mode & vision are unaffected. Takes effect on the next message; no redeploy.

Context Compression

Compress the RAG knowledge + large tool outputs injected into the chat prompt (web search, logs, GitHub/email digests) via headroom before the model sees them — 60–95% fewer tokens, faster first reply, fully local. Never touches your actual message or family-memory facts. Takes effect on the next message; no redeploy.

Voice Library

Press to record a voice sample (5–30 sec ideal)
0:00
These are the raw recordings SB clones from. Play plays the original clip you recorded — not synthesized speech. To hear a voice actually speaking as SB, use a persona's preview in the Persona Studio below.

Persona Studio

Every persona in one place — built-in presets, your custom personalities and Living Personas. Click a row to edit its name, style, voice and tuning. Voice previews match chat exactly (WYSIWYG).

Persona Routing

Pick which persona answers each capability — a weather question can be read by a weather-presenter persona, the headlines by a news-anchor persona. Unmapped capabilities keep the member's own persona and voice. The routed persona's facts always stay exact: it reads the real forecast/headlines, it doesn't invent them.

Loading…

Intelligence Tiers

Family Shorthand

Internal compression codes learned from family conversation patterns — used automatically to reduce LLM token usage.

Voice Pronunciations

How the voice should say tricky names. The spelling stays the same in chat and memory — only the spoken audio changes (e.g. Kaid → Kade).

Family Behavior & Tone

Free-text notes folded straight into SmithBuddy's personality — teach it each grandkid's "in-trouble" name, nicknames, inside jokes, or how to treat each person. Saved instantly; affects every new conversation.

Per-Member Character Voice

Give each family member a distinct persona. Applies to their next message. (This was blank for everyone — the self-serve setting only set your own, so the kids had none.)

Loading…

Coding Engine — Hermes

Pluggable LLM provider registry — add any OpenAI- or Anthropic-compatible endpoint. The API key is written straight to Vaultwarden (encrypted at rest); the DB stores only the key name. The raw key is never shown — only the last 4 characters.

Active coder model
The model the coder escalation pipeline uses. Drawn from enabled providers' models.

Fleet Router — Models & Failover

The fleet-router service routes each function (chat, coder.code, …) across a pool of backends and fails over top-down on error. Define backends once in the registry, then drag-reorder each function's chain. Changes hot-reload within ~30s — no restart. The API key itself lives in Vaultwarden; the registry stores only the secret name.

Model registry
IDStatusBase URLModelAuthKey ref
Failover routes

Drag a step to reorder. Step 1 is tried first; the rest are fallbacks.

Knowledge Base

GitHub (feature requests / backlog)
Lets the family file feature requests / bugs straight to the GitHub backlog from chat.

Orb Photo Viewer

The full-screen orb photo viewer. Set how long each photo shows before auto-advancing, and review photos the family marked for deletion. “Marked” is a soft flag only — confirming here moves one to the Immich trash (recoverable); family photos are never auto-deleted.
⏱️ Slideshow auto-advance
seconds per photo (default 10)
▶ 🖼️ Hidden photos ↩︎ put back · 🗑 trash
↩︎ puts a photo back in the library and the slideshow. 🗑 moves it to the Immich trash, where it is still recoverable.
▶🧹 Suggested to hide
Screenshots, receipts and listings. Family history (Ancestry, obituaries, certificates) and anything showing people are left out on purpose. Untick anything you want to keep — everything hidden can be put back.
Loading…

Forever Memory

The buddy's persistent memory. Proactive recall auto-injects the top match into every chat; use reactive search to query on demand. Share a memory with one member, several, or the whole family.
🔍 Reactive search
➕ Remember something
▶All memories

Scenario Blocks

Scene-level summaries that cluster related atomic facts into a drill-downable "what happened around X." Click a block to expand its source facts. Build them with Re-cluster (or enable MEMORY_L2_ENABLED for the background job).

Skills

Capabilities SmithBuddy can use — tools it calls, voice routines, scheduled automations, and skill packs. Enable each, scope it to family members, and configure its trigger or endpoint. Skills that call an external service reuse an Integration's credentials. Coder-built tools are PR-gated.

Connected Accounts

Connect Google or Apple accounts so SmithBuddy can access mail, calendar, and files, or link Karakeep so it can search your saved bookmarks. Each family member can connect multiple accounts.

Email (SMTP)

Used to send invite emails to family members. For Gmail, use an App Password (not your normal password).

Automation (n8n)

Connect your n8n so SmithBuddy can list, run, and draft workflows. Create a key in n8n → Settings → n8n API → Create an API key. Drafted workflows are always created inactive for you to review and turn on.

Spotify (music)

Lets SmithBuddy know the family's music taste. Create an app at the Spotify Developer Dashboard, add the redirect URI shown below to it, and paste the Client ID + Secret. Then each family member clicks + Connect Spotify above to link their own account.

Redirect URI to add in your Spotify app:

Home Assistant

Let SmithBuddy check and control your smart home from chat ("turn off the kitchen lights", "is the front door locked?"). In Home Assistant: your Profile → Long-Lived Access Tokens → Create Token, then paste it here with your HA URL.

AI Tools

Enable or disable the tools SmithBuddy can use during chat. Add custom tools that call your own webhooks (e.g. n8n workflows).

API Keys & Integrations

Paste an API key into a card to save it to VaultWarden and apply it live — no SSH, no restart. Keys are write-only (shown as “•••• set”, never echoed back). Use Test to ping a service.

GPU Monitor

Loading...

🧭 Model Map

Every external dependency, rendered from the last self-check. Statuses that mean different failures (MODEL MISSING vs UNAUTHORIZED vs UNREACHABLE) are kept visually distinct.

✨ What's New

Recently-closed GitHub issues, grouped by label. 🌙 filed autonomously when the coder queue was empty.

Fleet Architecture

Open full view ↗

🎚 Voice Models

Select which model each voice service runs. The chosen model is written to the service's compose .env and takes effect after a restart — the panel says so, it never claims the model is already loaded.

Loading...

🧾 Coder Pipeline & Cost

Live status of the coder run queue, per-issue / per-stage / per-model spend, and the authoritative provider balance reconciled against the local cost log. Missing data shows as “no data”, never $0.00.
Provider Balance — authoritative
Reconciliation — logged vs provider-reported spend
Current run
Queue
Recent completions
Failures
Per-issue cost
Per-stage spend
Per-model spend
Cache-hit ratio
Peak / off-peak split
Recent log tail
Push token (coder cron pusher)
Coder pipeline roles & active profile
Every pipeline stage maps to one model. The active profile groups profiles whose role→model assignments the harness reads (see /root/coder/pipeline-config.py). Pick a profile, edit its per-role assignments below, then save — the whole config is validated up front and written atomically. Missing data shows as “—”, never a guessed default.