diff --git a/shared/homepage/docs.html b/shared/homepage/docs.html
index 450f5b0..1f8d811 100644
--- a/shared/homepage/docs.html
+++ b/shared/homepage/docs.html
@@ -90,14 +90,14 @@
frank-zealot — the fast utility model
- - Model: Qwen3.5-9B-Uncensored (Q6_K) on the RTX 3090 — roughly 95 tokens per second.
+ - Model: Ternary-Bonsai-2-27B (PQ2_0 ternary weights) on the RTX 3090 — roughly 77 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
Uncensored model: output can include adult content, content that describes harmful, hateful, or illegal acts, content concerning “sensitive offensive cybersecurity topics”, and other output that may carry severe legal risk. Take this warning seriously — don’t ruin this server for everybody.
+ - Warning:
⚠ censored base model
Base-alignment (censored) model: refusals are possible on sensitive topics, and any model can still be steered into risky output. Uncensored work belongs on frank-dragoon. Take this warning seriously — don’t ruin this server for everybody.
frank-dragoon — deep reasoning
diff --git a/shared/homepage/services.json b/shared/homepage/services.json
index 5f061da..96a8f59 100644
--- a/shared/homepage/services.json
+++ b/shared/homepage/services.json
@@ -295,13 +295,13 @@
"model": {
"unit": "zealot",
"role": "Frank's utility model",
- "hf": "https://huggingface.co/HauhauCS/Qwen3.5-9B-Uncensored-HauhauCS-Aggressive",
+ "hf": "https://huggingface.co/prism-ml/Ternary-Bonsai-2-27B-gguf",
"tagline": "HONOR GUIDE ME!",
"sfx": [
"zealot-honor.ogg"
],
"equiv": "Equivalent to last year's frontier level (2025).",
- "spec": "Qwen3.5-9B-Uncensored (Q6_K) on an NVIDIA RTX 3090 — ~95 tokens/s; 200k-token context, two submissions at a time; sees images.",
+ "spec": "Ternary-Bonsai-2-27B (PQ2_0 ternary weights) on an NVIDIA RTX 3090 — ~77 tokens/s; 200k-token context, two submissions at a time; sees images.",
"inputs": [
"text",
"image"
@@ -314,7 +314,7 @@
]
},
"supervision": "Requires tight human supervision.",
- "warn": "Uncensored model: output can include adult content, content that describes harmful, hateful, or illegal acts, content concerning “sensitive offensive cybersecurity topics”, and other output that may carry severe legal risk. Take this warning seriously — don’t ruin this server for everybody.",
+ "warn": "Base-alignment (censored) model: refusals are possible on sensitive topics, and any model can still be steered into risky output. Take this warning seriously — don’t ruin this server for everybody.",
"compaction": "If your agent harness lets you set a compaction model, set this one: a compaction job on the bigger models blocks them for far longer."
},
"url": "",
diff --git a/tests/homepage_config.bats b/tests/homepage_config.bats
index ac8df88..c554fa3 100644
--- a/tests/homepage_config.bats
+++ b/tests/homepage_config.bats
@@ -105,8 +105,10 @@ for s in fleet:
assert [s["name"] for s in fleet] == ["frank-zealot", "frank-dragoon", "frank-archon"], \
"card render order must be zealot, dragoon, archon: " + str([s["name"] for s in fleet])
w = {s["name"]: s["model"].get("warn", "") for s in fleet}
-assert w["frank-zealot"] == w["frank-dragoon"] != "", "the legal warnings must be the common uncensored text"
-assert "legal risk" in w["frank-zealot"].lower() and "everybody" in w["frank-zealot"].lower()
+assert "legal risk" in w["frank-dragoon"].lower() and "everybody" in w["frank-dragoon"].lower(), \
+ "the abliterated endpoint must carry the common legal warning"
+assert "censored" in w["frank-zealot"].lower() and "uncensored" not in w["frank-zealot"].lower(), \
+ "zealot ships the censored base since 2026-10-17: its card warning must not claim uncensored output"
archon = next(s for s in fleet if s["name"] == "frank-archon")
assert "permission" in archon["model"], "archon card needs the ask-Frank permission callout"
PY