SPS Model & Hosting Map
What it is. Every product we run, which AI models it calls and for what, where it's hosted, and what each of those models costs. Read this before adding any AI capability — the fleet almost certainly already has one.
Compiled 2026-08-14, verified against live infrastructure. Companion to the per-project Anthropic key split (project_anthropic_key_split).
Cost tiers
| Tier | Meaning |
|---|---|
| $0 local | Runs on our own hardware. No per-token cost, only electricity. |
| Metered API | Anthropic or OpenAI. Billed per token against a project key. |
| Subscription seat | Flat monthly per person. Not per-token. |
Local models have a paid fallback. LiteLLM falls the
llama-3.3-70broute back toclaude-haiku-4-5. That keeps things working when a local box is unavailable — but work you expect to be free can quietly become billable. If local inference is down, spend does not stop; it moves.
Products → models
Metered Anthropic API — one key per product
| Product | Models | What it does with them | Hosted on |
|---|---|---|---|
| Vigil Ledger | claude-sonnet-4-20250514, sonnet-5 vision via LiteLLM |
Reads receipts and financial documents as images, extracts line items, categorizes transactions, drives the ledger@ mail ingest loop and the rules engine. |
vigil-server · Docker · ledger.teaganwins.net |
| No Wake Zone | Claude via LiteLLM virtual key | Ticket AI assistant, exec recommendations, feature-backlog drafting, stale-doc coverage scans. | vigil-server · Docker · nwz.sps.ltd |
| Family Recipe Box | claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5 |
Opus reads handwritten recipe cards — the hard vision task and the product's differentiator. Sonnet does printed cards, web-page recipe parsing, meal descriptions. Haiku does auto-tagging. | vigil-server · Docker · familyrecipebox.app |
| Agoge Platform | Claude, tiered per task via shared/ai_provider.py |
Full grading suite (SQL, R, Python, Stats, PowerBI, Access, Tableau, essay), question/presentation/lecture generators, plagiarism and integrity analysis, accessibility remediation, virtual TA, oral exam. | Azure App Service universalgrading-v2 |
| Agoge tutorial engine | Claude via authoring module | Generates and revises tutorial content from source material. | vigil-server · Docker |
| Agoge grading (v1) | Claude | Superseded legacy grader, still deployed and still keyed. Pending a decision on whether it stays alive. | Azure App Service universalgrading |
| FinishOps | Claude, tiered client picks per task | Bid assistant and bid packs, commercial bid-file parsing, ordinance lookup, market intelligence, profit guardian, trade bridge, prep prediction, colour memory, aerial imagery. | Railway · app.finishops.com |
| OneCut Shop | Claude via Worker proxy | Joinery and design recommendations in-app. The proxy exists so the key never ships inside the mobile bundle. | Cloudflare Workers onecut-ai-proxy |
| STR-Ops / CasaOps | claude-sonnet-4-6 |
Iris assistant for the Agua Azul property stack — bilingual morning brief, guest/ops messaging, natural-language site edits. | vigil-server · Docker · strops.sandpointstudios.ltd |
| case-platform | Claude (opus + haiku compared in evals) | Toulmin argument analysis, submission judging, persona/cohort generation. | Laptop via CF tunnel · case.teaganwins.net |
| SPS automation | claude-haiku-4-5 |
Five unattended jobs on one key: helpdesk email triage, NWZ ops-bot chat triage, FinishOps fix-bot, daily ops digest, OneCut phase-4b check. All oneshot systemd timers. | vigil-server · systemd |
| print-gateway | claude-haiku-4-5 via LiteLLM |
Triages image attachments arriving at print@ / print-lake@. Holds no key of its own — metered through the gateway. |
vigil-server · systemd |
Gateways — shared infrastructure, not products
| Service | Models | Purpose | Hosted on |
|---|---|---|---|
| LiteLLM | claude-sonnet-5, claude-opus-5, claude-opus-4-8, claude-haiku-4-5, llama-3.3-70b, qwen2.5-32b-instruct, kokoro-tts, claude-* |
The fleet gateway. Every metered call should route through here so spend is measured and local models stay free. Holds the fallback rules. | vigil-server :9002 |
| VigilTeamCode | claude-sonnet-5 default, claude-haiku-4-5 fast |
Claude Code metering proxy — per-person virtual keys so usage is attributable, with a local-model fallback lever. | vigil-server :9001 · code.sandpointstudios.ltd |
| Vigil Gateway | Anthropic passthrough | Team-facing OpenAI-compatible control plane so OpenAI-only tools can reach our models. | vigil-server · ai.teaganwins.net |
$0 — running on our own hardware
| Product | Models | What it does with them | Hosted on |
|---|---|---|---|
| Vigil Steward / Iris | llama-3.3-70b |
Orchestrator brain — morning briefings, portfolio questions, chat DMs, scheduled digests. Claude does execution separately via Claude Code seats. | vigil-server :8003, model on sps-srv2 |
| @vigil RAG bot | llama-3.3-70b, nomic-embed-text |
Read-only question answering over company documentation in chat. | vigil-server :8019 |
| Persona router | llama-3.3-70b |
Routes chat messages to the nine product personas. | vigil-server · systemd |
| NWZ chat bridge | llama-3.3-70b |
Bridges and summarizes NWZ ticket activity into chat. | vigil-server · systemd |
| Agoge Academic Advisor | Ollama (local) | Degree-requirement solving, audit narration, intake parsing. FERPA-sensitive, which is why it never leaves our hardware. | vigil-server :8006 · advisor.sandpointstudios.ltd |
| Agoge grading lane | qwen2.5-32b-instruct |
Local grading inference so classroom-scale batches don't bill per token. | vigil-server RTX 5090 :8023 |
Model catalog
| Model | Capability | Runs on | Endpoint | Cost |
|---|---|---|---|---|
Llama-3.3-70B-Instruct |
General text, orchestration | sps-srv2 · 2× Arc Pro B60 | 100.121.113.104:8000 |
$0 local |
Qwen2.5-32B-Instruct-AWQ |
General text, grading | vigil-server · RTX 5090 | :8023 |
$0 local |
bge-reranker-v2-m3 |
Reranking | vigil-server · Arc Pro B70 | :8022 |
$0 local — live but unwired |
| Ollama library (13 models) | Text, code, vision, embeddings | vigil-server · 5090 + 2060S | :11434 |
$0 local |
nomic-embed-text |
Embeddings | vigil-server · Ollama | :11434 |
$0 local |
| Qdrant | Vector store | vigil-server · Docker | internal | $0 local |
Whisper ggml-large-v3-turbo |
Speech → text, ~11× realtime | Mac mini M4 Pro | 100.104.83.69:8090 |
$0 local |
Kokoro-82M |
Text → speech, ~3.8× realtime | Mac mini :8091, vigil-server :8007 |
tts.sandpointstudios.ltd | $0 local |
FLUX.1-schnell-fp8 |
Image generation | vigil-server · ComfyUI | comfy.sandpointstudios.ltd | $0 local — VRAM-limited |
claude-opus-5 / claude-opus-4-8 |
Hardest reasoning, handwriting vision | Anthropic | LiteLLM or project key | Metered |
claude-sonnet-5 / claude-sonnet-4-6 |
General work, vision — the default | Anthropic | LiteLLM or project key | Metered |
claude-haiku-4-5 |
Cheap classification and triage | Anthropic | LiteLLM or project key | Metered |
gpt-image-1 |
Illustrated cover art | OpenAI | OpenAI API | Metered |
| OpenAI (EventInk) | Event extraction | OpenAI | EAS production secret | Metered |
A running container is not a working capability. ComfyUI is up but VRAM-starved, and the reranker serves but isn't wired into anything yet. Verify the endpoint does what you need before you build on it.
Where everything runs
| Host | Role | Hardware / plan | What it carries |
|---|---|---|---|
| vigil-server (sps-srv1) | Primary production server | RTX 5090 32GB + Arc Pro B70 32GB · Ubuntu 24.04 · DeWitt | Most of the fleet — Vigil Ledger, NWZ, Family Recipe Box, tutorial engine, STR-Ops, Vigil Steward, LiteLLM, VigilTeamCode, Mattermost, Immich, Grafana, Ollama, ComfyUI, all automation timers. |
| sps-srv2 | Inference appliance | 2× Arc Pro B60 (24+24GB) · Ubuntu · Lakehouse | Serves Llama-3.3-70B and nothing else — but that single model carries roughly 88% of all gateway traffic, making it the highest-leverage box in the fleet. |
| sps-srv3 | Offload / backup tier | Turing-era GPUs · Lew's site | Intended for speech and embedding workloads. Hardware unverified. |
| Mac mini M4 Pro | Voice + Apple platform node | 24 GB · macOS 26.5 | Whisper STT and Kokoro TTS. The only macOS box we have, so also the only path to iOS builds. |
| Azure App Service | Managed hosting | universalgrading-rg |
Agoge Platform v2 and the legacy v1 grader. |
| Railway | Managed hosting | project finishops |
The FinishOps backend. |
| Cloudflare | Edge, Pages, Workers, tunnels | single account, 19 zones | Marketing sites, the OneCut AI and bug-report Workers, Access gates, tunnels fronting 21+ internal hostnames. |
| Laptop (teags-dev) | Dev workstation | RTX 5080 · Win 11 | case-platform's backend currently runs here behind a tunnel — worth moving to a server. |
What we pay for
| Plan | Type | Covers | Notes |
|---|---|---|---|
| Anthropic API (SPS workspace) | Metered | The eleven per-project keys behind every product above. | Billed per token. Usage is attributable per product in the console. |
| Anthropic Team plan | Seats | Claude Code seats via Coder, plus the Skipper agent workers. | Flat monthly per person. Claude Code work on a seat does not hit the API bill. |
| Teagan's Max plan | Personal | Teagan's own interactive Claude usage. | Separate from SPS billing. |
| OpenAI | Metered | EventInk extraction and gpt-image-1 cover art. |
The last two places we depend on a non-Anthropic paid model. |
| Own hardware | $0 | Everything in the local model catalog. | Electricity only. This is why routing through LiteLLM matters. |
The one rule
Route through LiteLLM at vigil-server:9002 rather than calling Anthropic directly, unless the product genuinely needs its own key. The gateway is what makes local models free by default and paid models measurable.
When a product does need its own key, mint it in the Sand Point Studios workspace at console.anthropic.com and store it in Bitwarden as Anthropic API — <name> [SPS Team console] in the SPS Service collection. Key admins: Teagan Dixon, Raghav Tambi.