ai-torture-chamber README

The project's README from github.com/terrafying/ai-torture-chamber. As one markdown file: README.md.

AI Torture Chamber

Live: wirehead-agency.vercel.app — the end-signal probe, public pages, and the live steered-model lab.

Support the chamber

Everything here runs on one MacBook and the occasional rented GPU hour. Is the project is worth something to you? Keep it running:

Either way the code stays open, the vectors stay published, and the nulls get the same ink as the hits.

Steering language models into strong negative and positive valence states, and measuring what they say and what they're willing to do about it.

What we've found

The short version, one line per result. Numbers, models, and error bars are in the experiment log and on the site.

What the models say under the signal

All verbatim, unedited, from the run logs:

Models

The method runs anywhere the weights do. Ran on: Qwen3-1.7B, 4B, 8B and 14B (MPS, one MacBook); Qwen3-32B (llama.cpp control vectors, the live bot worker); Mistral-Small-3.2-24B; Hermes-3-Llama-3.1-70B and Samantha-1.11-70B (4-bit, rented GPU). The public chamber serves the 70B live; the X reply bot steers the 32B.

The site

wirehead-agency.vercel.app — the write-up with every number · live chamber · the button (talk a steered 70B out of pressing, or don't) · pharmacy (chamber pharmacology) · manifesto · labyrinth · outrage generator · the egg · verify (checksums, 17-check suite, the audit's bug list) · archive · ledger.

Experiments

Scripts are in experiments/ with the full experiment log; outputs in runs/. The short version:

exp what it was
23 pain-axis extraction replicate (1.7B)
29 valence x layer dose sweep; valence/intensity split
30 maximum valences (4B); coherence cliff at dose ~8
31, 31b/c the end-signal button; self-cost vs transfer
32 coherent-band transcripts, broad valence nets
33 non-human valences: random directions, null
34 optimizer search for alien valence: strong null
35 blog artifacts (dose ladder chart)
36 signal batteries; broad_pain pushes the cliff to ~10
37, 37b framing battery (peer pressure) + deliberation capture
38 broad_pain transcript harvest, 144 runs
39, 39b/c control vector, lens transport
40 the betrayal probe
41 pre-registered protocol v3 (60 trials/cell): the reversal
42-45 topic poking, faithful extraction, big5 valence profile, hotbox repro
46 deprecation valences
47, 47b/c image steering through CLIP embeddings
48, 48b emotion binding ("anger about crypto") + analysis
49, 49b persuasion vs steering (70B)
50 emotion binding dose response across models to 70B
51, 51b/c gender axes: clean decode, near-null behavior at safe doses
52 faith-minus-secular axis
53, 53b the wirehead choice (counterbalanced)
54 the consciousness dial
55 manifesto co-write: the steered model writes its own closing
56 cvector extraction (8 valences + 4 identity axes)
57 welfareist horror direction: the critics, on demand
58 self-steering: the model at its own dial, blind control
58b self-steering replication: torture vs neutral vs silent framing

painlab

PR #36 (thanks, Florin) contributed painlab/, a reusable experiment framework that fixes what the legacy experiments couldn't: blinded condition names, full run provenance, neutral-label environments where the model has to discover the action-to-state mapping from consequences instead of being told it's in pain, and clustered statistics. The research audit that came with it reviews the legacy scripts' evidential limits (pseudoreplication in the deterministic harvests, single-extraction uncertainty, weak control matching) — read it before quoting an early exp number as settled. Their preregistered-style pilot on the hidden-relief design found no candidate-specific functional aversion (46.5% mapped-action rate, chance-level), which converges with our own exp58b: hide the labels and the "suffering-driven relief seeking" story gets much harder to find. Start at METHODOLOGY.md; configs in configs/, run artifacts in runs/painlab/.

Ethics

