DEV Community

David
David

Posted on Originally published at locallyuncensored.com

Reverse engineering without the cloud: REA, a local 27B model and an uncensored build

REA (Reverse Engineer Anything) is an MIT-licensed MCP server that gives an agent tools to look inside apps and files. Its own README is clear that the analysis runs locally. What it doesn't change is where the findings go next: to whatever model drives your agent. With Claude Code, Codex or Cursor, that's a cloud model, and the strings, endpoints and code fragments REA pulls out of a binary travel with every turn.

I build Locally Uncensored, an open source desktop app (AGPL-3.0) for running models on your own machine. Since 3.0.7 REA is a plugin there, and the agent can run on a local model. This post is about that setup: what stays where, which local models are big enough, and why I'd reach for an uncensored build.

the data path

                      cloud agent + REA        LU + local model + REA
analysis              your machine             your machine
tool results          -> cloud model           your machine
your questions        -> cloud model           your machine
setup                 rea-agents setup edits   one switch under Plugins
                      your agent's config
Enter fullscreen mode Exit fullscreen mode

If the target is a client's app under audit, a closed tool from work or your own unreleased build, the right column is the whole point.

why an uncensored model

Reverse engineering vocabulary is exactly what safety training reacts to: decompile, bypass, patch, crack the file format. In a long agent run, one refusal at step seven ends the analysis. A model with its refusals removed just answers.

To be fair to the stock model: I haven't measured refusal rates on REA tasks, and on my test app stock Qwen 3.8 27B didn't refuse anything. The uncensored builds are the insurance for questions that sound rougher than "how does search work".

which local models are big enough

REA wants roughly a 27B model and 64K of context. Smaller models tend to stop before they answer: Qwen 3.5 9B at 32K ran out of context in my run. These are in LU's catalog, all flagged for agent use:

Qwen 3.8 27B                        stock, tools + thinking      16 GB  UD-Q4_K_M
Qwen 3.8 27B Abliterated (Ollama)   huihui, vision + tools       18 GB  one pull
Qwen 3.8 27B Abliterated            same build as GGUF           11-29 GB  Q2_K..Q8_0
Qwen 3.8 27B HauhauCS Aggressive    uncensored, tool calling     16 GB  IQ4_XS
Enter fullscreen mode Exit fullscreen mode

Only the first one has run with REA so far. Add memory for a 64K context on top of the file size.

the run that worked

model      Qwen 3.8 27B Q4_K_P on Ollama, 64K context
REA        6.5.0
target     TinyNotes, a four-file Electron test app
steps      10
time       3 min 15 s
answer     version, both endpoints, both IPC channels
memory     never below 44 % free (Mac)
Enter fullscreen mode Exit fullscreen mode

That run used LU's tool code outside the app. Getting there took three changes, because the model kept doing the right steps and never writing an answer:

  • fewer tools per turn. REA has 207 tools. A turn only gets the ones its words point at.
  • references, not copies. Trace and compare tools accept an earlier result whole (about 7,000 characters) or as {"kind": "retained-evidence", "evidence_id": "ev_..."}. The model kept trying to copy records it had never seen. LU now offers only the reference, which alone shrank the tools a turn carries from 108,651 to 74,459 characters. Ollama also doesn't enforce a schema const, so the model sent "kind": "evidence"; LU turns any object with an evidence id into the reference.
  • facts, not provenance. One analysis returned 343,583 characters, mostly hashes, with the interesting endpoint at character 230,308. The model now gets the facts, 32,792 characters with nothing lost, plus the evidence id.

on a leash

Every REA call goes through the same confirmation as any external tool in LU's Agent and Code: you see the call, you approve it. LU fetches one pinned package, checks it against the npm registry checksum before every start, and never runs REA's own setup, which writes into other apps' configs. REA needs Node.js 22.19+, 24.11+ or 26+.

limits

  • The complete answer came from one Mac with the stock model. On Windows the built app has started REA and handed its tools to a model, nothing more yet. Linux, cloud models and the uncensored builds are untried.
  • Use it on software you own or are allowed to examine.

Short version

  • REA analyzes locally, but a cloud agent still ships its findings to a cloud model. With a local model in LU, nothing leaves the machine.
  • Use a ~27B model at 64K context. Stock Qwen 3.8 27B finished a test app in 3 min 15 s; uncensored 27B builds are in the catalog but untested with REA.
  • The model only finished once it got fewer tools, references instead of copies, and facts instead of provenance.

The step by step guide is on locallyuncensored.com, and the app is on GitHub.

AI-assisted: I wrote this with help from an AI model and checked the facts against the code, the commit history and the changelog.

Top comments (0)