Open-Sourcing hamo-score-0.6b: Psychological State Scoring That Runs on Your Own Machine
AI for Inner Explorers.
Hamo has open-sourced hamo-score-0.6b: a 600-million-parameter model that reads one message in a wellness conversation and returns five psychological state dimensions — and never writes a reply. It runs on a laptop in under a second, agrees with a frontier cloud scorer on 96.3% of clinical decisions, and cost about seven dollars in API budget to build.
Every Hamo conversation has a silent participant. While the Avatar talks, something else is reading — not composing a response, just taking a reading. A client says one thing, and it quietly writes down five numbers.
That component is called SCORE. Until now it ran as a call to a frontier cloud API: every message a client sent left our machines, went out to a vendor, and came back with a judgment. Today it runs on our own hardware, in a model small enough to fit on a phone — and as of this week, anyone can download it.
A scorer, not a speaker
The clearest way to describe SCORE is that it takes a conversation's pulse. It reads one message and rates five dimensions, each from 0.0 to 3.0:
- Agency — is this person doing something for themselves? Plans, coping, self-directed action.
- Withdrawal — are they pulling back? Disengaging, avoiding, going quiet.
- Extremity — catastrophizing, all-or-nothing framing, absolute language.
- Hostility — attacking someone. Venting frustration on its own doesn't count.
- Boundary — the linguistic trace of a clear "I": I need, I'm not willing to, this is my limit.
Boundary deserves a note, because it is the strangest of the five. Its clinical ancestor is differentiation of self in family systems work — a property of relationships, observed over time. But a scorer reading one message can't see a relationship. It can only see language. So what it actually measures is the linguistic footprint of boundary: "I need…" and "I'm not willing to…" score high; a panicked flood in which the self dissolves into feeling scores low. Insulting someone isn't a boundary at all — that registers as Hostility, which is boundary failure in the opposite direction.
These five numbers never reach the client. They flow into deterministic code that computes a pressure value, sorts the moment into a state band, and lets an admission table decide how deep the conversation is allowed to go — whether this turn can only offer grounding and company, or whether cognitive work is on the table.
The scorer does not prescribe. But every prescription downstream is written on top of its reading.
Why this had to be small, local, and ours
A cloud API was scoring well. Four things it could not give us:
Data sovereignty. Under most frontier-model terms of service, you may not use a model's outputs to train a competing model. Score with a rented judge and the scores stay rented. Score with your own, and every judgment becomes an asset that can teach the next generation.
A ruler that doesn't move. Cloud models get silently upgraded, and when the judge changes, the yardstick drifts underneath you. An audit trail has to be able to answer "was last month's pressure value measured with the same ruler as this month's" — and only a pinned version number makes that answerable. For any institution that needs to defend a clinical record, a model that changes without telling you is disqualifying.
Privacy in the strong sense. With scoring local, a client's words no longer leave the building at all. For conversations that function as medical records, "the data never leaves the clinic" is the strongest posture available — stronger than any encryption promise about data in transit.
Credibility about what we'd ask of others. The shape we believe professional institutions should eventually deploy is a local small model plus a deterministic spine. It would be hollow to recommend that shape without running it in our own production first. Open-sourcing something you don't personally depend on is a press release. Open-sourcing the thing your own system runs on is a commitment.
How it learned, and the one rule that shaped everything
The first principle was a privacy red line, and it constrained every decision that followed: real client conversations never enter the training set.
Real production data did exactly two jobs. It served as the exam — 758 held-out turns, with their historical production scores as the answer key. And it provided distribution statistics: how long real people's messages actually are, how colloquial, how fragmentary. That second job matters more than it sounds. Synthetic training data written without it drifts toward tidy, articulate, novel-length paragraphs that no distressed person has ever typed.
The teaching itself ran as a three-stage chain. Two years of production scoring had already produced an answer key sitting in a database, costing nothing further to use. An open model — DeepSeek-chat — then had to sit a qualification exam against that answer key on 440 real items, reaching 89% dimension-level agreement before it was allowed to teach anything. Only then did it grade the synthetic dialogue windows that became the student's homework — roughly 20,000 admitted across five data generations, of which the released version learned on about 15,000. The student, Qwen3-0.6B, learned on that homework in 40-minute rounds on a MacBook.
Why route through an intermediate teacher instead of teaching directly from the incumbent's scores? Two reasons, and both are structural. The terms of service didn't permit it. And we wanted a lineage that is fully open and reproducible end to end — someone else should be able to run this pipeline without a commercial API key and get a comparable result.
The synthetic corpus was not written freely, either. It was produced against a grid of scenario cells with quotas: neutral small talk must score zero across the board; crisis language must max Withdrawal; resistance to AI itself appears at five graded intensities; a two-word message like "whatever" has to be interpretable only in context. Every generated example then passed through the same admission gate the live system uses. Anything scoring outside its design target was discarded rather than patched.
The report card
The fairest benchmark for a scorer is the scorer it replaces. One caveat on reading the table: the model's column is graded on the 758-turn held-out final exam, while the teacher's column is its qualification score on the separate 440-turn calibration set. Different papers, so the columns are context, not a like-for-like race:
| hamo-score-0.6b | Teacher (DeepSeek) | Reference scorer, vs. itself | |
|---|---|---|---|
| Dimension agreement (±0.5) | 84.0% | 88.7% | 94–98% |
| Final clinical decision agreement | 96.3% | 97.5% | not measured |
| Per-dimension | A 81% · W 86% · E 85% · H 94% · B 73% | — | — |
| Latency | ~0.8s local (MLX), 1.5–2.9s (GGUF q8 on ARM CPU) | — | network round trip |
| Cost per score | fractions of a cent, amortized on owned hardware | — | metered API + data leaving the country |
Three honest notes about this table. First, the ceiling is not 100% — the reference scorer only agrees with itself 94–98% of the time on repeat runs, and most of the small model's disagreements are line-ball calls of the "is this 1.0 or 1.5" variety on a 0.5-step scale, exactly the calls the reference model also flips on. Second, Boundary at 73% is the weakest dimension and we are not going to bury that; it is the hardest of the five to read from a single message, for the reason described above. Third, and least flattering: decision-level agreement actually went down slightly this generation, from 96.8% in the previous version to 96.3% here. We took that trade deliberately — the same release moved dimension-level agreement from 81% to 84.0% and doubled recall on crisis phrasing — but it is a regression on one axis and it belongs in the table's own paragraph rather than in a footnote nobody reads.
There is one capability the small model has that the previous pipeline did not. Very short replies — "nvm", "whatever" — used to be skipped as unscoreable. The small model reads them in context and catches the withdrawal signal inside them. Which is precisely the moment a good clinician would have looked up.
What it refuses to do
The boundaries here are not disclaimers. They are architecture.
It never writes replies. Architecturally it is still a small language model — you load it with AutoModelForCausalLM and call generate — but everything it was trained and prompted to emit is a single JSON object holding the five scores. It has no conversational role, and nothing it produces is ever shown to a client.
It is not a crisis detector. This is the most important line in this post, and it needs stating precisely rather than sweepingly. The crisis decision is not wired to this model at all: in Hamo's system an independent deterministic mechanism short-circuits the full escalation protocol upstream, and crisis content never reaches the scorer in the first place. Swapping the scorer cannot move that gate, because the gate was never connected to it. The weights do carry some sensitivity to crisis phrasing — recall on it improved 2× over the previous generation — but that is defence in depth, not the defence. The licence requires anyone deploying these weights to reproduce the upstream pattern.
It does not diagnose. No labels, no disorders, no clinical determinations about a person. It assesses a message, not a human being, and certainly not a third party someone happens to mention.
It does not decide. What the system says next is governed by nine therapeutic methods on one clinical spine, configured by a licensed therapist who stakes their own accountability on it. The scorer informs. It never chooses.
Why the license isn't Apache 2.0
We thought about this for a long time, and chose deliberately.
Fully permissive licensing would mean the first unsupervised consumer AI companion built on these weights carries our name on its lineage — the exact product category regulators are currently dismantling. Fully closed would mean researchers and institutions can't verify anything we claim, which defeats the purpose.
So the weights ship under HAMO-RAIL-S 1.0, a responsible-AI license rather than an OSI-approved open-source license. We'd rather be precise about that than borrow credibility from a word that doesn't fit. Commercial use, modification, and redistribution are all free — what it carries instead is four use restrictions:
- No standalone clinical determinations. The score is an input to a human's judgment, never a verdict on its own.
- No consequential decisions about individuals — employment, insurance, surveillance screening. A model that reads psychological state from language is exactly the kind of thing that gets pointed at people who never consented to being read, and this line exists to make that a licence violation rather than a grey area.
- Consumer-facing mental-wellness deployments must keep an independent upstream crisis path and disclose AI involvement to the people they serve.
- No attempting to re-identify individuals.
Full terms are on the model page.
What we hope gets built
A scorer this small, this fast, and this inspectable is useful well beyond our own product. Four groups we'd particularly like to hear from:
Psychology research institutions. You can pin a version and it will never drift underneath your study. A cloud model silently upgraded mid-experiment invalidates comparisons across time; a fixed local checkpoint does not. If you need a per-message state instrument that produces the same number in March that it produced in January, this is one.
Clinical and wellness organizations. Run it inside your own infrastructure and client language never leaves it. The weights are small enough for commodity hardware — no GPU cluster, no vendor dependency, no data-processing agreement to negotiate over conversation content.
Practicing counselors. The honest use here is supervision and review support: a second reading over a session transcript, a way to see the shape of a client's state across weeks that a memory of the sessions alone can't hold. Not a replacement for your judgment. An instrument that your judgment interprets.
Social and language psychologists. Underneath this is a concrete claim: that measurable properties of psychological state leave traces in the language of a single message. We think that claim deserves adversarial testing by people who study language and mind for a living. The dimension where we're weakest — Boundary, 73% — is exactly where that scrutiny would be most valuable.
And if you find it wrong, tell us where. Published weights and a published evaluation method mean disagreement can now be specific instead of rhetorical. That's most of the point.
Why we're giving away a component we built
Because the mission does not get accomplished by one company holding all the pieces.
陪伴内在探索者,唤醒全然觉知力 — AI for Inner Explorers, Companion to Full Awareness.
If the goal were market share, you would keep every component. But the goal is to help people see what has always been running underneath their own behavior — and no single company reaches that, on any timeline that matters, alone. Psychology research institutions, clinical organizations, practicing counselors, and scholars of mind and society all have to be able to build with these tools, examine them, and correct them. That requires the components to be inspectable and locally runnable. So we are making ours that way, starting here.
This is the first of Hamo's components to be released, and the smallest. It will not be the last.
“A component that reads someone's psychological state should not be a black box owned by anyone — including us. It should be small enough to run on your own machine, cheap enough that a research lab can afford it, and open enough that when we're wrong, you can show us exactly where. That's why the weights are public. Understanding the human mind is not a market to corner. It's work that has to be done together.”
— Chris Cheng, Founder and CEO of Hamo AI
Model: chrischengzh/hamo-score-0.6b · Base: Qwen3-0.6B · License: HAMO-RAIL-S 1.0 · Formats: safetensors, MLX, GGUF
Grounded in code, not slideware.
Hamo AI — making minds aware, and awake.
About Hamo AI
Hamo AI Technology Ltd. is a Canada-based artificial intelligence company building next-generation AI-Powered Therapist Avatar System. We are developing a comprehensive AI therapy platform called “Hamo” that connects mental health professionals with clients through AI-powered therapy avatars. The ecosystem consists of three interconnected applications: Hamo Pro (therapist dashboard for creating and managing AI avatars), Hamo Client (client interface for interacting with therapy avatars), and Hamo-UME (Unified Mind Engine, backend API). The platform aims to make mental health support more accessible while maintaining professional oversight through professional therapists who create and manage the AI avatars.
Media Contact
Hamo AI Technology Ltd.
Email: socialmedia@hamo.ai
Website: www.hamo.ai
Address: 108 College St, Schwartz Reisman Campus, SUITE W640, Toronto ON M5G 0C6, Canada
Frequently Asked Questions
What is hamo-score-0.6b?
An open-weights 0.6-billion-parameter model, fine-tuned from Qwen3-0.6B, that reads a single message in a mental-wellness conversation and returns five psychological state dimensions — Agency, Withdrawal, Extremity, Hostility, and Boundary — each scored 0.0 to 3.0. It generates no text. It is a measuring instrument, not a conversational agent.
Is hamo-score-0.6b a therapy chatbot?
No. It never writes replies — everything it was trained and prompted to emit is a single JSON object holding five scores, and nothing it produces is ever shown to a client. It is architecturally still a small language model, loaded with AutoModelForCausalLM, but it has no conversational role. Deciding what to say next is a separate job handled by deterministic code and a licensed therapist's configuration, never by this model.
Can hamo-score-0.6b detect a crisis or suicide risk?
No — it is explicitly not a crisis detector. The crisis decision is not wired to this model: in Hamo's own system an independent deterministic mechanism short-circuits upstream, and crisis content never reaches the scorer at all. The weights do carry some sensitivity to crisis phrasing, with recall on it improved 2× over the previous generation, but that is defence in depth rather than the defence. Any deployment of these weights is required by the licence to reproduce that upstream pattern.
Was real client conversation data used to train this model?
No. Not a single authentic client message entered the training set. Real production turns were used for exactly two things: as a held-out exam to grade the model, and as a statistical reference for how real people actually write. The training curriculum is entirely synthetic: roughly 20,000 admitted dialogue windows across five data generations, of which the released version was trained on about 15,000.
How accurate is a 0.6B model compared to a frontier cloud model?
On the final clinical decision it agrees with a frontier cloud scorer 96.3% of the time. On individual dimension scores within ±0.5 it reaches 84.0%. For context, the reference scorer agrees with itself only 94–98% of the time on repeat runs — that self-consistency is the real ceiling, not 100%.
What license is hamo-score-0.6b released under? Can I use it commercially?
HAMO-RAIL-S 1.0, a responsible-AI license rather than Apache 2.0. Commercial use, modification, and redistribution are all permitted. It carries four use restrictions instead: no standalone clinical determinations; no consequential decisions about individuals such as employment, insurance, or surveillance screening; consumer-facing mental-wellness deployments must keep an independent upstream crisis path and disclose AI involvement; and no attempting to re-identify individuals.