|
|
||
|---|---|---|
| bridge | ||
| scripts | ||
| skills/rea-analysis | ||
| src | ||
| tests | ||
| .gitignore | ||
| .prettierignore | ||
| AGENTS.md | ||
| LICENSE | ||
| README.md | ||
| eslint.config.js | ||
| package-lock.json | ||
| package.json | ||
| tsconfig.build.json | ||
| tsconfig.json | ||
| vitest.config.ts | ||
README.md
REA
REA is agent-ready Hopper Disassembler tooling: one CLI with a beta.3 MCP mode, 31 official proxies, 8 enhanced reverse-engineering workflows, and 3 binary-session tools.
Install from this checkout
Requires macOS 12+ and Node.js 22+.
npm ci
npm run build
npm link
rea setup --yes
setup is safe to repeat. It checks the host, installs Homebrew when approved and absent, installs Hopper from the official hopper-disassembler cask, and finishes with structured diagnostics. It never bundles Hopper or publishes this private package.
The CLI and MCP adapter share the same binary-session core. Source-checkout development uses npm link; packaged verification uses a local tarball and does not require a published package.
Useful onboarding commands:
rea --help
rea --llms
rea doctor --target /path/to/binary
rea skills add
rea mcp add
MCP workflow
Start the MCP adapter with rea mcp (or rea --mcp) with no target. In the connected agent:
- Call
open_binarywith any readable local binary or.hoppath. - Call
binary_overview, then use decompilation, strings, symbols, and xrefs tools. - Call
open_binaryagain to switch targets; a failed switch preserves the current target. - Call
close_binarywhen finished.binary_sessionreports current state.
Relative target paths resolve against the MCP server's working directory. Mach-O/FAT, ELF, PE, and Hopper databases are detected automatically. FAT loading selects the host-compatible architecture.
HOPPER_TARGET_PATH remains supported for older configurations but is optional. HOPPER_LAUNCHER_PATH, HOPPER_TARGET_KIND, and HOPPER_LOADER_ARGS_JSON retain their existing meanings for legacy startup configuration.
Manual target-free MCP configuration:
{
"mcpServers": {
"rea": {
"command": "npx",
"args": ["-y", "@morluto/rea", "mcp"]
}
}
}
The first open_binary can take time while Hopper analyzes the file. Analysis calls made without an open target return an actionable NoBinaryOpenError.
Development and verification
npm run check
npm pack --dry-run
npm run verify:package
HOPPER_TARGET_PATH=/path/to/target-a \
HOPPER_SECOND_TARGET_PATH=/path/to/distinct-target-b \
npm run verify:hopper
Real-Hopper verification requires Hopper and a representative target. The stdio server uses only the repository's authenticated Unix-socket bridge; Hopper's bundled MCP server is not used.
The package, executable, MCP, skill, and config names are centralized in src/identity.ts. The package remains private and is not ready for publication.
The package deliberately ships only the rea executable. A future zero-install setup will use the floating registration npx -y @morluto/rea mcp; local tarballs exercise the same packaged command before publication:
npm pack
npm exec --yes --package ./morluto-rea-0.1.0.tgz -- rea --help
License
MIT, see LICENSE.