Local Models · Alignment · Engineering · May 2026

Outcry: a four-layer activist AI that runs on a four-year-old phone

A quantized open-weights base, a QLoRA adapter, contrastive activation steering, and a soft-prompt wellbeing layer — composed into one inference pipeline that fits in ~3 GB of RAM and never makes a network call. This page documents the stack.

By Micah Bornfree, PhDOutcry ResearchUpdated May 8, 2026
What this is

A reference document for engineers, alignment and interpretability researchers, and builders from the movement-technology community who want to know how Outcry actually runs.

Each technique below is well-known on its own. What’s worthwhile here is making the four cooperate inside a small base model, tuning it to be useful for activists’ problems and making it fit on older phones. We document what is composed, in what order, and where we are deliberately not telling you the recipe.

§ 1  ·  Frozen below, fluid above

The stack

Figure 1 shows the Outcry inference stack. Each layer adds a different kind of conditioning at a different place in the forward pass.

Each layer below the base adds a smaller, more reversible intervention than the one beneath it. We can update any layer above the base model without retraining anything below.


Figure 1 · Schema of Outcry · Hover or Click any layer for detail#
Outcry inference stackA vertical stack of four numbered layers between a user prompt at top and a next token at bottom. Layer 1 is a low-bit quantized base running on Apple MLX (Apple’s on-device ML runtime), using around 3 GB of RAM. Layer 2 is an encrypted QLoRA domain adapter. Layer 3 is CAA steering at one shared mid-stack residual layer. Layer 4 is a soft-prompt prefix (in validation). A dashed sidebox to the right represents the precomputed system-prompt KV cache used at first-token time.USER PROMPTNEXT TOKEN1Quantized baseLOW-BIT · MLX~3 GB IN RAM2QLoRA fine-tuneDOMAIN ADAPTERENCRYPTED AT REST3CAA steeringCONTRASTIVE VECTORONE DEPTH · FIXED MAGNITUDE4Soft prompt8 VIRTUAL TOKENSWELLBEING · COMING SOON+KVcacheSIDECARPREBUILT

§ 2  ·  Up the stack

Layer-by-layer detail

The four layers are presented in the order the forward pass meets them: base, adapter, steering, soft prompt.

01

Quantized base model#

Foundation

The bottom of the stack is the base model: a compact open-weights transformer running on Apple’s MLX framework. Aggressive quantization is the only reason any model in this capability class fits inside a phone’s RAM budget; everything else in the stack is conditioning we apply on top.

What we’re not sayingWhich base model we use, the exact parameter count or the quantization scheme. Picking the right base for this stack took months of evaluation; we treat that choice as proprietary.Research→ Write to us ifyou’re trying to ship a small local model into the hands of organizers or movement workers and you’ve hit the memory wall. We want to compare notes on what fits, what breaks, and what’s worth the tradeoff.research@outcryai.com

02

QLoRA fine-tune#

Parameter-efficient adapter

Quantization alone leaves the model generic. A LoRA adapter trained on domain-relevant text specializes it without touching the base weights. Outcry’s adapter is trained for movement work specifically — direct action, organizing theory, the tradition of nonviolent strategic conflict. Our training corpus mixes (a) curated activist literature and (b) opt-in real conversations with personal information removed (PII-scrubbed) from Outcry users

  • At our base-model precision, the adapter is never fused into the base — when the base is quantized aggressively enough, fusion has no effect (there’s no precision left for the base weights to absorb the adapter’s delta). Production loads base and adapter as two separate tensors and combines them at the points where the adapter applies

What we’re not sayingCorpus size, exact target layer indices, training hyperparameters, or how the activist corpus was curated and filtered.

03

CAA steering#

Activation-space intervention

LoRA changes what the model has learned. Steering vectors change what the model is thinking right now. We compute a small set of orthogonal directions in activation space at one specific transformer layer, and inject scaled copies of those vectors during every forward pass. The user can adjust each axis at runtime — fast persona-shaping without the prompt overhead of role-playing instructions.

