Task-first instead of app-first: start here, pick what you want to do, open the door. Every door gets its exact address, the button to press, and the failure the household actually hits. Screenshots are files now (img/onboarding/*.webp, 14 of them, all captured logged in as a standard user) instead of inline data URIs: the page is 23 KB of prose instead of 30 KB of base64, and the images cache on their own. Zero-JS kept. Facts re-checked against the live services rather than against the old page: the front door is www.franksdank.cloud (the apex 308s there); the standard user's Open WebUI account sees all three models and opens on frank-dragoon (read from /api/models as that user); WebDAV answers only on the house network (207 on 192.168.0.235:3923, a guard challenge through the public door); Audiobookshelf iOS is a limited-seat TestFlight beta, Android is the Play release.
441 lines
23 KiB
HTML
441 lines
23 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>frank — docs</title>
|
|
<base href="/">
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Rajdhani:wght@500;600;700&family=Share+Tech+Mono&display=swap">
|
|
<link rel="stylesheet" href="style.css">
|
|
</head>
|
|
<body>
|
|
<header class="top">
|
|
<span class="title">frank@home:~$ docs</span>
|
|
<a id="bare-toggle" class="toggle" href="?bare=1">bare</a>
|
|
</header>
|
|
<main class="docs">
|
|
|
|
<h1>The household guide</h1>
|
|
<p class="sub">Everything running on the computers in this house, what it is for,
|
|
and which door to knock on. Written for people who did not build it.</p>
|
|
|
|
<section id="start">
|
|
<h2>Start here</h2>
|
|
<p class="kicker">Three steps and you are in</p>
|
|
<p><strong>1. Open the front door:</strong>
|
|
<a href="https://www.franksdank.cloud">https://www.franksdank.cloud</a><br>
|
|
It works from anywhere — phone data, a hotel, a friend's house. The first page you
|
|
see is a robot check: your browser does a few seconds of arithmetic so the internet's
|
|
scanners can't wander in. Then type the family username and password Frank gave you.
|
|
There is no signup button on purpose.</p>
|
|
<p><strong>2. Pick what you want to do:</strong></p>
|
|
<table>
|
|
<tr><th>I want to…</th><th>Open</th><th>Needs its own login?</th></tr>
|
|
<tr><td>watch a film or a show</td><td><a href="https://jelly.franksdank.cloud">Jellyfin</a></td><td>yes — ask Frank</td></tr>
|
|
<tr><td>watch it on a TV that already has Plex</td><td><a href="https://plex.franksdank.cloud/web">Plex</a></td><td>yes — a Plex account, Frank invites it</td></tr>
|
|
<tr><td>listen to an audiobook</td><td><a href="https://audiobooks.franksdank.cloud/audiobookshelf">Audiobookshelf</a></td><td>no — the family password</td></tr>
|
|
<tr><td>ask a computer a question, privately</td><td><a href="https://ai.franksdank.cloud">AI chat</a></td><td>no</td></tr>
|
|
<tr><td>search the web without being followed</td><td><a href="https://search.franksdank.cloud">Search</a></td><td>no</td></tr>
|
|
<tr><td>read a news article without the junk</td><td><a href="https://marreta.franksdank.cloud">Marreta</a></td><td>no</td></tr>
|
|
<tr><td>grab a file off the big disk</td><td><a href="https://files.franksdank.cloud">Files</a></td><td>no (read-only)</td></tr>
|
|
<tr><td>ebooks, retro games, request a film</td><td>not open to the household yet — <a href="#notopen">see below</a></td><td>—</td></tr>
|
|
</table>
|
|
<p><strong>3. On your phone,</strong> open the front door in Safari or Chrome and choose
|
|
<em>Add to Home Screen</em>. You get an icon that behaves like an app. Details in
|
|
<a href="#phone">On your phone</a>.</p>
|
|
<figure>
|
|
<img src="/img/onboarding/homepage.webp" alt="The homepage: one tile per service, each with a short description">
|
|
<figcaption>The front door itself: one tile per thing the house runs, and a line about what
|
|
each is for. The badges say whether it's awake.</figcaption>
|
|
</figure>
|
|
<div class="toc">
|
|
<a href="#doors">The two doors</a>
|
|
<a href="#phone">On your phone</a>
|
|
<a href="#jellyfin">Jellyfin</a>
|
|
<a href="#plex">Plex</a>
|
|
<a href="#audiobookshelf">Audiobookshelf</a>
|
|
<a href="#notopen">Not open yet</a>
|
|
<a href="#files">Files</a>
|
|
<a href="#search">Search</a>
|
|
<a href="#marreta">Read an article</a>
|
|
<a href="#ai">AI chat</a>
|
|
<a href="#gitea">Gitea</a>
|
|
<a href="#models">The models</a>
|
|
<a href="#trouble">When something misbehaves</a>
|
|
</div>
|
|
</section>
|
|
|
|
<section id="doors">
|
|
<h2>The two doors</h2>
|
|
<p>Almost everything here is behind two checks, one after the other.</p>
|
|
<ul>
|
|
<li><strong>Anubis</strong> is the bouncer. It makes a browser prove it is a browser
|
|
(that robot-check page) and stops the automatic scanners that comb the internet for
|
|
open servers. It never asks for a password.</li>
|
|
<li><strong>Authentik</strong> is the front desk. It asks who you are, once per device
|
|
per few days, and after that you drift from app to app without being stopped again.</li>
|
|
</ul>
|
|
<p>One account opens: the homepage, search, Marreta, the AI chat, Files, Gitea.</p>
|
|
<figure>
|
|
<img src="/img/onboarding/door-authentik.webp" alt="The sign-in screen: an identification field, then a password field">
|
|
<figcaption>The front desk. Your username first, then your password. Nothing here signs
|
|
you up for anything; if you don't have an account yet, ask Frank.</figcaption>
|
|
</figure>
|
|
<p class="key-warn">Three doors keep their own accounts and will not take the family
|
|
password: <strong>Jellyfin</strong>, <strong>Plex</strong> (a Plex account, its own e-mail
|
|
login) and the e-book door. Frank creates those by hand.</p>
|
|
<p class="foot-note">Want your own password? It lives at
|
|
<a href="https://auth.franksdank.cloud/if/flow/default-user-settings-flow/">account settings</a>
|
|
— the same button you get at the bottom of the homepage.</p>
|
|
</section>
|
|
|
|
<section id="phone">
|
|
<h2>On your phone</h2>
|
|
<p><strong>Get the icon.</strong> In the browser: <em>Share</em> (iPhone) or the
|
|
<em>⋮</em> menu (Android) → <em>Add to Home Screen</em>. Same trick on a tablet.
|
|
There is no app store anything to install for the household doors; they are web pages
|
|
wearing a good coat.</p>
|
|
<figure>
|
|
<img src="/img/onboarding/phone-homepage.webp" alt="The homepage on a phone, one row per service">
|
|
<figcaption>The front door on a 5-inch screen. Same tiles, same links, no app.</figcaption>
|
|
</figure>
|
|
<p><strong>Apps that do have a real client</strong> (better than the web page on a phone):</p>
|
|
<table>
|
|
<tr><th>What</th><th>Where</th><th>Server address to type</th></tr>
|
|
<tr><td>Jellyfin</td><td>Google Play & the App Store (also Fire TV, Roku, most smart TVs)</td><td><code>https://jelly.franksdank.cloud</code></td></tr>
|
|
<tr><td>Plex</td><td>on nearly every TV ever sold</td><td>nothing — sign in to your Plex account</td></tr>
|
|
<tr><td>Audiobookshelf</td><td>Google Play (Android, solid). The iPhone build is a beta with a limited number of seats — use the browser, or SoundLeaf / ShelfPlayer</td><td><code>https://audiobooks.franksdank.cloud/audiobookshelf</code></td></tr>
|
|
</table>
|
|
<p><strong>The one address that only works at home.</strong> The raw file shelf also speaks
|
|
WebDAV on <code>http://192.168.0.235:3923/</code> — that's what a real file-manager app
|
|
mounts. Two catches, both measured: it is <em>http</em>, not https (the phone will warn you;
|
|
it is fine on the house Wi-Fi), and it answers only on the house network. From elsewhere the
|
|
public door hands a file app the robot-check page instead of files, because a file app can't
|
|
solve it. Off-site, use the browser.</p>
|
|
<ul>
|
|
<li>iPhone: the built-in Files app does <em>not</em> do WebDAV. <em>FileBrowser</em> or
|
|
<em>Owlfiles</em> do.</li>
|
|
<li>Android: <em>Cx File Explorer</em>, <em>Material Files</em>, <em>Solid Explorer</em> all do.</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section id="jellyfin">
|
|
<h2>Jellyfin — films and TV</h2>
|
|
<p><a href="https://jelly.franksdank.cloud">jelly.franksdank.cloud</a> — free, no
|
|
account of any company's, and the posters and episode guides are all filled in.</p>
|
|
<h3>Getting in</h3>
|
|
<ul>
|
|
<li>Pick your name. There is no list of names on the login screen — type yours.</li>
|
|
<li>Type the password Frank set for you. <strong>It is not the family password</strong>;
|
|
this is the most common wrong door.</li>
|
|
<li>No name yet? Ask Frank to make one. There is no self-service signup, on purpose.</li>
|
|
</ul>
|
|
<figure>
|
|
<img src="/img/onboarding/jellyfin-login.webp" alt="The Jellyfin login screen: a username field and a password field">
|
|
<figcaption>The empty login. Username, password, <em>Sign in</em>. Nothing to register.</figcaption>
|
|
</figure>
|
|
<h3>The first ten minutes</h3>
|
|
<ul>
|
|
<li>Home shows <em>Continue watching</em> and what's new. Press a poster; it starts.</li>
|
|
<li>The <strong>⋮</strong> menu on a poster is where the useful things live: mark
|
|
watched, add to a playlist, download it to the device.</li>
|
|
<li>On a TV the app asks for a <em>Server address</em>: <code>https://jelly.franksdank.cloud</code>.</li>
|
|
<li>Settings → theme: the big-screen look is installed for the living-room box.
|
|
Themes are per device, so change it only on the one you're sitting in front of.</li>
|
|
</ul>
|
|
<h3>If it misbehaves</h3>
|
|
<ul>
|
|
<li>Wrong password and no error you understand? That's the family password again.</li>
|
|
<li>A film with a blank poster is missing artwork, not missing files — Frank can refresh it.</li>
|
|
<li>Buffering away from home usually means the pipe out of the house, not the server.</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section id="plex">
|
|
<h2>Plex — the same shelf, different shop window</h2>
|
|
<p><a href="https://plex.franksdank.cloud/web">plex.franksdank.cloud/web</a> bounces you to
|
|
Plex's own sign-in, and that is correct: Plex is closed-source and insists on a Plex account.</p>
|
|
<figure>
|
|
<img src="/img/onboarding/plex-login.webp" alt="Plex's own sign-in page on plex.tv">
|
|
<figcaption>Plex keeps its own front desk. You need a Plex account (an e-mail address is
|
|
enough); Frank invites it into the library.</figcaption>
|
|
</figure>
|
|
<ul>
|
|
<li>Jellyfin and Plex read <strong>the same shelf of files</strong>. The same films are in
|
|
both; the artwork, watch-state and profiles are separate.</li>
|
|
<li>Choose Plex when your TV already has the Plex app on it, or you want Plex's trailers
|
|
and music. Otherwise Jellyfin is the one the household uses.</li>
|
|
<li>Ask Frank for an invitation; he can also tell you which of the two has the thing you're looking for.</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section id="audiobookshelf">
|
|
<h2>Audiobookshelf — audiobooks and podcasts</h2>
|
|
<p><a href="https://audiobooks.franksdank.cloud/audiobookshelf">audiobooks.franksdank.cloud/audiobookshelf</a>
|
|
— the family password works here.</p>
|
|
<figure>
|
|
<img src="/img/onboarding/audiobookshelf-login.webp" alt="The Audiobookshelf login page with username and password fields">
|
|
<figcaption>Two ways in: the password Frank gave you, or <em>Sign in with Authentik</em>,
|
|
which is the same family account.</figcaption>
|
|
</figure>
|
|
<ul>
|
|
<li>Your place in every book follows you between phone, laptop and the kitchen tablet.</li>
|
|
<li>On the phone the Android app is the best version: it will do <em>downloads for offline
|
|
listening</em>. A web page can't play offline; if you need it for a flight, use an app.</li>
|
|
<li>iPhone: the official build is a TestFlight beta with a small number of seats, so either
|
|
use the browser + <em>Add to Home Screen</em>, or a third-party client
|
|
(<em>SoundLeaf</em>, <em>ShelfPlayer</em>).</li>
|
|
<li>Adding the server in any app: <code>https://audiobooks.franksdank.cloud/audiobookshelf</code>.</li>
|
|
</ul>
|
|
<figure>
|
|
<img src="/img/onboarding/audiobookshelf-library.webp" alt="An empty audiobook library with a scan button">
|
|
<figcaption>An empty library. Books appear when Frank scans, and then they're yours to keep playing.</figcaption>
|
|
</figure>
|
|
</section>
|
|
|
|
<section id="notopen">
|
|
<h2>Three doors that are not open to the household yet</h2>
|
|
<ul>
|
|
<li><strong>Calibre-Web</strong> (e-books) —
|
|
<a href="https://books.franksdank.cloud">books.franksdank.cloud</a>. Its own login, and
|
|
Frank hasn't decided who gets in. Ask.</li>
|
|
<li><strong>RomM</strong> (retro games, plays them in the browser) —
|
|
<a href="https://romm.franksdank.cloud">romm.franksdank.cloud</a>. Needs its own account,
|
|
and it is not open to family users yet. Ask.</li>
|
|
<li><strong>Seerr</strong> (the "would you watch this?" request box) —
|
|
<a href="https://seerr.franksdank.cloud">seerr.franksdank.cloud</a>. Not open yet: tell
|
|
Frank what you want to watch and he'll add it.</li>
|
|
</ul>
|
|
<figure>
|
|
<img src="/img/onboarding/calibre-login.webp" alt="The Calibre-Web login page">
|
|
<figcaption>What a closed door looks like: a login that wants credentials of its own.</figcaption>
|
|
</figure>
|
|
</section>
|
|
|
|
<section id="files">
|
|
<h2>Files — the raw shelf</h2>
|
|
<p><a href="https://files.franksdank.cloud">files.franksdank.cloud</a> is the honest view of
|
|
the big disk: folders, dates, sizes, no cleverness. <strong>Read-only</strong> for the
|
|
household — you can take things out, nothing you do here deletes anything.</p>
|
|
<figure>
|
|
<img src="/img/onboarding/copyparty.webp" alt="A folder listing with sizes, dates and a download link on each row">
|
|
<figcaption>Each row has a download link; the <em>zip</em> link at the bottom takes the
|
|
whole folder as one archive. <em>control-panel</em> and the <em>up</em> link navigate.</figcaption>
|
|
</figure>
|
|
<ul>
|
|
<li>Good for: a photo you want the original of, a document, a game ROM, a song to put on another device.</li>
|
|
<li>Bad for: watching video (the player is the wrong tool — use Jellyfin) and for
|
|
saving your own work (it can't write).</li>
|
|
<li>Works in any browser, on any machine, from anywhere.</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section id="search">
|
|
<h2>Search — SearXNG</h2>
|
|
<p><a href="https://search.franksdank.cloud">search.franksdank.cloud</a> asks a lot of search
|
|
engines at once and merges the answers, then leaves no trail behind. Outbound requests ride
|
|
the house VPN.</p>
|
|
<figure>
|
|
<img src="/img/onboarding/search-results.webp" alt="Search results merged from many engines, with engine checkboxes on the left">
|
|
<figcaption>One question, many engines. The boxes on the left choose which engines answer.</figcaption>
|
|
</figure>
|
|
<ul>
|
|
<li>Make it your browser's search engine: browser settings → search → add a custom
|
|
engine with <code>https://search.franksdank.cloud/search?q=%s</code>.</li>
|
|
<li>On a phone there is no app; bookmark it or put the homepage on your home screen.</li>
|
|
</ul>
|
|
<figure>
|
|
<img src="/img/onboarding/phone-search.webp" alt="A search result page on a phone">
|
|
<figcaption>Same results, thumb-sized.</figcaption>
|
|
</figure>
|
|
<details class="key-warn">
|
|
<summary>The privacy catch worth knowing</summary>
|
|
<div class="warn-body">
|
|
<p>This hides your question from Google, Bing and the rest — it does not hide it from
|
|
<em>this house</em>. Queries are logged on this server so Frank can tell a broken search
|
|
from a slow one. And because results are fetched from here, the search engines see one
|
|
house address, not your phone: your habits don't get stitched to your face. If you need a
|
|
genuinely anonymous search, that's Tor or a paid service, not this.</p>
|
|
</div>
|
|
</details>
|
|
</section>
|
|
|
|
<section id="marreta">
|
|
<h2>Read an article without the junk — Marreta</h2>
|
|
<p><a href="https://marreta.franksdank.cloud">marreta.franksdank.cloud</a>. Paste a link, get
|
|
the article: no cookie banner, no video autoplay, no sixteen sidebars. It also runs an RSS
|
|
reader once Frank feeds it news.</p>
|
|
<figure>
|
|
<img src="/img/onboarding/marreta.webp" alt="Marreta's empty home page with a URL box and an Add as app hint">
|
|
<figcaption>Paste the link. The app itself offers <em>Add as app</em> in its menu, which is
|
|
the cleanest way to keep it on a phone.</figcaption>
|
|
</figure>
|
|
<ul>
|
|
<li>Some pages with hard paywalls still come back thin. Nothing in the house can fix that.</li>
|
|
<li>A white screen after pasting? Pause your ad blocker for this site — the app warns
|
|
about exactly that.</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section id="ai">
|
|
<h2>AI chat — Open WebUI</h2>
|
|
<p><a href="https://ai.franksdank.cloud">ai.franksdank.cloud</a>. The family password, or
|
|
<em>Continue with authentik</em> on the login card, which is the same thing.</p>
|
|
<figure>
|
|
<img src="/img/onboarding/openwebui-login.webp" alt="The Open WebUI welcome card with a Continue with authentik button">
|
|
<figcaption>Press <em>Continue with authentik</em> and the family login does the rest.</figcaption>
|
|
</figure>
|
|
<ul>
|
|
<li>Nothing you type here goes to a company's server. It goes to the computers in this house.</li>
|
|
<li>Install it as an app: in Chrome or Edge, the menu → <em>Install site as an app</em>;
|
|
in Safari, share → <em>Add to Home Screen</em>.</li>
|
|
<li>Conversations are kept per account, so your history is yours and Frank's is Frank's.</li>
|
|
</ul>
|
|
<h3>Which model do I pick?</h3>
|
|
<p>You are offered all three, and the app opens on <code>frank-dragoon</code>. Leave it there
|
|
unless you have a reason. Short version (longer version in <a href="#models">The models</a>):</p>
|
|
<ul>
|
|
<li><code>frank-dragoon</code> — fast, sees pictures, doesn't lecture. Good default.</li>
|
|
<li><code>frank-archon</code> — the big careful one on the two-card server. Slower per
|
|
answer, best at long and difficult work. Polite by construction.</li>
|
|
<li><code>frank-zealot</code> — small, quick, holds a very long conversation. Also
|
|
doesn't lecture.</li>
|
|
</ul>
|
|
<p class="key-warn">Two of the three will answer almost anything, including adult and dangerous
|
|
material, without a warning. That is deliberate for Frank's work, not a toy for a child:
|
|
conversations stay on the house machines and are not visible to Frank's phone. If that isn't
|
|
the setup you want for a kid, keep them off this door and ask Frank about a filtered one.</p>
|
|
|
|
</section>
|
|
|
|
<section id="gitea">
|
|
<h2>Gitea — Frank's workshop</h2>
|
|
<p><a href="https://gitea.franksdank.cloud">gitea.franksdank.cloud</a> holds the code that runs
|
|
this house: the configs, the deploy scripts, the tests. It has its own accounts (the top right
|
|
offers <em>Register</em>, or <em>Sign in with OpenID</em> to ride the family login), but it is a
|
|
workshop, not a household door. You very likely don't need it.</p>
|
|
<figure>
|
|
<img src="/img/onboarding/gitea-signin.webp" alt="The Gitea sign-in form with a password box and a Sign in with OpenID button">
|
|
<figcaption>If you ever do need it: <em>Register</em> for its own account, or
|
|
<em>Sign in with OpenID</em> for the family one.</figcaption>
|
|
</figure>
|
|
</section>
|
|
|
|
<section id="models">
|
|
<h2>The models</h2>
|
|
<p class="kicker">What's actually answering you</p>
|
|
<p>Three machines in this house do the thinking. None of them phone a company. Each is a
|
|
different trade-off of speed, memory and how much it can hold in its head at once; the chat
|
|
app above is just a window onto them.</p>
|
|
<table>
|
|
<tr><th>Name</th><th>Runs on</th><th>Good at</th><th>Notes</th></tr>
|
|
<tr>
|
|
<td><code>frank-dragoon</code></td>
|
|
<td>the Strix Halo machine's built-in graphics</td>
|
|
<td>fast answers, long chats, reading pictures, tools</td>
|
|
<td>two conversations at a time; abliterated, so no refusals</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>frank-archon</code></td>
|
|
<td>the media server, two big graphics cards</td>
|
|
<td>the hardest work: long code, careful reasoning, big documents</td>
|
|
<td>four conversations at a time; keeps its guardrails</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>frank-zealot</code></td>
|
|
<td>the RTX 3090 in the corner</td>
|
|
<td>very long conversations, cheap and quick; it is what Frank's own coding agent runs on</td>
|
|
<td>three conversations at 200,000 tokens each; no refusals</td>
|
|
</tr>
|
|
</table>
|
|
<p class="foot-note">The exact weights: <code>frank-dragoon</code> is a halogen conversion of
|
|
Qwen3.8-Flash-Next v2, abliterated
|
|
(<a href="https://huggingface.co/Quat3rnion/halogen-qwen3.8-flash-next-v2-abliterated">Quat3rnion/halogen-qwen3.8-flash-next-v2-abliterated</a>);
|
|
<code>frank-archon</code> is the official Qwen3.8-Flash-Next re-packed for that engine
|
|
(<a href="https://huggingface.co/StillDeadcode/qwen3.8-next-flash-fp8-iq4r-moe">StillDeadcode/qwen3.8-next-flash-fp8-iq4r-moe</a>);
|
|
<code>frank-zealot</code> is Ternary-Bonsai-2-9B in a 2-bit packing
|
|
(<a href="https://huggingface.co/prism-ml/Ternary-Bonsai-2-9B-gguf">prism-ml/Ternary-Bonsai-2-9B-gguf</a>)
|
|
with a small adapter fitted that removes its refusal reflex. All three accept pictures. Ask
|
|
Frank before pointing a script at one of them directly; the address is on the homepage.</p>
|
|
</section>
|
|
|
|
<section id="api-access">
|
|
<h2>Let your own tools use it</h2>
|
|
<p class="kicker">For the household's programmers</p>
|
|
<p>Frank can hand you an API key. It works on one door
|
|
— <code>https://ai.franksdank.cloud/api/v1</code> — and speaks the plain OpenAI
|
|
dialect, so anything that can talk to a hosted model can talk to the house.</p>
|
|
<pre><code>curl https://ai.franksdank.cloud/api/v1/chat/completions \
|
|
-H "Authorization: Bearer PASTE-YOUR-KEY" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"model": "frank-dragoon",
|
|
"messages": [{"role": "user", "content": "What is on the shelf?"}]
|
|
}'</code></pre>
|
|
<p>For <a href="https://github.com/badlogic/pi-mono">Pi</a>, drop this in
|
|
<code>models.json</code>:</p>
|
|
<pre><code>{
|
|
"providers": {
|
|
"frank": {
|
|
"baseUrl": "https://ai.franksdank.cloud/api/v1",
|
|
"api": "openai-completions",
|
|
"apiKey": "PASTE-YOUR-KEY",
|
|
"models": [
|
|
{ "id": "frank-dragoon" }
|
|
]
|
|
}
|
|
}
|
|
}</code></pre>
|
|
<p>Then start Pi with <code>pi --model frank/frank-dragoon</code>.</p>
|
|
<p class="foot-note">The key is for the house AI only — it is not your Authentik password,
|
|
and losing it costs nothing beyond asking Frank to rotate it. Want a different model than the
|
|
one you were given? Ask Frank to widen the key.</p>
|
|
</section>
|
|
|
|
<section id="trouble">
|
|
<h2>When something misbehaves</h2>
|
|
<ul>
|
|
<li><strong>The robot check page keeps coming back.</strong> Your browser is blocking the
|
|
scripts it needs (or an extension is). Allow scripts for that site, or try another browser.
|
|
Still looping? Ask Frank — the guard can be told you're a person.</li>
|
|
<li><strong>"Invalid password" on the front desk.</strong> Right password, wrong door: the
|
|
family login does not open Jellyfin, Plex or the e-book door.</li>
|
|
<li><strong>The AI is slow.</strong> Each model only holds a couple of conversations at once
|
|
(two, three or four, depending which). It is a queue, not a crash — or Frank is
|
|
mid-conversation; the big one is on the same machine as the films.</li>
|
|
<li><strong>The AI invents something confidently.</strong> All three are small models living
|
|
on house hardware; they will make things up rather than say "I don't know". Check anything
|
|
that matters.</li>
|
|
<li><strong>A film is missing.</strong> It is probably not on the shelf yet, or it landed
|
|
yesterday and the library hasn't been told. Say so and Frank will scan.</li>
|
|
<li><strong>A file app can't reach the shelf from outside the house.</strong> Expected: the
|
|
public door is browser-shaped. Use the browser, or mount the home address on the house Wi-Fi.</li>
|
|
<li><strong>Something is genuinely down.</strong> The homepage badge says
|
|
<span style="color: var(--down)">DOWN</span> — tell Frank which one. Screenshots help.</li>
|
|
</ul>
|
|
<p class="foot-note">Anything missing, wrong, or written like a manual instead of a person:
|
|
that's a bug in this page. Tell Frank, or tell the machine that wrote it.</p>
|
|
</section>
|
|
|
|
</main>
|
|
<footer class="foot">
|
|
<span><a href="/">← services</a></span>
|
|
<span>docs · written by the chief designer · ask Frank for anything missing</span>
|
|
</footer>
|
|
<script>
|
|
// The same bare-mode toggle the service pages use (?bare=1), for this static page.
|
|
(function () {
|
|
var bare = new URLSearchParams(window.location.search).get('bare') === '1';
|
|
document.documentElement.setAttribute('data-bare', bare ? '1' : '0');
|
|
var t = document.getElementById('bare-toggle');
|
|
if (t) {
|
|
t.textContent = bare ? 'styled' : 'bare';
|
|
t.href = bare ? '?bare=0' : '?bare=1';
|
|
}
|
|
})();
|
|
</script>
|
|
</body>
|
|
</html>
|