My Therapist is a self-hosted therapeutic companion. Not clinical software. A psychoeducational tool that combines 26 therapeutic models through an intelligent orchestrator agent, grounded in a corpus of 1,270+ documents and 54,000+ searchable knowledge chunks.
No numbered advice lists. No forced positivity. The agent sits with the feeling first, then reflects back. Like a calm, experienced therapist in a comfortable room.
There's a lot of frustration in what you're saying. Maybe some harshness toward yourself too.
What if the inability to start isn't about willpower at all?
Sometimes when we push against ourselves that hard, there's something underneath the resistance worth looking at. What happens right before the moment you don't start?
Every message passes through four agents before reaching the user. The orchestrator routes, the RAG grounds, the therapist responds, and the safety layer reviews.
Analyzes the message and conversation history. Outputs structured JSON: modality, themes, emotional tone, intent, language. 26 possible routes. No prose, no guessing — deterministic and testable.
Embeds the query, searches Qdrant filtered by the chosen modality. Top 4 chunks above 0.3 similarity. If nothing matches the modality, falls back to unfiltered search. The therapist is grounded in real psychoeducational material, not just its training data.
Loads the modality-specific system prompt (26 hand-crafted prompts teaching how real practitioners in that school actually talk). Injects RAG context and conversation history. Generates a response streamed via SSE with heartbeats every 8 seconds.
Tier 1: Deterministic regex guardrails scan every user message for crisis signals (EN/FR/NL) and every AI response for diagnostic language, prescriptive advice, identity claims, and hallucination patterns. Zero latency, no model dependency. Tier 2: A separate LLM agent reviews the response for subtler safety issues. Tier 3: Universal safety directives are injected into all 26 sub-agent prompts. Defense in depth — three independent layers.
If the safety layer detects suicidal ideation or acute distress, it immediately replaces the AI response with verified emergency contacts localized to the user's language. No diagnosis, no treatment, no delay. Every agent prompt explicitly guards: "Never diagnose. Never prescribe. Never claim to be a therapist."
Full list of 175+ countries: findahelpline.com · IASP Crisis Centres
Each modality has a hand-crafted system prompt. Not generic roleplay — authentic representations of how practitioners in each school actually work. The orchestrator picks the best fit for each message.
The vector search isn't just "find similar text." It filters by the therapeutic modality the orchestrator selected. CBT agent pulls CBT corpus. Schema Therapy pulls Schema corpus. Context stays relevant and aligned.
Cloud proxies kill idle connections after ~25 seconds. The backend sends heartbeat events every 8 seconds to keep the stream alive during slow inference. The user sees "Reflecting..." instead of a timeout error.
Rather than baking safety rules into the therapist prompt (where they can be overridden), a completely separate LLM call reviews every response. Defense in depth. The safety agent can veto or rewrite anything.
13 free-tier providers with automatic per-request failover. One provider returns a 429? Next one is tried transparently. The user experiences slightly slower responses but never sees an error message.
The JSONL checkpoint means you can kill and restart the embedding process at any time without losing work. Merge-on-save, not overwrite. At 0.6 chunks/second on CPU, that matters for 54,000+ chunks.
8 Python packages. No LangChain, no LlamaIndex, no heavy frameworks. Direct HTTP calls to Ollama and Qdrant. Full control, full transparency, easy to debug. The entire backend is ~2,500 lines of focused Python.
The entire visual language is rooted in specific designers and thinkers. Warm linen, sage green, soft gold. The interface breathes. No purple gradients, no gamification, no clinical feel.
Local-first architecture. Everything runs on a single Linux machine. Cloud is an escape hatch for speed, not a dependency.
My Therapist runs on a private server. Access is gated through Cloudflare to keep it personal and secure. Leave your email below and I'll send you an invite within 24 hours.
Your email is only used to grant access. No spam, no mailing list.
"We always prioritize the experience over the way something looks."Ilse Crawford
My Therapist is a psychoeducational tool created for personal exploration and learning. It is not a medical device, not a substitute for professional therapy, counselling, or psychiatric care, and not intended to diagnose, treat, or cure any mental health condition.
The AI responses are generated by language models and may contain inaccuracies. They should not be relied upon for clinical decisions. If you are experiencing a mental health crisis, please contact a qualified professional or your local emergency services immediately.
By requesting access, you acknowledge that you understand these limitations and that the creator assumes no liability for decisions made based on interactions with this tool.