REA (Reverse Engineer Anything) is an open-source toolkit that helps a coding agent inspect a shipped app or executable and trace the evidence behind a feature. The repository had about 440,000 GitHub stars when checked on November 8, 2026. Start at the official morluto/rea repository.
Where the Adobe story came from
In October 2026, Brandon Thomas’s ArtCraft team published PhotoCraft, an editor designed for Photoshop-style work. The team describes it as a Rust reimplementation based on public specifications and observed behavior. REA attracted attention around the same time. Public records do not establish that ArtCraft used REA to build PhotoCraft. An October 12 issue in the ArtCraft repository asks whether the team had considered it. PhotoCraft repository · ArtCraft’s REA issue · ABC coverage
Table 1 · What each project released
| Project | What it provides |
|---|---|
| REA | Analysis tools that trace a feature in existing software and return supporting evidence. |
| PhotoCraft | A separate Rust editor that supports Photoshop-style editing tasks. |
What the agent and REA do
Give the agent one feature to investigate. REA exposes analysis tools to it through MCP, a protocol for connecting agents to tools. In an Electron app, those tools can help follow a message from the UI to the function that handles it. For native executables, the target may require an analysis engine such as Ghidra. Read the agent’s explanation alongside its supporting file locations and any gaps in coverage. REA CLI and evidence guide
Follow an Export button in the official example
With Node.js and npm available, run the command below. Review the selected agent and the proposed configuration changes, apply them, then restart the agent. Check the installation guide for supported Node.js versions.
npx rea-agents@latest setupDownload and unpack the official REA Notes example and give the folder path to your agent. You can investigate this sample by reading its code without launching Electron.
What happens when I click Export notes in this sample?
Trace the button to the file writer and show the relevant files and lines.
Find the CSV destination and the column names.%% From the Notes export button to the saved CSV
flowchart TD
A["Export button · renderer.js"]
A --> B["notes:export message · preload.js"]
B --> C["Format CSV and write the file · main.js"]
C --> D["notes.csv in Downloads"]The sample’s columns are id and title. Running the downloaded sample’s formatter with the title Hello, "REA" produced the output below. The title stays in one field, and the inner quotation marks are doubled.
id,title
1,"Hello, ""REA"""That check verifies the formatter’s output. The message shown when a file write fails is a separate behavior to trace. Start with one feature in a sample with source code or an app you have permission to inspect, so you can compare the explanation with the evidence.