Skip to main content

Every App Is Open Source

Same answers as REA. 36% cheaper. 27% faster.

I built this to give an AI agent the tools to take a compiled program apart and work out what it does, without the source code. Ghidra does the actual decompiling. My part is everything around it: a small set of tools, short replies by default, honest labels on every answer, and evidence you can trace back to the binary.

Then I tested it against REA, the 300,000-star tool everyone's using, and against the community GhidraMCP. On a secretly modified Doom, all three got every answer right. Mine was the cheapest and the fastest.

The name is a provocation, not a license. This shows you how an app works. It doesn't give you the right to copy it.

Results

Same model for everyone (gpt-6.1-sol, high effort), fresh sessions, six questions, three runs per tool:

Tool Correct Median time per run Tokens, 3 runs API-equivalent cost, 3 runs
Every App Is Open Source 18/18 121.8s 1,728,000 $0.70
Community GhidraMCP 18/18 146.2s 2,337,886 $0.84
REA 6.7.0 + its bundled skill 18/18 166.7s 3,603,877 $1.09

How I kept it honest:

  • Doom's answers are all over the internet, so I changed them. I built Chocolate Doom with eight gameplay rules secretly altered and stripped its function names. An agent answering from memory gets the original values, and those are now wrong.
  • I froze the questions and the answer key before the first run. The answer key comes from running the modified game code, not from me reading it.
  • Everyone got the same head start. All three began with the program already analyzed, outside the timer.
  • REA ran the way people actually install it, with its bundled skill and its full tool catalog.

What this doesn't prove: all three scored 100%, so mine isn't smarter, just cheaper and faster. It's one game, three runs per tool, compiled programs only.

My first version actually lost to GhidraMCP on cost. I read the logs, cut the repeated metadata and the detail nobody had asked for yet, then retested on new questions and a new build. Everything is kept, including the round I lost.

Full results · Every run · Answer-by-answer check · Frozen protocol · The round I lost

Install

You need an Apple Silicon Mac, uv and Apple's Command Line Tools (xcode-select --install).

uvx --python 3.13 --from every-app-is-open-source eaos setup

That downloads checksum-pinned Ghidra 12.1.4 and Java 21, and builds Ghidra's Apple Silicon decompiler, because the official download doesn't include one. Everything lands in ~/Library/Application Support/Every App Is Open Source/. Nothing global, no shell profile edits, no touching your agent's settings. It takes under a minute, and running it again reuses what's there.

Use it

Point your agent at one program:

uvx --python 3.13 --from every-app-is-open-source eaos mcp /absolute/path/to/program

For an MCP client config, the command is uvx and the arguments are:

["--python", "3.13", "--from", "every-app-is-open-source", "eaos", "mcp", "/absolute/path/to/program"]

Or try a single tool from the terminal:

uvx --python 3.13 --from every-app-is-open-source eaos call /absolute/path/to/program open_program

The server only sees the one program you give it. It can't read other files on your machine.

The seven tools

I counted every tool call the agents made across my earlier 24 test runs and built only what they actually used.

Tool What it does
open_program What the program is: architecture, memory layout, analysis status
search Find text inside the program and where it's used, or find functions
inspect Decompiled code, raw instructions, callers and callees
read_memory Read the actual bytes at an address
calculate Safe arithmetic and byte decoding, so the agent doesn't do math in its head
decode_swift_string Recover text hidden inside Swift code on Apple platforms
read_evidence Pull up the full saved evidence behind any reply, hash-checked

Never "exact" for a guess

That was REA's worst habit: a name-based guess labelled "observed, exact." Here, every answer says what it is:

  • fact: read straight from the binary
  • computed: worked out deterministically, like decompiled code or a decoded string
  • guess: an interpretation with nothing solid behind it

Decompiled code is computed, not the original source. When a tool fails, it says it failed.

Analyze once, reuse forever

Ghidra's analysis is slow, so each program gets its own eaos-analysis/<sha256>/ folder right next to it, holding the analyzed project and every piece of evidence. Opening the same program again reuses all of it.

One Ghidra quirk: it won't create projects inside a folder whose name starts with a dot, like .cache. Keep the program you're analyzing out of those.

From a checkout

If you'd rather run it from the repo:

./install.sh
./eaos mcp /absolute/path/to/program

Same requirements. Java, Ghidra and Python all install inside the checkout.

What's next

I only claim "better" where I've measured it:

Area Status
Compiled programs ✅ Beat REA and GhidraMCP on cost and speed, on modified Doom
JavaScript / Electron apps Next: VS Code, with its own hidden answer key
Android apps Planned
.NET apps Planned
Websites, watching apps run Planned

Each one gets the same treatment: a secretly modified target, a frozen answer key and a fair fight against REA, before I claim anything.

Rerun my test

uv run python -m unittest discover -s tests -v
python3 benchmark/build_doom.py

build_doom.py makes a fresh build with new random changes, so you get your own answer key. The binary and answer key from my run stay private, since publishing them would spoil the test. In the saved reports, file paths from my machine are shortened to <repo>.

Credits

Ghidra and PyGhidra do the heavy lifting; they're the work of their own contributors. The comparison baseline is LaurieWired's GhidraMCP. The test target is Chocolate Doom, based on id Software's Doom and released under GPLv2.

License

Apache 2.0. If you build on this, keep the NOTICE file. Before you point it at anything, read the disclaimer.

Metadata

Release files for every-app-is-open-source 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for every-app-is-open-source 0.1.0
File Size Uploaded
every_app_is_open_source-0.1.0.tar.gz 28.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for every-app-is-open-source 0.1.0
File Interpreter ABI Platform
every_app_is_open_source-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 51.8 kB

Release files / every_app_is_open_source-0.1.0.tar.gz

Download URL every_app_is_open_source-0.1.0.tar.gz
Size 28.6 kB
Tags Source
SHA-256 checksum
How to use checksums
afeea638fcc2d690e7a9779aef6d01d490d8163706b76d0e239121ba94c21727
BLAKE2b-256 checksum
How to use checksums
43d49f911d59dca09ebb1ebd3de4e0e825d970759953b8da9348fa273d019015
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / every_app_is_open_source-0.1.0-py3-none-any.whl

Download URL every_app_is_open_source-0.1.0-py3-none-any.whl
Size 23.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8f18e9d6ac4716fc10d92b4f48005163d873669d81768b1d694ef66d0f8dc7e8
BLAKE2b-256 checksum
How to use checksums
c8fcd0ef3f7b54d4f7ef1d5548890e5d51fe1c79fd38ad0cb0956a236e4cc81f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page