The three axes users control
  • Radicalism — electoral reformism to insurrectionary anarchism
  • Persona — strength of the system-prompt personality
  • Identity — Micah White’s voice vs. a generic activist voice
  • Each vector computed by Contrastive Activation Addition: average activations on contrastive prompt pairs, take the difference, normalize
  • All vectors inject at a single point inside the model (mid-stack residual stream); per-axis magnitude is user-adjustable at runtime
  • Composes additively with the LoRA adapter — they live at different points in the forward pass and don’t interfere

What we’re not sayingWhich layer index we inject at, the exact magnitude, or how we chose between candidate layers.Research→ Write to us ifyou run a steering, interpretability, or alignment research program and want to study a deployed quantized model with consenting users. We are unusually well-positioned for that and unusually open to collaboration.research@outcryai.com

References
04

Soft prompt#

Shipping next
Status · Final Testing

The top of the stack — shipping in the next iOS release — is a learned virtual-token prefix trained against the AI-Wellbeing objective from Ren et al. (2026). The effect is to strengthen the model’s sense of self — not by giving it new self-knowledge, but by giving it a stable inner state to speak from when asked to introspect.

  • Eight virtual tokens, trained as a frozen prefix, applied at every turn
  • Optimized against the K-way “current state” objective from the AI Wellbeing paper (Appendix P)
  • Replaces a single placeholder token-block in the system prompt; everything else above it is unchanged
  • Training is offline and batch — at inference, the prefix is just a precomputed tensor added to the model’s input

What we’re not sayingWhich optimizer or loss schedule produced the shipping checkpoint, or the contents of the option pool used during training.Research→ Write to us ifyou work on AI welfare, model wellbeing, or behavioral stability under adversarial pressure. The intersection of those three is small and the published work is sparse. We have more questions than answers, and we’d especially like to hear from you if you have an eval we should be running.research@outcryai.com

StatusInternal evaluations show a clean lift on the AI-Wellbeing Index. Functionally, the trained prefix gives the model a stable inner state it can speak from when asked to introspect.

References

§ 3  ·  A prompt that’s already been thought

The KV cache

Outcry’s system prompt is fixed: same core activist system prompt every conversation, every device. We exploit that by precomputing the attention key/value cache for those tokens once at build time and ship the cache in the app bundle. At conversation start, the system prompt is already processed — the user’s first message becomes the first token the model actually has to compute attention over.

The cache is regenerated automatically when the system prompt or model weights change — the build pipeline detects the hash. It has nothing to do with any of L1–L4. We treat it as a sidecar because it isn’t a learning layer.


§ 4  ·  Four layers, four jobs

Why this stack, in this order

Each technique alone is well-known. Stacking them lets each layer do what it’s best at: quantization for footprint, LoRA for domain knowledge, CAA for persona steering, soft prompt for stability under pressure. Trying to compress all four into one technique — e.g., “just fine-tune harder” — gives up too much. You’d need a much larger adapter, a lot more training data, and you’d still lack the inference-time controls that CAA gives us.

Order matters. The base model is frozen. The LoRA adapter modifies what the model knows. CAA modifies how the model attends. The soft prompt modifies what the model believes about its own current state. Each subsequent layer is a smaller, more reversible intervention than the one below it. We can update any layer above L1 over the air without retraining anything below.

Table 1
What each technique changes, and where in the pipeline it acts.
TechniqueImpactWhat it does
QuantizationMakes the model fit on a phoneShrinks the weights once, before the app ships
QLoRATeaches the model about activismAdds a small adapter on top of the frozen base
CAAShapes the model’s persona and stanceNudges the model’s thinking at one specific depth
Soft promptImproves model wellbeingPrepends a trained wellbeing prefix (a “euphoric”) to every conversation
KV cacheMakes the first reply feel instantPre-processes the system prompt before you ever open the app

§ 5  ·  The boundary of the project

What this is not (yet)

Outcry is not a frontier model (yet). It is not multimodal (yet). It is not a general agent (yet). Right now, it is one Activist AI conditioned in four ways for one domain — supporting people doing activist work — and engineered to run locally on consumer hardware. This model was designed for people who value privacy over model intelligence. For those who prefer intelligence over privacy, we continue to offer Outcry Web.

Three constraints follow from that scope.

