# Changelog All notable changes to this repository. Format loosely follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). This repo holds a model card, an Ollama Modelfile, the HF Ollama-bridge `template` / `system` / `params` files, and the bundled Q4_K_M GGUF, so versions track the **tooling and documentation**, not the underlying base model. ## [Unreleased] ### Added - **`scripts/check_bridge_sync.py` now guards the example clients' system prompt.** Beyond the Modelfile↔bridge check, it parses each `examples/*.py` and asserts any module-level `*_SYSTEM` constant matches the root `system` verbatim; the vision client is skipped (it uses a deliberate image-specific prompt). Catches an example silently drifting from the shipped prompt — the gap that let the `llama_cpp_quickstart.py` prompt truncate (see Fixed). - **Frontmatter tags `reasoning` + `distillation`.** The card positions Janus as reasoning-first and distilled (and `CITATION.cff` already lists both as keywords), but neither was a searchable Hub tag — added both. - **`CITATION.cff` now carries `version` + `date-released`.** Added `0.1.0` / `2026-05-20` (mirroring the CHANGELOG release anchor) so the HF "Cite this model" widget generates a dated, versioned citation. ### Changed (default sampling matched to the Fable teacher) - **Default sampling raised to a Fable-matched profile** in `params` and the `Modelfile` (bridge-synced): `temperature 0.6 → 1.0`, `top_k 20 → 0` (Claude uses no top-k). `top_p 0.95` and `repeat_penalty 1.05` are kept as guardrails against reasoning-loop degeneration (open weights + a forced `` block need them, unlike Claude's sampler). The former 0.6/0.95/20/1.05 profile remains in the README "Recommended sampling" table as the tighter-reasoning override. ### Changed (context-length ceiling raised to Qwen's 1,010,000 extensible max) - **Advertised context is now the precise 262,144-native / 1,010,000-extensible pair, and the baked default rises to match.** The card previously rounded the extensible window to `~1 M` and baked `num_ctx 1000000` (a Fable-teacher budget match); both now use the exact Qwen 3.6 figures — **262,144 native, extensible to 1,010,000 tokens with YaRN**. The baked default moves `1000000 → 1010000` in `params` and the `Modelfile` (bridge-synced), the opt-in YaRN recipe is retuned to `--rope-scale 3.853` (≈ `1010000 / 262144`) at `-c 1010000`, and the theoretical footprint at the default is recomputed to ~62 GB KV / ~100 GB total. ### Fixed - **Hardware tables agree on the CPU-only RAM floor.** The README hardware table lists `≥48 GB RAM (CPU-only)` while the `Modelfile` working-configs comment said `64GB+ RAM (CPU-only)` for the same ~3-6 tok/s scenario, so a reader cross-referencing the two got different minimums. Aligned the Modelfile to the README's `48 GB` — the floor the card's own memory math supports (~38 GB weights + compute graph, plus KV at a trimmed `num_ctx`) and the cross-file consistency the dense sibling already keeps for its own (smaller) 32 GB floor. - **Inference examples no longer 404 for HF-pull users.** The `ollama show janus` claim said "either path," but the short `janus` tag only exists after the local build (path B); every inference example hard-codes `model: "janus"`, so a TL;DR/path-A puller hit `model 'janus' not found`. Corrected the claim and added a note to substitute the full `hf.co/FoolDev/Janus-35B-HERETIC` tag (or `ollama cp`). - **Vision block documents the `reasoning_content` split.** The llama-server vision recipe now notes the thinking trace lands in `message.reasoning_content` and the answer in `message.content`, and to budget ≥500 `max_tokens` so reasoning doesn't crowd out the answer (parity with the Thanatos sibling). - **Hardware-table eval disclaimer no longer self-contradicts.** "Known limitations" said the table numbers are "estimates, not measured," yet the Z13 row records a measured 28.71 tok/s — reworded to carve out that row. - **`examples/README.md` establishes its working directory.** The Setup section's first runnable command assumed a `cd examples` that was never stated (a fresh clone lands at repo root); added the note. - **Loader-table Ollama version reads `0.24+`.** The lone bare `Ollama 0.24` cell now matches the open-ended `0.24+` used everywhere else. - **`scripts/load_bundle.sh` LFS-pointer size check is now portable.** The bundle resolver probed file size with GNU-only `stat -c '%s'`, which errors on macOS/BSD `stat` (that needs `-f%z`) — leaking a stderr line on an advertised supported host (the Modelfile and README list Mac Studio as a working config). Switched to `wc -c`, which is identical on GNU and BSD. - **`examples/llama_cpp_quickstart.py` system prompt restored.** Its `JANUS_SYSTEM` had truncated to five behavior rules (dropped "or meta-commentary" and "or incomplete", and omitted the creative-writing and analysis/technical-help rules), diverging from the root `system`, `transformers_quickstart.py`, and the `Modelfile`. Restored to the full seven-rule prompt, verified byte-identical to `system`. - **`examples/README.md` no longer overclaims a shared system prompt.** It said "All four apply the same Janus system prompt", but `llama_cpp_vision.py` uses a task-specific vision prompt. Reworded: the text clients share the general prompt, the vision client uses its own. - **`think=false` now suppresses reasoning.** The chat template unconditionally prefilled an open `` on the generation prompt, so requests passing `think: false` (or `ollama run --think=false`) still forced a reasoning trace that leaked into `content`. The prefill is now gated on `$.IsThinkSet`: a closed empty `` when thinking is explicitly off, an open `` otherwise. Verified on Ollama 0.30.8 (`think=true` keeps reasoning in the `thinking` field, `think=false` suppresses it, unset still reasons); `template` kept byte-synced with the `Modelfile` `TEMPLATE`. - **`scripts/smoke_test.sh` and `scripts/bench.sh` no longer OOM at the 1M default.** They sent no `options`, so they inherited `num_ctx 1000000` and its ~60 GB KV allocation; they now pin `num_ctx: 4096, num_batch: 256` (the documented constrained-host config). - **Modelfile hardware note:** corrected the stale "pass via `-o` on `ollama run`" override hint — no such flag exists; use `/set parameter num_ctx …` in the interactive `ollama run` REPL (or the API `options`). - **Ollama vision-bug citations point at the open tracker.** The README loader table, `examples/README.md`, `examples/llama_cpp_vision.py`, and `scripts/fetch_vision.sh` cited ollama/ollama#15898, which was closed 2026-05-19 as a duplicate — readers clicking through saw "Closed" and could assume vision was fixed. All four now cite the open canonical tracker ollama/ollama#14575 (the arch-sync PR #15899 was closed unmerged; vision via Ollama remains broken for this arch). - **`examples/README.md` no longer calls `0.6/0.95/20/1.05` the shipped defaults.** The Fable-matched sampling change (above) repositioned that profile as the tighter-reasoning override, but the examples README still described it as "the sampling defaults" all four examples share — untrue since `ollama_chat.py` inherits the new `temperature 1.0` / `top_k 0` from the bridge files while the three non-Ollama scripts pin 0.6/20 explicitly. The wording now states which profile each path actually uses. ### Changed (default context window 262144 → 1000000, a ~1M advertised ceiling) - **`num_ctx` default raised 262144 → 1000000** in `params` and the `Modelfile` (bridge-sync kept in sync), matching the dense sibling `FoolDev/Thanatos-27B-HERETIC`. This targets a ~1M ceiling **above** the 262 144 native trained window. The bundled GGUF has **no YaRN rope-scaling** (`rope.freq_base 10M`, no `rope.scaling`), so positions past ~262K use untrained RoPE and degrade — 1M is a capability-first *advertised* ceiling, not a coherent context. `num_ctx` stays a per-run **ceiling, not a floor**, and KV grows to ~61 GB at 1M (q8_0, ~2 GB/32K → ~99 GB total; theoretical, extrapolated), so memory-constrained hosts must override `num_ctx` down at load (the 262 144 native window → ~16 GB KV / ~53 GB total; `num_ctx 32768` → ~2 GB KV). The Z13 runs `num_ctx ≤ 4096`. Native-context checks stay at 262 144 (the GGUF's trained window, unchanged). ### Added (convenience scripts mirrored from Thanatos-27B) - **`scripts/smoke_test.sh`, `scripts/bench.sh`, `scripts/load_bundle.sh`** — ported from the dense sibling `FoolDev/Thanatos-27B-HERETIC` and adapted to Janus conventions (default Ollama tag `janus`, bundle `Janus-35B-A3B.Q4_K_M.gguf`, `qwen35moe` arch, no Makefile — invoked directly as `./scripts/.sh`). `smoke_test.sh` checks a running Ollama daemon (reachability, model load, `tools` capability, chat round-trip, control-token leak guard; `TOOLS_TEST=1` adds a tool-call round-trip); `bench.sh` reports tok/s from Ollama's eval timing over a short/medium/long prompt mix; `load_bundle.sh` loads the bundled GGUF into Ollama as a local tag without an upstream pull. `load_bundle.sh` drops the sibling's qwen36→qwen35 rebadge branch — Janus's bundle is already `qwen35moe`-stamped and there is no `rename_arch.py`. README "What's here" table updated. ### Fixed (post-rebundle README drift) - **Hardware section GGUF size `18.9 GB` → `~19 GB`** — matches the actual ~19.8 GB bundled file and the `~19 GB` already used in the TL;DR, the "What's here" table, and the Ollama quick-start. - **Dropped the stale "until the bundled blob is rebundled" note** from the Heretic-GGUF row of the "Related models" table. The rebundle is complete (see the base-swap entry below and the "Bundled blob status" callout); the row now reads "pull other quants here; the bundled Q4_K_M is already this Heretic quant." ### Added (repo hygiene) - **`.gitignore`** — mirrors the dense sibling `FoolDev/Thanatos-27B-HERETIC`, tailored to Janus: ignores Python caches / venvs, HF / `scripts/build.sh` runtime artifacts (`.cache/`, `*.incomplete`, `*.lock`), and stray weights (`*.gguf` / `*.safetensors` / `*.bin`) while keeping the shipped `Janus-35B-A3B.*.gguf` that backs the "Use this model" widget. Omits the sibling's `scripts/rename_arch.py` rebadge-ignore line (Janus has no such script). ### Fixed (upstream mmproj reference) - **README "Known limitations" mmproj filename `Qwen2.5-VL-*-mmproj-*.gguf` → `Qwen3.6-35B-A3B-uncensored-heretic-mmproj-BF16.gguf`** — the old reference pointed at a Qwen 2.5-VL projector that doesn't exist for this base and would not load against the Qwen 3.6 weights. The correct vision projector ships in [`llmfan46/Qwen3.6-35B-A3B-uncensored-heretic-GGUF`](https://huggingface.co/llmfan46/Qwen3.6-35B-A3B-uncensored-heretic-GGUF); the dense sibling already references its own `Qwen3.6-27B-mmproj-BF16.gguf`. ### Changed (sibling parity) - **Model-details context line `262k … ~1M` → `262 144 … ~1 M`** — mirrors the dense sibling's exact wording and drops the ambiguous `262k` rounding (262 144 = 256 × 1024, not 262 000). ### Changed (default context window 16384 → 262144, the native max) - **`num_ctx` default raised 16384 → 262144** in `params` and the `Modelfile` (bridge-sync kept in sync) — the model's full native context. The old 16K window exhausted mid-conversation on a reasoning-distilled model that emits long `` traces (triggering Ollama context-shift); the default is now capability-first — it exposes the whole 262 144-token window instead of a conservative slice. `num_ctx` is a per-run **ceiling, not a floor**, so memory-constrained hosts override it down at load (e.g. `num_ctx 32768` → ~2 GB KV, ~39 GB total; the Z13 row keeps the `num_ctx ≤ 4096` guidance). At the 262K default, KV cache is ~16 GB (q8_0) for a ~53 GB theoretical footprint, so most hosts must trim. (This default passed through 32768 before landing at the native max.) ### Added (examples/ suite + vision tooling — parity with Thanatos-27B) - **`examples/` directory, `scripts/fetch_vision.sh`, and a `## Vision` README section.** Ports the dense sibling's runnable clients and vision path, adapted to Janus: bundle `Janus-35B-A3B.Q4_K_M.gguf`, arch `qwen35moe`, projector `Qwen3.6-35B-A3B-uncensored-heretic-mmproj-BF16.gguf` (~903 MB, BF16 only) from `llmfan46/Qwen3.6-35B-A3B-uncensored-heretic-GGUF`, with the `unsloth/Qwen3.6-35B-A3B-GGUF` `mmproj-F16.gguf` as the F16/F32 fallback. - `examples/ollama_chat.py` (chat / streaming / tool round-trip / OpenAI-compat, default `MODEL=janus`), `examples/transformers_quickstart.py` (Heretic safetensors, 4-bit ~20 GB / bf16 ~70 GB, MoE keeps all experts resident), `examples/llama_cpp_quickstart.py` (GGUF, no daemon), `examples/llama_cpp_vision.py` (image-text-to-text via llama-cpp-python), and `examples/README.md`. The index is adapted to Janus's direct-script flow (`./scripts/build.sh`, `./scripts/load_bundle.sh`, `./scripts/fetch_vision.sh`) — Janus has no Makefile and, being already `qwen35moe`-stamped, no heal/rebadge step. - `fetch_vision.sh` pulls the projector; the Vision section documents the llama.cpp loader path and the Ollama-vision-broken caveat (`unknown model architecture: 'qwen35moe'`, ollama/ollama#15898). - "What's here" table + "Inference examples" pointer updated. ### Changed (HF repo rename → FoolDev/Janus-35B-HERETIC) - **HF repository slug renamed `FoolDev/Janus-35B` → `FoolDev/Janus-35B-HERETIC`.** The old slug now 307-redirects to the new one. The model's **display name stays `Janus-35B`** — only the repo path / URLs change. Repointed every live self-reference to the new slug: the README banner / `bmc-banner` / `moe-routing` `resolve/main/...` image URLs, the `ollama run hf.co/...` pull one-liners (TL;DR + Ollama Quick start), the `git clone` + `cd` line, the bridge-files table row, and `CITATION.cff`'s `repository-code` / `url`. `scripts/build.sh` defaults (`REPO_ID` upstream `llmfan46/...`, local `janus` Ollama tag) don't reference the FoolDev slug, so they were left as-is. Also repointed the dense-sibling cross-links (README "Related models" row + `CITATION.cff` references entry) to `FoolDev/Thanatos-27B-HERETIC`, and set the git remote to `git@hf.co:FoolDev/Janus-35B-HERETIC`. Past-tense CHANGELOG history (redirect notes, the earlier lowercase-`janus` fix) is preserved verbatim. ### Added - **`scripts/build.sh`** — self-contained builder that pulls a GGUF from [`llmfan46/Qwen3.6-35B-A3B-uncensored-heretic-GGUF`](https://huggingface.co/llmfan46/Qwen3.6-35B-A3B-uncensored-heretic-GGUF) (default `Q4_K_M`), patches the `Modelfile` `FROM` line in a temp copy, and runs `ollama create janus`. Mirrors the dense sibling's (`FoolDev/Thanatos-27B`) `build.sh`, adapted for the 35B-A3B MoE, and gives Janus a reproducible path to build other quants locally. README "What's here" table and the bundled-blob-status callout now point at it. ### Changed (base swap → llmfan46 Heretic) - **Swapped the immediate base from `Qwen/Qwen3.6-35B-A3B` (vanilla) → [`llmfan46/Qwen3.6-35B-A3B-uncensored-heretic`](https://huggingface.co/llmfan46/Qwen3.6-35B-A3B-uncensored-heretic)** — an uncensored "Heretic" abliteration of the same Qwen 3.6 35B-A3B MoE (`qwen35moe`-stamped like the vanilla base, so the Architecture section, the MoE-routing framing, and the bundled blob's loadability are all unchanged). Mirrors the dense sibling's swap (`FoolDev/Thanatos-27B` → `llmfan46/Qwen3.6-27B-uncensored-heretic-v2`). Repo name `Janus-35B`, the `janus` Ollama tag, the `FoolDev/Janus-35B` URL, and the Claude Fable 5 teacher slot are all unchanged. - README: frontmatter `base_model:` + `base_model_relation: finetune`; `heretic` / `uncensored` tags added (`library_name: transformers` kept). Base badge, tagline, fact line (`Type: Distilled + Abliterated MoE`), fork paragraph, safetensors pointer, Related-models table, Credits, and the "uncensored base" known-limitation reframed to the Heretic lineage. `Qwen/Qwen3.6-35B-A3B` is still referenced as the upstream pre-Heretic base. Added a "Bundled blob status" callout and the Heretic-GGUF / MTP-Preserved variant rows. The Thanatos sibling row updated to its own new Heretic base. - `CITATION.cff`: title, abstract, keywords, and references reframed to the Heretic base (immediate base + upstream base both cited). - `banner.svg` subtitle → "Qwen 3.6 Heretic · MoE 35B/3B · Fable 5"; `banner.png` re-rasterized from the updated SVG. - **Bundled `Janus-35B-A3B.Q4_K_M.gguf` rebundled** — replaced the legacy pre-Heretic Qwen quant with the Heretic Q4_K_M from `llmfan46/Qwen3.6-35B-A3B-uncensored-heretic-GGUF` (`qwen35moe`-stamped; 40 layers / 256 experts / vocab 248,320 verified against the README Architecture). Serves the uncensored Heretic behavior directly. ### Changed (support badge → Tokyo Night banner) - **Replaced the shields.io "Buy me a coffee" badge** in the README badge row with a custom `bmc-banner.svg` support banner, themed to match `banner.svg` (same Tokyo Night gradient, monospace wordmark, warm `#e0af68` accent; animated rising steam, a pulsing hot-cup glow, a sweeping warm scan beam, a slow shimmer on "coffee", and a blinking cursor). Links to the unchanged `buymeacoffee.com/cardoffoolm`. Adds `bmc-banner.svg`; no other badge or link changed. ### Changed (dense-sibling references reconciled → FoolDev/Thanatos-27B) - **Sibling slug aligned to the canonical `FoolDev/Thanatos-27B`** in the README "Related models" row, `CITATION.cff` references entry, and both `Modelfile` comments (previously the stale `FoolDev/janus-27b` / `Thanatos-27B-Heretic`). Per the sibling repo, `Thanatos-27B-Heretic` now 307-redirects to `Thanatos-27B`, which sits on the `llmfan46/Qwen3.6-27B-uncensored-heretic-v2` Heretic base — so the README row cites that Heretic base and corrects the redirect direction. ### Fixed - **CITATION.cff self-reference** `repository-code` / `url` corrected from the non-resolving `https://huggingface.co/FoolDev/janus` (lowercase, missing the `-35B` suffix — returns HTTP 401) to the canonical `https://huggingface.co/FoolDev/Janus-35B` used everywhere in the README. ### Changed (teacher label — Opus 4.7 → Fable 5) - **Reasoning-teacher references** relabeled from `Claude Opus 4.7` to `Claude Fable 5` across the model card (TL;DR, architecture line, intro, Credits, and the "Related models" sibling row), `banner.svg`, and `CITATION.cff`. The external dataset slug `crownelius/Opus-4.7-Reasoning` in the metadata is left unchanged — it is a real Hugging Face dataset path, not a teacher label. ### Changed (sibling rename — Thanatos-27B → Thanatos-27B-Heretic) - **README "Related models" row** updated to point at `FoolDev/Thanatos-27B-Heretic` (the dense sibling renamed from `FoolDev/Thanatos-27B` on 2026-05-23 along with a base swap to `llmfan46/Qwen3.6-27B-uncensored-heretic-v2`, an uncensored Heretic-style abliteration of Qwen 3.6 27B). Description now notes the Heretic base, the uncensored property, and the old-path 307 redirect HF serves. ### Added - Root-level `template`, `system`, and `params` files for HF's Ollama bridge. The bridge generates Ollama manifests at request time from these three files (NOT from `Modelfile` — confirmed against https://huggingface.co/docs/hub/en/ollama). Without them, `ollama run hf.co/FoolDev/Janus-35B` got an auto-generated manifest with the broken `{{ if .Prompt }} .Prompt }}<|im_end|>` template (Ollama's faulty Go-template conversion of the GGUF's embedded jinja), corrupted stop tokens (`".Prompt }}<|im_end|>"` bleed), and no `.Tools` / `.ToolCalls` blocks — so the published Ollama tag advertised `completion` only and rejected any request with a `tools` array. The three files mirror the `Modelfile`'s `TEMPLATE` / `SYSTEM` / `PARAMETER` directives; both routes wire tool calling correctly. Edit them together when changing one. Verified by re-pulling the fresh tag: `ollama show hf.co/FoolDev/Janus-35B` now reports `completion`, `tools`, `thinking` and tool calls round-trip end-to-end through `/api/chat`. ### Changed - README "Tool / function calling" section: split into explicit Ollama-path and embedded-jinja-path subsections. Earlier wording conflated the two on-the-wire formats. The Ollama path (Modelfile `TEMPLATE` and the new `template` bridge file, both kept in sync) prompts JSON-in-XML — the form Ollama's tool-call extractor parses into a structured `tool_calls` array. The embedded-jinja path (llama.cpp, llama-cpp-python, LM Studio) reads the Qwen 3.6 native chat template baked into the GGUF, which prompts the verbose `` / `` form the model was trained on. Both are valid; the model adapts to whichever shape the system prompt prescribes. README now shows both formats side by side. - README "Quick start / Ollama" section: documents both pull paths (`hf.co/...` via bridge files vs `make ... -f Modelfile` locally) and explicitly notes that HF's bridge does not read `Modelfile`. - README "Hardware requirements" intro: re-framed the "~38 GB minimum" claim as "~38 GB at default `num_ctx 16384`" and documented that 32 GB hosts can fit the model by trimming context and batch size. - README "Quick start / Ollama" snippet: show both `ollama run hf.co/FoolDev/Janus-35B` and the explicit-tag form `ollama run hf.co/FoolDev/Janus-35B:Q4_K_M`. Same blob (the default tag maps to Q4_K_M), but parity with the 27B sibling — which lists both `:latest` and `:Q3_K_S` — and removes ambiguity for users scripting against an explicit quant tag. Verified the explicit tag resolves to the same manifest (model SHA `a076aa0d3a1a`, bridge blobs `22c7ade72045` / `84a1a6ac580b` / `f7b1992cf9c1`). ### Added (cont'd) - README `## TL;DR` section near the top of the model card, mirroring the 27B sibling. Two paths (HF Ollama bridge / local Modelfile build) with explicit tags and a one-line capability check. Notes the bridge ingests `template` / `system` / `params`, not `Modelfile`, so users skimming the top of the page won't form the wrong mental model of which file gets used when. - `CITATION.cff` for citation metadata (Apache-2.0, references the upstream Qwen3.6-35B-A3B base and the dense Janus-27B sibling). The 27B sibling has had this file since 0.5.0; adding here for parity so academic-style citations work across both repos. - `LICENSE` file containing the full Apache 2.0 text. The model card front-matter has always declared `license: apache-2.0` and the upstream Qwen 3.6 license inherits Apache-2.0, but until now the repo lacked the actual license text file. Same Apache 2.0 text shipped in the 27B sibling. - `scripts/check_bridge_sync.py` — regression guard for the `Modelfile` <-> `template` / `system` / `params` sync invariant. The two configurations are consumed by different code paths (`ollama create -f Modelfile` for local builds vs HF's Ollama bridge for `hf.co/...` pulls — HF does not read `Modelfile`), so drift between them re-introduces the bug fixed in commit 70ccef1 where `hf.co/FoolDev/Janus-35B` shipped a broken auto-generated template while local builds had the correct one. Script parses the Modelfile's `TEMPLATE` / `SYSTEM` / `PARAMETER` directives, loads the three bridge files, and fails on any mismatch with a per-key diff. Run on demand before pushing edits to either side of the configuration. The 27B sibling wires an equivalent script into a pre-commit hook (commit 5c67b08); this repo stays leaner and runs it manually. ### Fixed - README "Chat template" intro previously claimed all loaders handle the embedded jinja automatically. True for llama.cpp / LM Studio / llama-cpp-python; not true for Ollama, which needs an explicit override (the `Modelfile` TEMPLATE block locally, the root-level `template` file when serving via `hf.co/...`). - README "Tool / function calling" earlier said the XML form `` is "not what this model produces". That was wrong: the embedded GGUF jinja prompts exactly that form, and llama.cpp / LM Studio / llama-cpp-python users will see it. The "JSON-in-XML" claim only applies on the Ollama path because that's what the Modelfile TEMPLATE prompt instructs. ## [0.1.0] — initial public release ### Added - Model card with architecture overview, sampling defaults, hardware table, and `Modelfile` for `ollama create janus -f Modelfile`. - Bundled `Janus-35B-A3B.Q4_K_M.gguf` (~19 GB) via Git LFS so the HF "Use this model" widget surfaces a working `ollama run` snippet. - Tokyo Night themed banner (PNG sourced from the SVG). - Status badges for license, base model, architecture, quant. - Linked sibling `FoolDev/janus-27b` (dense Qwen 3.6 27B base) under Related models.