Getting in
Everything here lives behind two doors. The first is Anubis, a quiet bot-check: the first time you visit any guarded page in a session you see a short "making sure you're not a bot" screen. It runs once. The second door is Authentik, the family single sign-on: log in once and every guarded service (this homepage, search, chat, media requests, and friends) opens for you without a second password.
- Need an account? Ask Frank. Accounts are issued by hand; there is no signup.
- Your clearance lives in a cookie. Clearing cookies means re-clearing both doors.
- If a page asks you to log in repeatedly, that is a server-side problem — tell Frank, don't brute-force it.
Talking to the AI
The everyday front door is Open WebUI, the family chat app. Open the address, click Continue with authentik, and use the same single sign-on as everything else — no separate password. Your conversations are saved to your account, so history follows you between devices.
Below the text box, the model box on the right chooses which model answers you.
Family accounts get frank-zealot — the fleet's fast all-rounder
(Open WebUI lists models by their API id; this one is frank-secondary),
which also sees images: drag a photo or screenshot straight into the chat box.
Frank's account can additionally reach the bigger models.
Open WebUI keeps your chat history; the raw model endpoints (used by developer tools, see API access) do not.
The running models
Three models serve the family, named for the Protoss units of StarCraft. The homepage "Model Information" panel shows whether each one is up right now — and plays the unit's voice if you click its quoted line.
Naming: the Open WebUI picker and the raw API show the endpoint api ids in brackets below. The Protoss names are the family names; a future switchover will rename the ids to match.
frank-zealot — the fast utility model (api id: frank-secondary)
- Model: Qwen3.5-9B-Uncensored (Q6_K) on the RTX 3090 — roughly 95 tokens per second.
- Equivalent: last year's frontier level (2025).
- Capacity: 200k-token context, two submissions at a time; sees images.
- Inputs: text, image.
- Best for: code editor autocomplete, agentic search, RAG, research subagents, translation, roleplay, and summarization — any small task that doesn't need much intelligence, and anything with a picture. This is the model Open WebUI offers to family accounts.
- Compaction: if your agent harness supports setting a compaction model, set this one. A compaction job severely slows the bigger models for far longer than it slows this one.
- Supervision: requires tight human supervision.
- Warning: ⚠ Uncensored model — hover to read
frank-dragoon — deep reasoning (api id: frank-large)
- Model: Qwen3.8-Flash-Next v2 Swift1.5 abliterated (halogen flash-server, ~62 GiB) on the Strix Halo iGPU — an abliterated (censorship-removed) edition that thinks before answering.
- Equivalent: Claude Sonnet 5 / OpenAI-Luna (Summer 2026 frontier intelligence).
- Capacity: 200k-token context, two submissions at a time; sees images.
- Inputs: text, image.
- Best for: complex agentic tasks, programming, system administration, and "claw"-style personal agents.
- Supervision: safe for autonomous, low-supervision use.
- Warning: ⚠ Uncensored model — hover to read
- Model: Qwen3.8-Flash-Next at native FP8 precision (radiance, 173 GiB) on twin AMD R9700s with more than 200 GB of system RAM — the biggest brain on the network and the fastest runtime.
- Equivalent: Claude Opus 4.8 / OpenAI-Terra (Summer 2026 frontier intelligence).
- Capacity: 200k-token context, two submissions at a time; sees images.
- Inputs: text, image.
- Best for: software engineering, system administration, and instruction tasks. ⚠ Ask Frank for permission before use — this is his primary model; he uses it more than anything else on the fleet.
frank-archon — the big one (api id: frank-primary)
Which one to pick? Small utility work, autocomplete, RAG,
programming, and personal agents: frank-dragoon. Software
engineering, sysadmin, and instruction tasks: frank-archon (ask
Frank first). The ids in brackets are what the Open WebUI picker and the
raw API show today; the Protoss names are the family names, and the switchover
will rename the ids to match.
API access — the AI on your own laptop
Developer assistants like Opencode and Pi are chat programs that run on your own computer and can read your files, run commands, and edit code while they talk. They are all built to speak the same standard language as the big commercial products (the "OpenAI-compatible" API), and our server speaks it too. You give the program three things — an address, a personal key, and a model name — and your laptop thinks through our hardware.
Step 1 — get your personal key
- Open ai.franksdank.cloud and log in.
- Click your circle (bottom-left corner) → Settings → Account.
- Scroll to API keys → press Show → Create new secret key.
- Press the copy icon. The key looks like
sk-3f2a….
The key is a password. Anyone who has it can use our AI as you. Paste it only into the program's config file — never into a shared chat, a screenshot, or a git repository.
Step 2 — the three details every tool asks for
- Base URL:
https://ai.franksdank.cloud/api/v1 - Model:
frank-secondary— this isfrank-zealot, the family utility model (the API uses the id, not the family name) - API key: the
sk-…from step 1 — sent as the headerAuthorization: Bearer sk-…
Proof that it works, from any terminal (replace the key):
curl https://ai.franksdank.cloud/api/v1/chat/completions \
-H "Authorization: Bearer PASTE-YOUR-KEY" \
-H "Content-Type: application/json" \
-d '{"model": "frank-secondary", "messages": [{"role": "user", "content": "Hello!"}]}'
Step 3a — Opencode
Install once (npm install -g opencode-ai), then create the file
~/.config/opencode/opencode.json with:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"frank": {
"npm": "@ai-sdk/openai-compatible",
"name": "Frank fleet",
"options": {
"baseURL": "https://ai.franksdank.cloud/api/v1",
"apiKey": "PASTE-YOUR-KEY"
},
"models": {
"frank-secondary": { "name": "frank-secondary" }
}
}
}
}
Start opencode and pick the model with /model —
it appears as frank/frank-secondary.
Step 3b — Pi
Create the file ~/.pi/agent/models.json with:
{
"providers": {
"frank": {
"baseUrl": "https://ai.franksdank.cloud/api/v1",
"api": "openai-completions",
"apiKey": "PASTE-YOUR-KEY",
"models": [
{ "id": "frank-secondary" }
]
}
}
}
Then start Pi with pi --model frank/frank-secondary.
The key works only for the family AI — it is not your
Authentik password, and losing it costs nothing beyond asking Frank to rotate it.
Want a bigger model (frank-archon, frank-dragoon)? Ask Frank to raise your access.
Media & files
- Movies & TV: request with Seerr; watch with Plex or Jellyfin. Don't ask the *arrs directly — Seerr is the front door, and requests ride the tunnel from there.
- Books: Calibre-Web — the e-book library, with its own login.
- Games: RomM — ROM library and emulator collection.
- Raw files: Copyparty — direct downloads and shares.
- Search: SearXNG — metasearch, VPN-routed, no AI snoop. ⚠ privacy note — hover to read
When something looks broken
- A status card says DOWN. Reload the page once; the checker re-probes every few minutes. If it stays down, that service really is unhappy — tell Frank.
- "status unavailable" on the homepage. The page couldn't read its status file. Hard-reload (Ctrl/Cmd-Shift-R).
- Connection timeout on a home device. Nine times out of ten the device isn't using the house DNS (Pi-hole at 192.168.0.143) and resolved our names to the public address, which doesn't answer. Point the device's DNS at 192.168.0.143 and retry.
- The bot-check spins forever. Let it finish; heavy JS blocking (privacy extensions) can starve it. Pause the blocker, reload, resume.