AI Engineer โข Former Particle Physicist โ๏ธ โข Former Risk Modeler ๐
I've spent my whole career looking inside systems that would rather stay opaque โ first particle collisions, then risk models, now neural networks.
The models talk to us all day. I want to be able to affect them back.
And I want to shove AI into the device and look inside it. I believe the future is edge AI and interpretability together: models that run where you are, and that you can see into.
Why I'm really doing this โ the manifesto
My personal site is a chat with a tiny LLM running entirely in your browser, and every answer it generates renders as a real particle collision. Click the event below to fire your own question into the chamber:
The stack that makes a model legible in production โ from watching, to diagnosing, to fixing. Watch it think, on your server (brainscope) or inside your phone (probascope) โ diagnose why it did that (causal replay + the lens) โ fix it at the source with a calibrated steering vector, receipts attached (hidden-directions โ hotwire-vllm). Observability first; intervention last, once the instruments have earned it.
Tip
Don't read โ just do it. The core of the lab is on PyPI:
pip install hidden-directions brainscope hotwire-vllm
โ the vector factory, the live lens server, the production vLLM plugin. CPU is fine:
brainscope --model tinyโ a browser view of a model thinking- point your own OpenAI client at brainscope โ watch your app's live traffic
No account, no course โ install and look.
Click any box to open its repo.
flowchart TD
hd["๐งญ <b>hidden-directions</b><br/>behavior โ vector"]
bs(["๐ง <b>brainscope</b><br/>watch a model think<br/>(on your running app)"])
ps(["๐ฑ <b>probascope</b><br/>watch a model think<br/>(inside your phone)"])
st["๐น๏ธ <b>steeropathy</b><br/>agents talking through activations"]
tm["โ๏ธ <b>in-two-minds</b><br/>agent hesitating between tools"]
hw["๐ฅ <b>hotwire-vllm</b><br/>steering in production vLLM"]
sm["๐งช <b>steering-mechanics</b><br/>how steering actually works"]
on["๐ฐ <b>old-news</b><br/>stale history outranking<br/>your system prompt"]
kj["๐ฆต <b>kneejerk</b><br/>decision models as a library<br/>(llama.cpp, no server)"]
hd -->|"vectors"| bs
bs -->|"hosts & captures"| st
bs -->|"hosts & captures"| tm
st -.->|"steers with"| hd
hd -->|"vector + passport"| hw
bs <-.->|"same spec: lab โ prod"| hw
bs -->|"causal replay"| sm
hw -.->|"vector under study"| sm
bs -->|"hosts & captures"| on
bs <-.->|"the lens: server โ phone"| ps
kj -->|"model inside the app"| ps
click hd "https://github.com/moudrkat/hidden-directions"
click bs "https://github.com/moudrkat/brainscope"
click st "https://github.com/moudrkat/steeropathy"
click tm "https://github.com/moudrkat/in-two-minds"
click hw "https://github.com/moudrkat/hotwire-vllm"
click sm "https://github.com/moudrkat/steering-mechanics"
click on "https://github.com/moudrkat/old-news"
click kj "https://github.com/moudrkat/kneejerk"
click ps "https://github.com/moudrkat/probascope"
classDef engine fill:#1f6feb,stroke:#1158c7,color:#ffffff;
classDef exp fill:#8957e5,stroke:#6e40c9,color:#ffffff;
class bs,ps,hd,hw,kj engine;
class st,tm,sm,on exp;
Collaborators and users. Build on LLMs and want to see inside your model? pip install, try it, and
open an issue where it breaks. Work on steering or interpretability? Run
SteerBench
against your own method and tell me what you get.
Research that only runs behind a server isn't finished. These take it the last mile, natively.
- ๐ฆต kneejerk โ Jev-style decision models (Liquid d1, OpenJev, Granite Switch, Layaโฆ) as a library on llama.cpp: no server, no generation, one forward pass, built to run inside a phone app. llama.cpp only had this in
llama-server; kneejerk is that code with the server cut away, checked against the server on every family it can get a GGUF for. - ๐ฑ probascope โ an Android app on kneejerk: a decision model runs in the phone, and you drag over its layers to see where the answer formed, and tap the blocks your text went through. The lens, in a pocket.
- ๐ฅ hotwire-vllm โ the same move for steering: a calibrated vector plugged into production vLLM (also in the lab above).
๐ฌ Also on the bench โ smaller, self-contained ways to look inside
- ๐ฆ tournament-watermarking โ the watermark Anthropic now puts in Claudeโs output, running live as a decaying newspaper: two columns from the same model, one of them watermarked, and a torch you hold to the page to find out which
- ๐ paper-remembers โ Hopfield's 1982 paper, running live: rub out any part of the page and watch it rebuild itself
- ๐ญ sixteen-voices โ how a tiny transformer encodes writing style, through LoRA adapters and attention heads
- ๐๏ธ show-me-your-attention โ attention maps and neuron activations over your own prompt
- ๐ฅ detektor โ the collision chamber above, open source (SmolLM2 in your browser, no server)
- ๐ผ๏ธ jepa-demo โ I-JEPA & V-JEPA 2 hands-on, no GPU needed, with a visual deep-dive article
- ๐ Mushroom-generator โ a VAE growing mushrooms, with latent-space walks and the decoder taken apart layer by layer
- ๐ Applepear โ apples vs pears in a tiny CNN, activations and grad-CAM included
- โ๏ธ Minimize_me โ race TensorFlow optimizers across loss landscapes
๐ And off the bench
- ๐ tri-kumpani โ Li Po's Drinking Alone under the Moon, read by a small Chinese model twelve hundred years later: tap a token to see which words it raises its cup to, head by head, then pour it wine and watch the next verse fall apart into Chinese characters. The tokenized poem is also printed on a jacket. โถ open it
- ๐ช resi-doom โ Doom, except the level is a language model mid-sentence: one chamber per layer, attention matrices for windows, the residual stream painted on the walls.
WandS. That is the control scheme. โถ open it - ๐ธ unlived โ a gamebook of the life you never lived: it writes that life as a playable story, and you win by quitting the game to go live it for real
- ๐ promptparty โ born mid-hackathon, shipped the same day: a dashboard for friends agent-coding in one room that says when to ๐ฃ๏ธ TALK (all agents cooking) and when to โจ๏ธ PROMPT (someone's agent is waiting). Claude Code hooks report automatically;
pip install promptparty - ๐จ personal-rembrandt โ you can't build a personal brand, so build a personal Rembrandt: paste your bio, GPT-2 reads it in your browser, and its activations repaint his 1659 self-portrait.
- ๐๏ธ go-to-damn-bed โ a Claude Code skill that sends you to bed like a mom sends naughty children: it saves your work into TOMORROW.md, then counts to three. It never says what happens at three
- ๐ KingOfDiamonds โ the King of Diamonds game from Alice in Borderland, played by LLMs in character, recursive strategic thinking and all
- ๐จ๏ธ paralel-discordverse โ your company's Discord gets a parallel universe, populated entirely by fictional colleagues
- ๐ง underglaze โ the blue tile on a kitchen wall, written as a sum of cosines: 62 815 of them for 99 %. Three knobs to drag, and one of them turns the plant into a snowflake. The pattern everyone here calls cibulรกk turns out to have no onion in it
- ๐ง๏ธ coalescence โ a raindrop landing on an already-wet window doesn't splash and doesn't soak in, it stops being a drop and becomes film. The thin-film equation, solved and rendered in your browser: there is no drop in the equation, the drop is only where it starts
- ๐งฎ least-squares-method โ code archaeology: a printed Pascal listing, photographed page by page and revived on Turbo Pascal 5.5
None of it is perfect. That's kind of delightful.



