Motherlode on MTEB and Hugging Face Inference RiverRider/motherlode-code-small-en-v0.1 is a 33.4 M-parameter English embedding model for code and text. It is a drop-in for bge-small-en-v1.5: the mean of two fine-tunes of that base, one trained to match a GitHub issue to the file that needs changing and one trained to reproduce the geometry of gte-modernbert-base (a 4.5× larger model).
Where it differs on ranking metrics On the MTEB(Code, v1) MultiSWEbenchRR task it leads the models under 100 M parameters at recall@10 (52.48 versus 52.18 for granite-embedding-small-english-r2). On the clean subset of SWE-bench Verified it improves recall@1 over the base model (178 of 411 versus 145), a gap that holds across the engine settings used in Sunstone. On the CoIR code-search probe it raises nDCG@10 from 0.467 to 0.576.
The gains are concentrated on localization and code retrieval rather than uniform improvement across every MTEB task. The model remains competitive on the broader English MTEB(eng, v2) average (63.47, 4th of 15 under 100 M) while carrying a clear advantage on the code-file tasks it was built for. The weights are compatible with Hugging Face Inference Providers for feature extraction and sentence similarity. The repository also ships matching ONNX, GGUF, and sentence-transformers exports.
The weave behind Black Window and Sunstone is now an MCP server for any client: blackwindow weave-mcp, on npm and in the official MCP Registry.
It indexes folders on your machine and answers plain-language or code questions with file paths, line ranges and the passages themselves.
RiverRider/motherlode-code-small-en-v0.1, a 33M-parameter code-search encoder, embeds them on your CPU. The first run makes six requests, all to Hugging Face, for the model; after that it makes none.
Measured once on an M2 Ultra through the MCP SDK's own client: the Sunstone repository, 57 files and 1,367 passages, woven in 20.2 s. Weaving it again took 0.014 s, and a search took 6 ms.
Claude Code: claude mcp add weave -- npx -y blackwindow-weave-mcp --folder /path/to/repo
Cursor, VS Code, Claude Desktop and Windsurf run the same npx command from their MCP config.
Motherlode is now the default memory reader on blackwindow.xyz and in Sunstone VS Code.
RiverRider/motherlode-code-small-en-v0.1 is a 33.4M-parameter embedding model for code and text with bge-small-en-v1.5's architecture, so it drops in where bge-small runs. In a replay of Black Window's engine as it ships, on the 411 SWE-bench Verified issues its contamination check leaves, it ranks the file the fix changed first for 207, where bge-small does for 158: 69 issues better, 20 worse, exact sign test p below 0.00001.
One engine, three places: - blackwindow.xyz, in a browser tab, with no account and no install - Sunstone 0.1.5 on the Visual Studio Marketplace, which indexes the folders you open in VS Code for any model in the picker - a GPU box you rent from the page on your own vast ai account, whose pairing line adds the same box to Sunstone
Update, 2026-09-29: about an hour after this went up, engine a3738ff took the lexical bonus off the search path, and blackwindow.xyz and Sunstone 0.1.6 ship it. As it ships now, on the same 411: 221 against 194, 59 better and 32 worse, sign p 0.0061. The 207 against 158 above is the engine with the bonus, which cost bge-small more than Motherlode (see the comments).
Did you explain the same decision to a fresh chat for the third time this week?
Did you ask your coding agent where something is handled, only to watch it grep, guess, and answer from the wrong file?
Did you edit a function, only to have the agent quote back the version from before your edit?
Sunstone is a free VS Code extension built for all three. It indexes the folders you have open and gives whichever model you already use, Copilot's Claude and GPT included, a real search over them. Before every search it re-reads whatever changed: a save, an unsaved edit, a file written from the terminal, a branch switch. #remember keeps a decision across chats. It can also put your own llama.cpp or vLLM server in the model picker. Everything stays on your machine, with no account and no key.
We measured it on all 500 issues in SWE-bench Verified. It named the right file first 229 times. A text search over the same files managed 58, and questions shuffled onto the wrong issues got 5. Every ranked list is published.
Your coding agent already has your files. It greps, misses, and answers anyway.
Sunstone indexes the folders you have open and gives whichever model you are already using, Copilot's Claude and GPT included, a proper way to search them. It also lets you put your own servers in VS Code's model picker, if you want to.
Everything is indexed and held on your machine. There is no account and no key to hand over.
Open it at home. Pick a model. Hit Load. Add it to the home screen.
Before you lose signal, drop in what you would actually need: a first-aid PDF, plant notes for the region, a map, a GPX, a meds list. The Weave indexes them on the device. Later questions pull the nearest passages back as notes.
After Load, the network can drop. The weights run in that tab, on that phone.
You can still drop new things in with no service. A photo of a plant, a rash, a trail junction. A voice note of symptoms. Audio is transcribed. An image is described. Both land in the Weave and you can ask about them there, offline.
It is a small model. Treat it as a checklist, not a doctor. It will not replace a beacon or a course. It will still answer when the map has no service.
Same trick on a plane, in a blackout, or with a file that should not leave the device.
Not a server with a policy. Your hardware, a window, a Load button.
SWE-bench Verified scores whether an agent's patch passes the tests. It does not score whether the agent found the right file first, which is the step before it.
We measured that step on all 500 instances. A 33M-parameter encoder, BAAI/bge-small-en-v1.5 at 384 dimensions, names the correct file first for 229 of 500 (0.458). Plain text search over the same checkouts gets 35 (0.070).
The number that makes those readable is the floor. Hand the same index a bug report from an unrelated project and it still lands the gold file at rank 1 for 5 of 500 (0.010). So 0.458 is 45.8x chance, not 45.8x nothing.
That ratio is where the argument is. recall@50 reads 0.954 and sounds like a solved problem. An unrelated report reaches the same top 50 for 0.244 of instances, so the margin over chance falls from 45.8x at k=1 to 13.6x at k=10 and 3.9x at k=50. The headline that looks best is the one carrying the least.
All 500 ranked lists are published under CC BY 4.0, so the floor can be recomputed rather than believed. The article also ends with eleven corrections to claims we made earlier and got wrong, including one where the lever we proposed turned out to cost accuracy rather than buy it.
We have not measured the patch step. This is the one before it.
For anyone who doesn't live in SWE-bench: it gives model a real GitHub issue from a real project and scores whether the code it writes makes that project's tests pass. That single score covers two jobs, finding the file that needs changing and then changing it correctly, and only the pair is ever scored. The first step is what we measured. Nothing here writes code or runs a test, so 0.458 is a hit rate for naming the right file, not a SWE-bench resolve rate.
Open the site, pick a model (about 0.6B to 8B), hit Load. The weights run in that tab, on that computer. After they load, the network can drop. The context window is a working set, auto-sized to that device, up to ~32K tokens.
Behind the window is the Weave. Every file, picture, recording, link, lookup, and reply is embedded as it arrives. Drop in audio and it is transcribed. Drop in an image and it is described. A question pulls the nearest passages back as notes. A long document is walked once so later questions can use the whole file, not the first pages.
Nothing leaves that tab unless you turn on live lookup or connect a rented GPU box, and the chat says so each time. Prompts can go to the box. Files and the Weave stay in the tab.
Console on that page: bw.ask, bw.search, bw.digest, bw.notes. A local relay exposes /v1/chat/completions on localhost so other tools on the same computer can talk to the tab. The tab polls the relay. That is the boundary.
Not a server with a policy. Your hardware, a window, a Load button.
If on mobile add to home-screen for best performance. If you break it lmk. It can serve a few hundred of you at a time before I have to buy a real server.
Where the Hivemind Comes From: Geometry, Tuning and Format, Separated on Open Weights
“First, representations are mutually recoverable. On 12 open-weight models from 8 labs, a ridge map from one model's hidden states to another's retrieves the right held-out item 0.9181 of the time across lab boundaries, against a shuffled floor of 0.00101 and a self-map ceiling of 0.999. Shared corporate lineage is worth only 0.0357 of that.”
“Second, base models do not reproduce the reported level. Under the original study's own sampling settings, our base models reach intra-model 0.3644 and inter-model 0.3401 on a floor of 0.0993 that matches theirs, and zero of 720 model-prompt cells clear 0.8. The floors agree while the signal differs by more than a factor of two, so this is not a scale artifact.”
“Third, and decisively, we recover their level and isolate its cause. Using six matched base/instruct pairs, holding pretrained weights, prompts, decoding and scorer fixed, instruction tuning alone raises intra-model similarity by 0.0786. The same tuned weights prompted through the model's own chat template raise it by 0.3623, reaching 0.7272, with four of six models exceeding 0.80 and reproducing the band reported for frontier systems from models of 0.6B to 2B. The prompt format does roughly 4.6 times the work of the tuning.”
A 339 KB linear probe on frozen features beats the fine-tuned baseline on ChestX-ray14.
Linear(5376, 14) on frozen google/gemma-4-31B-it hidden states. No fine-tuning, no radiology pretraining, no augmentation. All 112,120 images, official test_list.txt.
Wang et al. 2017, ResNet-50 fine-tuned end to end 0.7451 this probe, frozen backbone + linear head 0.7590 view-position only (shortcut baseline) 0.5896 shuffled labels (refit floor) 0.5002
Ahead on 12 of 14 findings.
The comparison is split-matched, and that took care to get right. The number everyone quotes, CheXNet's 0.8414, is on a different test set: their own random 70/10/20 partition, not the official list. Do not compare 0.7590 to it. The matched row is from Wang's v5 appendix, added specifically to report the published split. I had this wrong in our own code for a day, quoting a cross-split reference as a head-to-head, which is the error worth not repeating in public.
Three controls, because a bare AUROC here is not interpretable. Shuffled labels catch leakage. View-only catches the shortcut, since portable AP films are taken of sicker patients, and it is folded, because Hernia's raw view-only of 0.3436 is really 0.6564 of shortcut once flipped. Intervals resample patients and not images, since the test split is 25,596 films from 2,797 patients.
Banked negatives are on the card too. Max-pooling and top-16 pooling were predicted to help focal findings and did the opposite, costing 0.0537 and 0.0225. Readout depth barely matters, 0.7600 to 0.7605.
Scope: detection, not early detection. Research artifact, not a diagnostic device.
The backbone never runs in the demo. What ships is the reading.
Four multimodal models from four different companies (two at a time). One of them indexes a thousand photographs. Then a different company's model searches that index, having never been trained to work with it.
The same pictures come back.
Cross-company retrieval is statistically indistinguishable from a model searching its own index: retention 0.988, 95% CI [0.955, 1.023], across 12 cross directions and 1,000 held-out items. The interval contains 1.0, so we report indistinguishability and keep the interval attached to the number. Four of the twelve cross directions score above the within-vendor baseline of the gallery they search.
A single linear tower also places image, audio and video beside text in one searchable space, beating one tower per modality on every modality. Video gains most, 0.076.
Scope. The four-vendor result covers images, since two of the hosts handle images only. Raw cosine between unrelated items on these states is +0.869 and raw retrieval sits at chance, so centering is not optional. All four hosts train on overlapping web-scale corpora, so this shows the readable structure survives a change of vendor, architecture and training run. The stronger reading, that independently trained systems would converge on that structure, remains untested and we do not assert it.
A 0.6B model runs in your browser tab and searches 123,287 photographs that a 27B model encoded months ago. The big model is never downloaded and never runs.
Two models normally cannot understand each other. Each builds its own private way of representing meaning, so an image encoded by one is gibberish to the other. We fitted a small linear read-out on each frozen model, aimed at the same space. Not a fine-tune: a map outside the weights, reading a hidden state the model already computed. Now the small model's reading of your sentence compares directly against the large model's reading of a photograph.
So the 27B model's work becomes a file. It looked at the gallery once on a datacenter GPU and left about a kilobyte per photograph. Nothing of it runs when you search. The 0.6B half runs on a phone CPU through WebAssembly: no WebGPU, no API key, no server, nothing leaves the tab, and it works offline after the first load.
Privacy here is structural rather than promised, because there is no server to trust. The index is a file you hold instead of an embedding bill you pay, and it can outlive the model that made it.
Receipts. Median rank 33 of 123,287 puts the right photograph in the top 0.027%. Shuffled-pair control 0.0002. The 4 KB runtime anchor is not optional: the same head scores 0.2300 under PyTorch fp16 but 0.0154 under candle Q4, and 0.1952 once anchored.
Honest limit: word order is at chance, 0.468 on minimal pairs, n=141. "A dog chasing a boy" and "a boy chasing a dog" look alike to it. This is a bag of content, not a parser of relations.
Apache-2.0. The negatives sit in the model card next to the positives.
The consolidated findings of the SRT research program are now available.
The program treats frozen production-scale language models as substrates whose internal states carry structure that small, inspectable instruments can read. Results include:
- A ~12 M-parameter adapter that surfaces per-token semiotic signals from a frozen 7 B backbone with zero cross-entropy degradation - An activation verbalizer that recovers text from single hidden states up to a calibrated paraphrase ceiling - Linear readout ports spanning dense 3 B models to 94-layer 235 B mixture-of-experts models - A 22 MB linear head that gives a frozen multimodal chat model image-to-text retrieval performance matching fully trained 2018 dual encoders on the COCO benchmark
The central claim is substrate invariance. The readable structure is a stable property of the model class. A head trained once on one host reads, with no retraining and at most a 42 KB recalibration, across:
- Hosts ten times smaller (31 B → 3 B) - 4-bit weight precision - Entirely different silicon and kernels (CUDA/bf16 to Apple Silicon/MLX-Q4)
Deployment tiers differ in latency and cost, never in capability.
All instruments, measurement protocols, invariance evidence, negative results, and artifacts are in the repository.
A read-out that reads images — trained only on words.
A 12.3M side-channel head on a frozen google/gemma-4-31B-it, taught meaning from text alone — to separate discourse communities in the residual stream. It never saw a single picture in training. Hand it a picture and it names what the image means, with zero image training.
Cross-modal transfer. Give it a photo and it lands next to the right words: bicycle → bicycle, rose → flower, dog → pet. It groups images by what they mean, not how they look: image→referent kNN 0.64 against chance 0.10.
Why this is a semiotic read-out, not an image classifier. A classifier is trained on labelled images and learns a fixed map from pixels to a closed label set; it only knows the labels it was shown. This read-out is different in kind. It never saw an image in training — it was trained only on text, to separate discourse communities in the residual stream of a frozen gemma-4-31B. It can interpret a picture because gemma-4 already fuses image and word into one representational stream, and the read-out taps the shared interpretant: the meaning a sign carries, whatever form it arrived in. So it does not classify the image. It tells you what the image means to a system that learned meaning from words — a transfer across modality, from a head that was never cross-trained. That is the result.
Each picture gets two readings: the words it means — the load-bearing evidence — and the discourse it evokes, the nearest of 35 communities it learned from text. Read the second as a flavour, not a category: cars into the automotive community, deer and mushrooms into gardening, cats and dogs into the cozy-domestic communities. Never a class label.
Scored offline through a frozen google/gemma-4-31B-it (62.5 GB, too large to run live)
SRT Showcase: Watch a Frozen Model Think, Token by Token
A frozen Qwen-2.5-7B now narrates its own interpretation in real time. SRT Showcase is the most complete public demonstration of computational semiotics to date, running the backbone with the SRT Adapter and Activation Verbalizer. As the model generates, every token is tinted by its predictive effort, and at the highest-effort positions the Verbalizer decodes the hidden state directly into natural language. You see what the model is representing at the exact moment its computation is most active.
Every verbalization is validated, not asserted. Each decoded thought is re-encoded and compared back to the original hidden state, and the reconstruction closely approximates it. The "this is what the model was thinking" claim carries its own fidelity badge. This is grounded introspection, not plausible narration.
The Showcase goes further than the trace. An A/B panel runs the same prompt with SRT injection on and off under an identical seed, so the side-channel's effect is directly observable. A curated gallery walks through confident recall, false premises, misconceptions, reasoning pivots, genuine uncertainty, and safety boundaries. Live entropy and divergence meters track the crystallization process token by token, with per-layer traces and reflexivity estimates on hover.
None of the backbone weights are touched. The entire mechanism is a lightweight reflexive layer over a frozen model, which is why the same read-out heads already port from Qwen-2.5-7B up to a 235B Mixture of Experts. Frozen models can now be verbalized in real time. No retraining. No fine-tuning. No black box.
First request is a brief cold start while ZeroGPU acquires a GPU. Bring your own prompt.
An SRT adapter is now available for Qwen3 235B, a large open Mixture of Experts model. This adapter adds a lightweight monitoring layer that provides signals about the models internal state during generation without modifying any of its original weights.
The adapter can indicate whether the model is operating in a more stable or more divergent internal condition. It also estimates how self referential the models processing is at each step and tracks shifts in representation across layers. In addition it produces information about the kind of discourse style the model appears to be using at any moment.
This is the first adapter of its kind released on a model of this scale with fully open weights. It was trained in a read only configuration so the base model remains unchanged. The strongest result is in regime detection where the adapter achieved very high accuracy in distinguishing between different internal operating states on held out data.
For researchers focused on model interpretability this provides a practical way to inspect internal dynamics at frontier scale. For those working in semiotics it offers empirical access to how processes of meaning and interpretation unfold inside large contemporary language models.
ATTENTION: The SRT-Introspect framework moves past surface-level output commentary by supplying real-time natural language interpretations of a model’s latent states. These verbalizations are validated, not merely asserted, through a round-trip reconstruction procedure. Natural language descriptions derived from hidden activations are passed through an encoder that reconstructs the corresponding activation vector; the recovered vector closely approximates the original. High reconstruction fidelity indicates that the verbalizations encode genuine structural information about the internal state rather than offering plausible but ungrounded speculation.
This validated introspection converts what has often remained a theoretical or post-hoc exercise into a practical instrument for auditing model behavior, diagnosing failure modes, and providing high-level semantic guidance—all without modifying the base model or incurring the costs of fine-tuning. Because the mechanism operates on frozen configurations, it can be applied to production systems where any change to weights or architecture is undesirable. Thank you for your attention.
Everyone is born a semiotician, no one is born knowing it. Go easy on yourself (and me) for not understanding this yet.
Computational semiotics is now an empirical study.
LLMs are not proto-minds. They are verifiably semiotic infrastructure.
This repository (or attached demo) can show you, in real time, how any frozen model (Qwen for demo) arrives at any answer by reading its latent states directly during generation.
Grok insist my intro is condescending … This is certainly true, as is the statement in my condescended opinion. I expect heat for it, let’s think this through?
The vocabulary itself is reflexive. It is self-referential, looping back into its own structure rather than anchoring in fixed reality. What we treat as stable meaning is continually reconstituted in the act of using it. The observers own interpretations molding each word like clay with every utterance.
All large language models to date treat words otherwise. At the moment of softmax crystallization they determine the meaning of every token. Probabilities collapse into a single output. Meaning is not found. It is fixed, token by token, in that final distribution.
SRT-Introspect is a demo for observing what Qwen actually thinks at the points of highest effort. It surfaces the internal representations during generation, making visible the reflexive vocabulary at work and the precise crystallization process: the weights, the assumptions, the decisions that resolve ambiguity into output. This includes accounting for anisotropy collapse in hidden states by centering representations around the layer-mean before analysis.