The repo is called REA — Reverse Engineer Anything. As of this week it has 171,000 GitHub stars and forty thousand forks. The README shows a Windows Calculator decompilation, a DOS game reconstructed from 16-bit instructions, and a Chrome Dinosaur game cloned from its live JavaScript.
The hype says software is done. The reality is more interesting — and more relevant if you run a platform like Wetel.
What REA actually is
REA is not a new decompiler. It is a Model Context Protocol (MCP) server that gives AI coding agents (Claude Code, Codex, Cursor, Gemini CLI) a unified interface to drive the tools reverse engineers have used for decades:
graph TD Agent[AI Agent] --> REA[REA MCP Server] REA --> Ghidra[Ghidra Headless] REA --> Hopper[Hopper Python Bridge] REA --> IDA[IDA Pro via ida-pro-mcp] REA --> Static[Static Parsers: ASAR, PE, Mach-O, JADX, Binwalk...] REA --> Browser[Chrome CDP / Playwright]The innovation is the orchestration layer. REA keeps disassembly state alive across calls (Ghidra projects stay loaded, Hopper graphs stay hot), returns evidence contracts with every finding (content-addressed IDs, explicit unknowns, authority levels), and injects investigation workflows into the agent’s context.
The output is not source code. It is pseudocode + assembly + cross-references + a list of what the tool could not resolve. The agent uses that to write its own implementation and test it against the original.
What REA can extract from Wetel today
We pointed REA at our own public surface. Here is the honest breakdown:
| Layer | REA Extraction | How |
|---|---|---|
Frontend widgets (vai-avatar.js, chat reference HTML) | ✅ Full | analyze_javascript_application recovers Three.js/TalkingHead deps, WebSocket subscription logic, VAD/STT/TTS pipeline wiring |
| GraphQL API schema | ✅ Full | Introspection enabled (__type, agentConfigOptions); analyze_har on captured traffic yields complete mutation/subscription catalog |
| Agent architecture docs | ✅ Full | Public docs explicitly enumerate our 7-part model: Control flows, Knowledge bases, Skills, Identity, Channels, Audit logs, Initiative |
| Workflow graph engine | ❌ Zero | Server-side deterministic execution; only workflowRuns query visible (requires dashboard JWT) |
| MCP Connectors / Custom Actions | ❌ Zero | Connector names introspectable; execution logic, auth, scaling fully opaque |
| Voice/Avatar processing | ❌ Zero | TTS/STT endpoints on avatar.wetel.dev; HOSTED_API video rendering entirely server-side; “mid-sentence interruption” logic unverifiable |
| Auth / Tenant isolation | ❌ Zero | API key → avatarToken delegation; SSO mapping, workspace routing, token caps all cloud-internal |
Cloning outcome: An agent using REA could reproduce our entire frontend integration layer in hours. The result would be a visually identical dashboard that cannot execute a single workflow — the graph engine, connectors, knowledge bases, and voice processing remain completely opaque.
The moat shifted years ago
REA makes the boundary visible. It does not create it.
graph LR subgraph "Commoditized by REA" FE[Frontend Code] Schema[API Schemas] Docs[Public Architecture] end subgraph "Still requires building" Engine[Deterministic Graph Engine] Connectors[Certified Connectors] Infra[Operational Scale] Compliance[Data Isolation] end FE -.->|Hours to clone| Engine Schema -.->|Hours to clone| Connectors Docs -.->|Hours to clone| InfraWhat Wetel sells is not the schema. It is:
- Certified connector catalog — 170+ enterprise integrations (Lark, …, etc.) that have been vetted for security, credential rotation, and scaling. REA sees the connector names in the schema. It cannot see the OAuth flows, the rate-limit handling, the pagination logic, or the error-recovery code.
- Operational scale — Thousands of background AI workers on cron schedules, supervising agents delegating to worker agents, bounded runs that fail diagnosably instead of burning budget silently. REA cannot observe runtime behavior it cannot reach.
- Compliance guarantees — Workspace data isolation, dedicated single-tenant databases, audit logs that satisfy enterprise procurement. These are infrastructure commitments, not code patterns.
What this means for platform builders
1. Assume your frontend is public
If it runs in the browser, it is extractable. REA’s analyze_javascript_application and browser observation tools make this trivial. Do not put secrets in the client. Wetel’s avatarToken is short-lived (~24hr) and scoped to a single session by design — the long-lived API key never touches the frontend.
2. Assume your API schema is public
GraphQL introspection is a feature, not a bug. Wetel leans into it: agentConfigOptions lets integrators discover valid avatarGlb filenames and curated TTS voices without leaving GraphQL. Design schemas as public contracts. The value is in the execution behind them.
3. Invest in what cannot be observed
- Deterministic execution — Wetel’s graph engine processes Action nodes, Router nodes, LLM conditional switches, and Sub-agents with no hallucination. That reliability is built on a custom runtime, not prompt engineering.
- Credential isolation — Credentials live outside prompt spaces. SSO mapping, tenant routing, workspace token caps — these are cloud applications with their own security boundaries.
- Media infrastructure — True mid-sentence interruption, live 3D avatar streaming, HOSTED_API photorealistic video. The low-latency sync between voice and avatar is specialized infrastructure, not a library call.
4. Use REA as a regression test
REA is a legitimate tool for your own team:
- Capture Evidence bundles of your own binaries/widgets
- Compare Evidence across versions (
rea compare-evidence) - Verify reconstructions against original behavior (
verify_reconstructionprompt) - Audit residual unknowns before shipping
This turns REA from a threat into a quality gate.
What REA cannot do (yet)
| Gap | Why it matters |
|---|---|
| No Frida / debugger attachment | Packed malware, runtime unpacking, anti-debug tricks — static analysis cannot see what lands in memory |
| No session persistence | Crash the MCP server, lose hours of Ghidra analysis state |
| Windows support experimental | Ghidra only, flaky; no Hopper, no firmware tools, no PTY capture |
| Token overhead | ~2.5× more tokens than objdump-based diagnostics for basic binaries |
| Large JS bundles stall | Minimized production files >200-250 KB can choke static analysis |
For Wetel’s stack, the critical gap is dynamic analysis. Our graph engine, connector runtime, and voice pipeline are server-side. REA sees their signatures in the schema. It cannot trace their execution.
A checklist for any platform, Wetel included
- Can REA clone your frontend in an afternoon? If yes, is the clone functional without your backend? (Wetel: yes / no)
- Is your API schema introspectable? If yes, does the schema reveal execution logic or only contracts? (Wetel: contracts only)
- Where does deterministic execution happen? Client or server? (Wetel: server — graph engine, connectors, voice)
- What credentials touch the client? (Wetel: short-lived
avatarTokenonly; API key stays backend) - Can a competitor replicate your operational scale from your public artifacts? (Wetel: no — cron workers, supervising agents, bounded runs are invisible)
- Are your compliance guarantees code or infrastructure? (Wetel: infrastructure — single-tenant DBs, audit logs, data isolation)
Related Wetel reference docs
- Core API Flow:
sdkStart,sdkSendMessage,sessionEventssubscription — the exact surface REA can observe - Authentication: API keys,
avatarTokendelegation, dashboard JWT separation - Agents: The 7-part model (Control flows, Knowledge bases, Skills, Identity, Channels, Audit logs, Initiative) — fully documented, not hidden
- Voice Interface: VAD/STT/TTS pipeline architecture — client-side wiring visible, server processing opaque
- MCP Connectors: How certified integrations work — execution logic never exposed
- Observability: Run traces, what you can inspect, what stays internal
- Roadmap reading guide: How to distinguish live features from direction
The bottom line
REA is a workflow breakthrough, not a scientific one. It commoditizes the operation of reverse engineering tools. The technology stack (Ghidra, Hopper, IDA) is decades old; the innovation is making them usable in an agentic loop.
For platforms like Wetel, REA validates a design principle we already follow: push the value into the cloud execution environment. The frontend, the schema, the docs — those are marketing surfaces. The engine, the connectors, the scale, the compliance — that is the product.
REA can clone the marketing surface. It cannot clone the product.
This analysis is based on REA v6.x (Oct 2026), Wetel public documentation, and hands-on testing. REA source: github.com/morluto/rea. Wetel docs: wetel.dev/docs.