configuration and operations · no model runtime

ai-gateway

One local address for the models in a home AI lab. Chat apps and coding agents use this one address, not five different API addresses.

History Analyst · added in v0.3.0

Ask about every session you have ever run. Answered locally, with receipts.

History Analyst: one Open WebUI preset over the whole agent session archive. Claude Code, Codex, Grok, ChatGPT, shell and browser history, cited by session ID.

Every memory layer before this saw one agent or one repo. The missing piece was a single place that reads all of it, searches it by meaning and by exact name or date, cites the session it came from, and never leaves the house.

Open WebUI preset → AgentsView MCP (every session) + Hister MCP (browser/shell) → Headroom → LiteLLM → local model on Ollama · knowledge embedded with bge-m3, hybrid BM25 + vector

All session history, one index

AgentsView already archives every CLI agent into Postgres. A read-only MCP sidecar lets the chat model list, search and open sessions itself. Titles and IDs first, small message pages second, never a bulk transcript dump.

Local embeddings, context search

Knowledge collections are embedded with bge-m3 on local Ollama, and search is hybrid: vectors find meaning, BM25 finds the exact name, number or date that vectors miss.

Expanded context, complete answers

The answering worker runs at a 128k context on a 16 GB card. At 32k a 74-item answer ran out of room; at 128k it finishes on its own, and every session ID it cites is real.

Private by routing, not by promise

Sensitive history routes to a local-only worker that never falls back to a cloud model. Embeddings, telemetry and logs stay on your own machines. Digests carry IDs and titles, not transcripts.

the door

Clients talk to Headroom. Headroom talks to LiteLLM. LiteLLM fans out.

Default path is thrifty. Raw LiteLLM is still there when you mean to bypass. Fail-open: if a guard is down, the request still goes through.

thrift

Headroom

The first stop for requests. It makes long context smaller, records spend and passes requests through if it fails. A long agent session cannot send a very large context to a paid model by accident.

github.com/chopratejas/headroom →
bus

LiteLLM

The OpenAI-compatible bus. Aliases in, provider call out, tokens and dollars logged. Local Ollama, host workers, and cloud sit behind the same shape.

github.com/BerriAI/litellm →
catalog

OpenRouter

The cheap/free cloud scout lane. Catalog sync keeps a living list of free models so recon work does not have to burn a frontier key.

openrouter.ai →
builder + model

Grok / xAI

In the lab as a model, and in the git log as a builder. Grok chats, grok.com history, and Grok Build helped stand this door up — then aimed themselves at it.

x.ai · Grok Build →
agent memory

hippo-memory

Per-repo .hippo/ store via MCP. Agents remember and recall in the same place, so switching Claude Code → Grok Build → Codex is a handoff, not a reset. Not botmem (life memory).

github.com/kitfunso/hippo-memory →
project memory

PMB

Indexes the project’s own code and docs. Recall returns the relevant slice so a new session does not re-paste the whole history. Local embeddings. Pin the workspace or it can bleed across projects.

github.com/pmb-ai/pmb →

around the door

Chat, search, life memory, placement, session index

Same lab, different jobs. AgentsView is a standalone stack on purpose — the index should survive a LiteLLM outage.

session index

AgentsView

24/7 archive of CLI-agent sessions, now with a read-only MCP sidecar the History Analyst queries directly. IDs and titles first — never a bulk transcript reload. Own compose file, own Postgres.

deploy/agentsview →
chat UI

Open WebUI

Browser chat pointed at Headroom (or a LiteLLM bypass). Where grok.com history and Grok Build sessions land after import.

github.com/open-webui/open-webui →
search

Hister

Local search over browser corpus, shell history, and session notes. Profile search. Not a cloud index.

github.com/asciimoo/hister →
life memory

botmem

Personal / life system of record. Compose profile memory. Distinct from hippo (agent memory) and PMB (project index).

github.com/botmem/botmem →
placement

Orchestrator

Host + role placement in front of LiteLLM. Capacity-agent reports what’s free. Prompt-I/O scores traffic fail-open — a belt, not a gate, today.

this repo · services/orchestrator →
launchers

grok-tua / tok-tua

Start Pi, OpenCode, and friends already aimed at Headroom, with a health/spend pane so you see the door before a long session.

github.com/the1truedan/grok-tua-tok-tua →

how it came to be

Not a product pitch. A door that had to exist.

22 March 2026 — earliest vibecoding on record: surplus hardware, a homelab, long Grok threads. Hobby voltage.

13 April 2026 — the pivot. Real-world harm around a mother’s care made the hobby stop being a hobby. Within a week: an AI/ML certificate path, a caregiver prize track, and M.A.N.A.G.E.R. LLC (20 April). The question became: how do you prepare for the care when we cannot be there?

This repo grew as parallel infrastructure next to the caregiving monorepo. Desk Mac, GPU host, NAS — one OpenAI-shaped door so chat UIs and coding agents (Pi, OpenCode, Claude Code, Codex, Cursor, Grok Build) did not each invent their own base URL and their own outage.

Headroom went in front because stateless chats and paywalls were eating sessions. LiteLLM became the bus because every client already spoke that dialect. OpenRouter kept a free-model catalog alive so recon could stay cheap. Grok was both a coworker under the 31 July deadline and the thread that hopped twitter.com → grok.com → WebUI → local history ingest → this gateway. Hippo and PMB landed next so the door had a memory: hippo for what an agent explicitly remembered, PMB for what the repo already knew.

AgentsView is the session index — IDs and titles across Claude Code, Codex, Grok Build, OpenCode — not a transcript dump. It runs as its own compose stack so a chat-stack outage does not take the archive with it.

Then the weights outgrew every machine. The sibling fast-models pool (NVMe, Btrfs, bees, NFS) is the house behind the doorbell. Public trees are sanitized: no home secrets, no care records, no raw LAN IPs.

22 September 2026 — the piece that had been missing: History Analyst. Months of sessions across every agent finally answer questions in one place, on local models, with the session IDs to prove it.

Fluke or project management — either way the boxes light up.

what this tree actually is

Glue and ops. The intelligence is upstream.

Compose, not a SaaS

Mac / Linux / NAS-shaped layouts. You bring keys, disks, and judgment.

Role routing

Plan on a strong model, recon on free or local scouts, execute locally when you can, keep care routes hard-local.

Fail early

Smoke scripts before a long agent session. A dead stack should fail in seconds, not an hour in.

Siblings

fast-models holds weights. mok-tua turns scripts into pictures. This repo is the door they share.