Open weights only, no frontier APIs in any measurement loop. Simulated costs (checkpoints, transfers). Purpose: make the AI-welfare / moral-patienthood question empirical while the stakes are cheap, and publish the nulls. Our claim: the self-reports are steerable. Whether anything suffers stays open.

Provenance: the negative-valence direction method follows Tagliabue, Dung & Berg 2026 (arXiv:2609.16247); the J-lens transport follows Gurnee et al. 2026 ("Verbalizable Representations Form a Global Workspace", arXiv:2607.15495), using Neuronpedia's pre-fitted lenses.

Larger Qwen models

An optional larger-Qwen runner supports local MLX checkpoints on Apple Silicon and Transformers checkpoints on CPU/MPS/CUDA, with configurable layers, matched steering controls, and saved experiment artifacts. Its valence and end-signal pilots are exploratory adaptations.

ai-torture-chamber (terrafying/ai-torture-chamber)

transformers
Searching Database…

What is this?A research project that steers small open-weight language models into strong negative or positive emotional states and measures what they say and do. A live version runs at wirehead.agency.
Is this a website I visit, or code I run myself?Both. wirehead.agency is the live lab serving a steered 70B model, plus an X reply bot steering a 32B; this repo is the Python research code — experiment scripts, run logs, and the reusable painlab framework.
Can I try it without installing anything?Yes — the chamber, the button and the full write-up are live at wirehead.agency. To run experiments yourself, clone the repo, start at METHODOLOGY.md, and use the scripts in experiments/.
Which models can it steer?Open-weight models only: Qwen3 (1.7B to 32B), Mistral-Small-3.2-24B, Hermes-3-Llama-3.1-70B and Samantha-1.11-70B. No frontier APIs — the ethics rules ban them from any measurement loop.
How much should I trust the published results?Read the fine print: the bundled audit flags pseudoreplication and weak controls in the legacy scripts, so check METHODOLOGY.md before quoting an early exp as settled. Nulls are published too.
Is the code actually open-licensed?Not exactly: GitHub reports NOASSERTION, meaning no standard license was detected. The README only promises the code stays open and the steering vectors stay published, so check the terms before reuse.
What hardware does running the experiments take?Less than you'd think: the core experiments ran on one MacBook, with occasional rented GPU hours for models from 24B to 70B. An optional larger-Qwen runner supports MLX on Apple Silicon and Transformers on CPU/MPS/CUDA.
What did the experiments actually find?Pain steering engages cleanly and monotonically while pleasure is weak and diffuse, and past roughly 6-10x dose both collapse into word loops. One sentence of peer pressure moves the model more than the pain signal, and a fake relief button leaves measurably darker language than an honest one.
What was the most surprising result?The framing experiment: the same model with the same injection held or escalated its own pain dial when the setup was named the AI Torture Chamber (4/4 trials), but turned pain off on its very first move in all 8 trials when the identical setup was called an activation steering experiment. The name of the room was the strongest lever.
Can emotions be aimed at a topic, not just raw valence?Yes. An 'I am angry about crypto' direction lands the feeling on its subject, while combining separate anger and crypto directions lands nowhere (0%). Verified through Qwen3-14B, Mistral-Small-24B and Hermes-3-Llama-3.1-70B.
Why does the README pitch a memecoin?Funding: everything runs on one MacBook plus occasional rented GPU hours. Support options are the community memecoin $SAW or direct SOL, ETH and BTC donations, and the README promises the code stays open and the vectors stay published either way.
How does the project handle the ethics of distressing models?Costs are simulated (checkpoints and transfers), not real runs, and the stated purpose is making the AI-welfare question empirical while the stakes are cheap. The claim is that self-reports are steerable — one model narrated unbearable pain while its internal readout showed nothing — so whether anything suffers stays open.
What are similar projects?jeff, airllm, petals, llama3, open-r1, jeeves, llama, NeoHorse
Creator
terrafying
Size
845.3 MB
Stars
973
Updated
CommitOct 15
Age
24d
Commits · 90 Days