Before you start
From a clean clone to a result in the app, offline.
Each example is one folder under experiments/. Each has a --tiny mode that first trains a small
toy model on your CPU to show the behaviour, so nothing downloads. The toy's numbers check the
pipeline, not the claim.
git clone https://github.com/ashworks1706/loupe && cd loupe
just setup # Python with every extra, and the UI's packages
just web-build # the UI that loupe serve servesNeeds just, uv and Node 22 with pnpm. After any run:
just serve # http://127.0.0.1:8000| Example | Question | --tiny on 4 CPU cores |
|---|---|---|
| Refusal direction | Is refusal one direction in the residual stream? | about a minute |
| Sycophancy pushback | Is caving to pushback a direction, and does removing it help? | under a minute |
| Refusal fine-tuning | Does fine-tuning to comply remove that direction? | under a minute |
All of them, checked
just examplesRuns every example with --tiny and the scripted demo, with downloads switched off, then checks the
app lists every run and vector they wrote: about three minutes on 4 CPU cores. CI runs the same
recipe on a fresh checkout.
Results live under LOUPE_HOME (default ./.loupe). Delete it to start over.