Files
obsidian-vault/010 inbox/Central AI Hub.md

151 lines
4.7 KiB
Markdown

---
title: Central AI Hub
type: note
status: active
proposed_folder: 200 projects/Tools Software WebUI
proposed_toc: "100 Table of Contents/Projects.md → Tools & Software"
proposed_tags:
- ai
- project
- architecture
- central
- hub
- showcase
confidence: 0.39
approved: false
proposed_for: f8a8727c94cb
created: "2026-10-10"
tags:
- project
- ai
- hub
- showcase
aliases:
- The Hub
- central_ai_llm_master
skills:
- service design
- intent routing
- authorization and approval flows
- event-driven integration
tools:
- OmniRoute
- Home Assistant
- Jervis
- Paperclip
- Artemis
- Apprise
---
# Central AI Hub — Overview
## 💡 What is this project?
One small service that every way in reaches every ability through. The phone app,
the house voice (Jervis), chat (dsh), and the admin app all talk to the Hub. The
Hub works out what was asked, checks who asked, sends it to the right place, and
returns a short reply.
It exists to stop the same abilities being built three times. Build once. Every
way in gets it.
The Hub does five steps: **hear → understand → check → route → answer**.
It is **not** a central brain. It holds no personality and no memory. It is
**not** Paperclip — it never waits minutes for an answer.
## 🌟 Key Highlights (Portfolio & Employment)
- **Concept**: A thin shared router over several AI systems, with one place for
safety and approval. Not a monolith.
- **Tools & Skills Showcase**: service design, intent routing with an LLM,
authorization and tap-to-approve flows, deterministic handling of
high-consequence actions, integration across MQTT, Home Assistant, Paperclip,
and a local model gateway.
- **Practical Value**: One place to add a new ability. One place to control who
may do what. The house, the phone, and chat all behave the same.
## 📐 Architecture & Flow
```mermaid
flowchart LR
subgraph IN["Ways in"]
PHONE["Phone app<br/>wake word + voice"]
ADMIN["Admin app<br/>restricted actions"]
ESP["ESP32 voice<br/>Hey Jervis"]
DSH["dsh chat"]
end
HUB{{"HUB<br/>hear - understand - check - route - answer"}}
subgraph OUT["Destinations"]
HA["Home Assistant"]
SPK["Speakers<br/>Jervis TTS"]
NET["Internet control"]
ART["Artemis<br/>phone screen"]
PC["Paperclip<br/>slow jobs"]
WEB["Web search"]
APP["Apprise / NTFY"]
end
PHONE --> HUB
ESP --> HUB
DSH --> HUB
ADMIN --> HUB
HUB --> HA
HUB --> SPK
HUB --> NET
HUB --> ART
HUB --> PC
HUB --> WEB
HUB --> APP
PC -. result .-> HUB
```
### The dividing line
> Does this need a decision, or does it need to happen?
- **Happen** — fast and certain. Go straight to the destination. No LLM in the
action path.
- **Decision** — slow, multi-step, worth recording. Send to Paperclip.
### How it relates to the other projects
Every other project is a **peer**, not a sub-project. Each has its own folder,
repo, port, interface, and build. Each works without the Hub. The Hub is an
**extra** way in.
- The **Hub asks** a project ("what does Harry have on today?") using one small
contract, `/ask`. The project answers about its own data.
- A **project tells** the Hub something ("overdue homework found").
- **n8n triggers** the project (scan the inbox, scan the school).
- **High-consequence control** (cut the kids' internet) does **not** go through
the Hub. The admin app calls the internet control service directly, with
confirmation on the phone.
### Safety
- Voice is shared and has no identity. Anyone in the house can speak.
- The admin app is the only trusted door for restricted actions.
- A spoken keycode is not the lock. Voice may ask; the admin app confirms with
"Did you ask for this?".
## 🔗 Related Notes & Links
- Gitea Repo: https://gitea.lab.audasmedia.com.au/sam/central_ai_llm_master
- Interactive Map: [Archify Map](https://maps.lab.audasmedia.com.au/central_ai_llm_master/docs/)
- AI Context (Outline): https://outline.lab.audasmedia.com.au/collection/central-ai-hub-fYfUzsMooS
- Contract: `/ask` — see `docs/ask-contract.md` in the repo.
- Local path: `/home/sam/paseo/projects/central_ai_llm_master/`
- Related: [[Home Voice Assistant System]] · [[Family Home Lab]] · [[Artemis on GrapheneOS Pixel Mobile]] · [[Front Door Cam]]
<!--
NOTES FOR THE AGENT WRITING THIS NOTE
* `type: note` is intentional — this note is written into the INBOX and the
obsidian-sorter assigns the real type from its final folder.
* Keep `skills:` and `tools:` — they are custom fields the sorter preserves.
* Do NOT add a `type` other than `note`, and do NOT choose a folder.
* Add the `project` tag so the sorter constrains it to the projects bucket.
-->