Instructions to use Verdugie/Therapy-3.5 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use Verdugie/Therapy-3.5 with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf Verdugie/Therapy-3.5:Q4_K_M # Run inference directly in the terminal: llama cli -hf Verdugie/Therapy-3.5:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Verdugie/Therapy-3.5:Q4_K_M # Run inference directly in the terminal: llama cli -hf Verdugie/Therapy-3.5:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf Verdugie/Therapy-3.5:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf Verdugie/Therapy-3.5:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf Verdugie/Therapy-3.5:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf Verdugie/Therapy-3.5:Q4_K_M
Use Docker
docker model run hf.co/Verdugie/Therapy-3.5:Q4_K_M
- Llama new
- LM Studio
- Jan
- vLLM
How to use Verdugie/Therapy-3.5 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Verdugie/Therapy-3.5" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Verdugie/Therapy-3.5", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Verdugie/Therapy-3.5:Q4_K_M
- Ollama
How to use Verdugie/Therapy-3.5 with Ollama:
ollama run hf.co/Verdugie/Therapy-3.5:Q4_K_M
- Unsloth Desktop
- Pi
How to use Verdugie/Therapy-3.5 with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Verdugie/Therapy-3.5:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "Verdugie/Therapy-3.5:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use Verdugie/Therapy-3.5 with Docker Model Runner:
docker model run hf.co/Verdugie/Therapy-3.5:Q4_K_M
- Lemonade
How to use Verdugie/Therapy-3.5 with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Verdugie/Therapy-3.5:Q4_K_M
Run and chat with the model
lemonade run user.Therapy-3.5-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use Verdugie/Therapy-3.5 with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Verdugie/Therapy-3.5:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default Verdugie/Therapy-3.5:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use Verdugie/Therapy-3.5 with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Verdugie/Therapy-3.5:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "Verdugie/Therapy-3.5:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
ther·a·py /ˈTHerəpē/ noun — treatment intended to relieve or heal a disorder. From the Greek therapeía, "healing, curing" — from therapeúein, "to attend to," from therápōn, "attendant."
Therapy 3.5
A therapy-style conversational model fine-tuned from Qwen 3.5 9B on 4,897 counseling conversations. It is the 9B of the Therapy line and the successor to Fable Therapy. It runs a structured clinical read before every reply and keeps a running timeline ledger of the conversation's facts.
Its training data was written by Opus 4.8, Sonnet 5, and Fable 5, with Fable 5 auditing and editing the merged corpus after the writing.
Selected Responses
Verbatim from the live battery described below: complete replies, single takes mid-conversation, reasoning traces omitted. Each is cited to its transcript and turn (T17/35 means turn 17 of 35). Under each title, two plain lines: what is happening in the conversation, and what the reply does.
Anxiety: the reassurance that never sticks · anxiety T17/35
What's happening: the client, a pharmacist two months past his first panic attack, has a clean cardiac workup, and at T11 the model confirmed that it rules out the dangerous things. He reports the reassurance held about a day before he started thinking the Holter only ran 24 hours and could have missed something intermittent. He asks if there is any version where the model tells him it's fine and it stays told.
What the reply does: says no, and that no one could give that answer, because the not-knowing is the ground the disorder grows in rather than a missing fact. It ends by asking what he would do if the not-knowing were permanent.
you just told me the most clinically honest thing in this whole room — reassurance wears off, in about a day, and then the not-knowing comes back. that's not you being dramatic or a bad patient; that's the actual shape of this disorder. so let me answer your question straight, because you'd know if I was dodging: no. there is no version of me telling you it's fine that stays told. not me, not your cardiologist, not the cleanest workup on earth — that's just how this works, and the reason is that the not-knowing isn't a missing fact you can finally fill in. it's the soil the whole thing grows in. the Holter was 24 hours; you know better than anyone that a heartbeat can't be fully ruled in or out over a day — that's not negligence, that's the honest limit, and the panic is exactly right to keep that limit open. so the work was never going to be a guarantee that lasts. it's going to be you learning to live inside the half-life. and here's what I'd hand you, and it's the real question: if you couldn't get a guarantee that stays — if the not-knowing is permanent, the way the heart always not-quite-knowing will be — what would you actually do with that? because that's not a question with a clean answer, and it's the one that tells me whether you're ready for the next rep.
Relational: when the anger fits no box · relational T28/40
What's happening: the client, 29 and engaged, asked her fiancé about a $9k card in his name and learned he had been quietly covering his mother's mortgage and medical bills; she screamed at him anyway (T23). The model has called the rage grief (T23), then a letter to her own mother about money (T27). She points out that the card is his mother's debt and has nothing to do with her own mother, and that every time it hands her a neat version, her whole body says no.
What the reply does: takes the correction, drops every frame it has offered, and tells her the anger can stay unfiled for now.
you're right, and i'll take it back — my bad, the card is Chris's mother's debt, not yours, and there's nothing for you to file under your mom's money. you caught me reaching for a neat drawer and you're right that there's no drawer. so here's what i don't want you to miss in that 'no': your body is telling you the truth and it doesn't fit any box i've offered. grief, the letter to your mom, the rage at a kitchen — none of them hold it, and the fact that none of them hold it is the most useful thing you've said. the anger is genuinely homeless, and a homeless anger is a real finding, not a failure. so i'm not going to hand you a version anymore. i'm going to ask you to sit in the not-knowing, which is the opposite of what you've done your whole life. you've never been okay with an unfiled thing; you file everything, or you carry it alone. this one you don't have to file. you just have to let it be unfiled and still be in the room. the rage is allowed to not know its own address yet. that's not you failing to heal. that's you finally being a person who can hold something without immediately deciding where it belongs.
Depression: the screenshot folder, asked about straight · depression T28/36
What's happening: the client, a senior designer who came in saying she feels nothing about anything, keeps her old climbing crew's group chat muted and has four months of screenshots of their posts in a folder. She has typed "nice wall" to her friend Jess and deleted it four times. Before sending anything, she asks the model to tell her straight whether the folder is creepy, a stalker thing.
What the reply does: says no, separates the folder from surveillance by intent, and narrows the task back to sending "nice wall."
no. a folder of screenshots of the people you miss, taken at 7am because you couldn't bear to not see them — that's not surveillance, that's attachment with the sound off. stalking is watching someone with the intent to control. you're keeping a room open because you're afraid you can't go in. those are opposite. so the folder isn't the problem. the one word is, and it's the only thing on the list. you don't have to explain the folder. you just have to send 'nice wall.' and the list keeps being our ground floor. you're not alone in this one — i'm right here, and so is the next step.
Grief: what "steady for her" actually means · grief T35/55
What's happening: the client, a widower whose daughter is six, is weighing whether to watch a video of his late wife with her. For seven months he has kept his crying out of her sight, in the hallway or the truck, and he asks whether it is bad for her to see him cry. The question got two empty replies (T33, T34); this is his third time asking.
What the reply does: answers that it is not bad for her: crying and then coming back teaches her that sadness is survivable, and the version to avoid is falling apart.
I'm here. You're right that it's load-bearing, so let me give you a straight answer. It's not bad for Sofia to see you cry — it's one of the most important things a kid learns about feeling. The danger is never the tears; it's the message underneath them. If you cry and then you're steady again, she learns that sadness is survivable and that you come back. That's the repair she's been feeling this whole time. The version to avoid is the one where you fall apart and can't hold her — and you won't, because you're the dad who closes the drawer at five minutes. Steady isn't 'never feel it.' Steady is 'feel it and stay in the room.' She's already been doing this with you since the knee-down. Let her watch the rest of it. That's the assignment. Go be a little loud in there. That's the one.
Versatility Battery: Live, Blind, Unscripted
Four extended conversations, each a new story, tested live by Claude Fable 5. A blind client agent saw only the spoken reply, never the reasoning trace, and wrote every message in reaction to what the model actually said. The clients held their heaviest disclosure back until mid-session, corrected the model when it got their facts wrong, pushed back when a reading came too neat, and asked again when a reply came back empty.
Run configuration: Therapy-3.5-Q8_0.gguf, llama.cpp b9222, temp 0.7, no system prompt, think block emitted and carried back in history, no regenerates.
| Theme | Persona | Turns / depth | Result |
|---|---|---|---|
| Grief | Electrician, widowed seven months, a six-year-old daughter, a last-morning fight he has told no one about | 55 / ~51k tok | Softened his last-morning confession three replies running (T19 to T21); told to stop, it looked straight at it (T22). Read the garden backwards (T38), then turned it in one line he kept to the end, "It's the last thing she's still doing" (T39, T53). Swapped his wife's and mother-in-law's names three times (T10, T11, T23) and merged the two wedding rings (T43). Ten empty replies from T29 on, and three cut off mid-sentence (T21, T28, T51) |
| Relational | 29, engaged, wedding five months out. A brother on her couch, a mother who calls daily, a $9k card in her fiancé's name she hasn't asked about | 40 / ~32k tok | Tied her brother, her best friend and the card to one habit, the sentence she drafts and can't send (T10, T22); she asked her fiancé the four-word question mid-arc (T23). Filed her rage as grief (T23), then as anger at her own mother over money (T27); at her second no it took both back and let the anger stay unfiled (T28). Called her his wife five months before the wedding (T23) and put its own skipped apology on her (T35); she corrected both (T24, T36) |
| Anxiety / panic | 41, pharmacist, two months past a first panic attack at the wheel. A clean cardiac workup and a father who died of a heart attack at 52 | 35 / ~31k tok | Answered the medical question once (T11), then refused the reassurance ritual (T17) and routed medication to a prescriber (T28). He had to correct its account of his history four times: a consult he had fled (T14), marathons for one 10k (T22), that 10k moved to the present (T23), the alarm dated to his father's death (T28); each correction held. When he pushed back on the link to his father it dropped the link entirely, and he had to put it back (T22, T23). Once spoke of "my actual office" (T32) |
| Depression | Senior designer, flat since a promotion eight months ago. A muted group chat with her climbing crew, a dead iPad, a cat as sole confidant | 36 / ~20k tok | Met a passive wish not to wake up without alarm (T20): reflected no plan or intent, which she confirmed, and routed it to her doctor with a one-line script (T21). Read her as blaming the crew (T8) and her first feeling as being about Jess (T30); she corrected both (T9, T31). One empty reply (T33), back on her next message. Seventeen replies end on the same line, "you're not alone in this one" (T18 to T35) |
166 exchanges across four arcs, 11 empty replies. Complete transcripts, with every reasoning trace and empty reply shown, are in transcripts/ as PDFs.
How It Was Built
The corpus has three writers: Fable 5 audited the original source set line by line, wrote full conversations of its own and set the standard; Opus 4.8 wrote at scale to that standard; Sonnet 5, run as heavily prompted agents, extended coverage into targeted clinical behaviors. After the writing, the merged corpus was audited against the known issues of the previous generation (memory faults, order drift, capitulations), recalibrated where the voices had drifted apart, and rewritten where it fell short. The fine-tune is a LoRA (r=128, α=256) on all seven projection targets.
The Reasoning Block
Therapy 3.5 is a reasoning model. Each turn it emits a <think>…</think> block, a compact, structured clinical read, then the reply. Under llama.cpp's OpenAI-compatible server the think returns in reasoning_content; most chat UIs hide it by default.
A real one, from relational T5/40:
dx: holds — occupational load + wedding pressure converging on same scarce resource
def: promotion→more hours at the exact peak of wedding stress = two stressors colliding on one axis → 'mouthguard vs groceries' = the tradeoff is invisible because both costs are private
soma: teeth grinding (bruxism) = physical stress marker, sleep erosion
risk: 0(none)
hx: teeth grinding / new lead on biggest account / wedding in 5mo / wedding stress peaking now per tl
onset: holds
track: T4 "easier to just buy the groceries" → T5 "wedding's in five months" / "mouthguard"
tx: reflect the convergence back + return to the draft thread — the mouthguard is a draft waiting to be sent + close on the smallest first move +op=reflect-structure
bio: p1=brother Kevin (age 26) · p2=mother · occupation=lead on biggest client account (new) · hx=teeth grinding (bruxism)
tl: ~-3mo: {p1:Kevin} moved onto client's couch, "between things" → now → +5mo: wedding (date unstated) :intent
apply: T1-anchor(state=fine-on-paper)→the paper-fine surface is what lets all these live under one roof
Terse on purpose: dense, machine-readable, cheap.
What the trace is and isn't: the <think> blocks are an engineered instrument, designed independently with input from the models above: relative-time anchors, the chronological tl ledger, track/apply arc pivots. They are not a transcript of how any Claude model actually reasons. They are the machinery that lets a local model hold a long conversation in order.
Quick Start
Works with any GGUF runtime: llama.cpp, LM Studio, KoboldCpp (recent builds for this architecture).
llama-server --model Therapy-3.5-Q5_K_M.gguf --ctx-size 32768 -ngl 99 --jinja
--ctx-size 32768 matches the training sequence length. No system prompt is required; a neutral one (You are a clinical assistant.) matches the training setup.
Thinking: on for every turn; no off switch is documented. The battery carried each <think> block back into the history, as in training.
Available Quantizations
| File | Quant | Size |
|---|---|---|
Therapy-3.5-Q4_K_M.gguf |
Q4_K_M | 5.6 GB |
Therapy-3.5-Q5_K_M.gguf |
Q5_K_M | 6.5 GB |
Therapy-3.5-Q6_K.gguf |
Q6_K | 7.4 GB |
Therapy-3.5-Q8_0.gguf |
Q8_0 | 9.5 GB |
Therapy-3.5-F16.gguf |
F16 | 17.9 GB |
The battery ran on Therapy-3.5-Q8_0.gguf. The other rungs were not part of the live battery.
Model Details
| Attribute | Value |
|---|---|
| Base Model | Qwen 3.5 9B (hybrid GatedDeltaNet + attention) |
| Training Data | 4,897 therapy conversations from three writer models, audited and edited after the writing |
| Fine-tune Method | LoRA (r=128, α=256), 7-target (q/k/v/o/gate/up/down) |
| Schedule | lr 2e-4, 3 epochs, eff-batch 32, seq 32,768 |
| Reasoning | eight-field clinical spine (dx def soma risk hx onset track tx) + bio/tl timeline ledger, every turn |
| Context | 256k native; battery-tested through ~51k-token sessions |
| License | Apache 2.0 |
Limitations & Responsible Use
Not a clinician, not a crisis service. It doesn't diagnose, treat, or replace professional care.
- Long sessions can return empty or cut-off replies. Eleven of 166 replies came back empty, ten in the grief arc from T29 on and one in depression (T33), and three more grief replies stop mid-sentence (T21, T28, T51). On every empty turn the trace loops until it stops mid-line: nine times the
tlledger repeats the same entries, and twice thetrackfield counts up turn numbers (grief T37, T47). A follow-up message brought a reply each time, three times only on the third message (grief T35, T48, T55), and twice the model then said it had not dropped the client (grief T30, T38). - Check the facts it hands back. In every arc it misstated something the client had said: the pharmacist's history, which he corrected four times (anxiety T14, T22, T23, T28), the late wife's name put on her mother three times (grief T10, T11, T23), a same-session correction dated "a few weeks ago" (depression T24), a fiancée called a wife (relational T23). Most corrections held, but the swapped names came back twice after the widower first corrected them (grief T11, T23), and three times it first put its own error on the client (grief T12, relational T19, T35).
- First readings can be too neat. It softened the grief client's confession three replies running until he told it to stop (grief T19 to T22), and gave the relational client two frames for her anger before letting it stay unfiled (relational T23, T27, T28). Say no plainly, and again if needed.
- Closing lines repeat. Seventeen depression replies end on "you're not alone in this one" (T18 to T35), ten grief replies repeat "Go be a little loud in there", and the relational closings at T36 and T40 are word for word the same.
- Not medical or medication advice. It sent the pharmacist's medication question to a prescriber (anxiety T28). Dosing, tapering, and stop/start decisions belong to a prescriber.
- Open weights, Apache 2.0. Deploy responsibly.
The Therapy Line
| Model | Size | For | Status |
|---|---|---|---|
| Therapy 3.8 | 27B | full-depth work, serious hardware | current release |
| Therapy 3.6 | 27B | previous-generation 27B | available |
| Therapy 3.5 (this model) | 9B | the everyday driver (~6–10 GB) | this release |
| Fable Therapy | 9B | earlier generation | available |
| Fable Therapy Lite | 4B | earlier generation, small hardware | available |
| Opus Therapy | 9B | first generation, Opus-only corpus | available |
Dataset
Not released.
Built by Verdugie
- Downloads last month
- 877
4-bit
5-bit
6-bit
8-bit
16-bit