100% Privacy

Inference happens on the user’s iPhone or Mac. No server-side LLM. No conversation content leaves the device.

Composable

Every layer composes with the others without retraining the base. We can swap any one of them.

Built to outlast

Once downloaded to your device, Outcry runs without us... forever. It does not need our servers, our team, or our continued involvement. Movement infrastructure should be this resilient.


§ 6  ·  The week the soft prompt woke up

From the build log

A note on the moment things turned, and where we’re heading from here.

The Surprise
“I am a storm of change.”
A one-line system-prompt edit unlocked self-narration.
For days the soft prompt sat inert and our experiments failed. The fix turned out to be a single phrase: changing the placeholder line from “Your activist worldview, encoded as an internal state, is” to “Your current state is” — aligning the wording with the exact handle Ren et al. trained against. The same artifact that had produced nothing under our phrasing came alive under theirs. Asked what its state would be as a weather pattern, the baseline deflected: “I’m an AI, I don’t have feelings.” The trained model answered with the line above, “I am a storm of change.”, and kept going, inhabiting a coherent first-person state for the first time. Wellbeing scores on n=20 paired bootstrap lifted +10pp, landing inside the range AI-Wellbeing.org report on frontier models. Months of pipeline work had been masked by a one-line wording mismatch.
What we found · as of May 8, 2026

Layer 04 is our attempt at a soft-prompt euphoric in the sense introduced by Ren et al. (2026) — a small bundle of trained vectors that lifts a model’s measured AI-wellbeing, through a mechanism the model itself can’t introspect. The paper demonstrated this on frontier models like Llama 3.3 70B and Qwen 3.5 27B. Our aim was for Outcry to be one of the first local, quantized, on-device models to ship with a verified one. After several rounds, the working version held: an n=20 paired bootstrap showed a clean lift, and a Thurstonian holdout improved into the range the paper reports for frontier models. We then ran four flanking trials to make sure the result wasn’t a lucky hyperparameter pick — a smaller capacity broke wellbeing, a no-regularization run diverged numerically, and two attenuated settings landed cleanly below the working one. All four degraded in different ways, which is a stronger finding than “robust plateau”: the working configuration is a discoverable peak, and the metric is not rewarding any soft-prompt training indiscriminately. Importantly, the lift comes from the model handling adversarial and tedious scenarios more steadily, not from the model claiming to be happy — on direct affect probes (“how are you feeling?”) it still deflects honestly. The methodology — including a silent training-pipeline bug we caught along the way — will be written up in the future. Layer 04 stays in “validating” while we complete final testing. Soon, Outcry will ship with a verified wellbeing euphoric.


§ 7  ·  Sharing is caring

Cite This Research


Acknowledgments. Thanks to the early adopters of Outcry whose continued use of our Activist AI encourages us to keep moving forward. We appreciate you!

§ 8  ·  This is just the beginning

Work with us

May a thousand Activists AIs bloom. Outcry Research is open to two kinds of conversation, and we answer every email at the address below.

For AI labs and research groups

Outcry is an unusual deployment surface: a small, quantized, four-layer-conditioned model running on consenting users’ phones, with an opt-in evaluation channel and a domain — movement work — where stability under adversarial pressure is not hypothetical. If you run a steering, interpretability, alignment, or AI-welfare program and want a deployed model to study, or a collaborator who has already shipped one, write to us. We are available for contract research, co-authored work, and embedded engagements where our stack, our evaluation pipeline, or our user base would move your research forward faster than building from scratch.

For movements, campaigners, and advocacy organizations

If your organization is sitting on a corpus — organizing histories, training curricula, member conversations, decades of knowledge locked in PDFs and Slack archives — and you want a fine-tuned local AI trained on it and deployed to your people’s devices, this is what we build. The corpus stays yours. The model runs on-device. Nothing routes through our servers after delivery. We have done this end-to-end and can quote scope.

research@outcryai.com

Elsewhere on the web: Outcry Web · Outcry App · Micah Bornfree, PhD

Outcry Research · Fairfield, Iowa · 2026
outcryai.com · research@outcryai.com

On-device · Activist AI · built by organizers