axyatech/rea-harness-plugin

rea-harness-plugin

REA (Reverse Engineer Anything) is a plugin designed for the DeepSeek Harness (DSH) that provides agents with specialized tools to inspect binaries, applications, packages, and web pages while returning verifiable evidence for each conclusion.

未分類agent-toolsbinary-analysisdeepseek-harness

REA for DeepSeek Harness

Reverse Engineer Anything, inside DeepSeek Harness. One installable plugin: REA's MCP server, its workflow skill, and a live readiness panel in the left sidebar.

REA gives an agent tools to inspect binaries, applications, packages, and pages and to return the evidence behind each conclusion. This plugin makes that experience installable from the Harness itself:

  • No hand-written MCP configuration. A bundle row starts REA's MCP server.
  • No separate skill setup. The plugin contributes reverse-engineer-anything to the agent's skill catalog.
  • No launcher paths to maintain. The pinned REA package is fetched through npx and cached.
  • A visible control surface. The sidebar panel reports the live tool count, workflow version, engine readiness, and a searchable tool catalog.

Contents

  • Install
  • Quick start
  • What you get
  • Architecture
  • Tool catalog
  • Compatibility
  • Configuration
  • Security and privacy
  • Troubleshooting
  • Development
  • Distribution and catalog
  • Roadmap
  • Contributing
  • License and acknowledgments

Install

Option A — npm (recommended)

The plugin is published as `@axyatech/dsh-plugin-rea`.

Settings → Plugins → Add plugin → paste the package name:

@axyatech/dsh-plugin-rea

Pin a release when you need reproducibility:

@axyatech/dsh-plugin-rea@1.1.0

From an agent or the plugin_manager tool:

plugin_manager action=install_bundle target=@axyatech/dsh-plugin-rea

Option B — Discover

Do this once:

  1. Plugins → More beside *Experimental plugins* → enable Custom plugin markets.
  2. Open the new Discover tab → Add index source.
  3. Paste this index URL:
https://raw.githubusercontent.com/axyatech/rea-harness-plugin/main/market/index.json

REA for DeepSeek Harness then appears as a searchable market entry, with the version, compatibility, and install target read from the index. Select it and install.

DSH does not ship an official third-party market; Discover lists the indexes you add. This repository publishes its own format-1 index, which resolves to the npm release.

Option C — Git repository

Settings → Plugins → Add plugin → choose the Git repository option → paste:

https://github.com/axyatech/rea-harness-plugin.git

Or install the same Git source from an agent:

plugin_manager action=install_bundle target=https://github.com/axyatech/rea-harness-plugin.git

Option D — Clone and link

git clone https://github.com/axyatech/rea-harness-plugin.git
plugin_manager action=install_bundle target=/absolute/path/to/rea-harness-plugin

After installing

The bundle is applied immediately. Refresh the Harness page once; new sessions pick up the workflow skill. If the MCP server reports zero tools on first open, wait for the npx download and press Refresh.

The current npm release is `@axyatech/dsh-plugin-rea@1.1.0`; see Distribution for release and provenance details.

Quick start

Ask in a new session:

Explain how search works in this shipped app, and show the evidence.
Compare two builds of this Electron app and list the behavior that changed.
Decompile this .NET method and reconstruct the interface it implements.

The REA skill teaches the agent when and how to use the tool set. The panel confirms that the server, skill, and engines are ready before a deep investigation starts.

What you get

Component · Behavior MCP server · npx -y rea-agents@6.8.0 mcp; tools are exposed as mcp__rea__* (229 tools in 6.8.0). Workflow skill · reverse-engineer-anything, registered on each agent's own layer so it outranks a stale user copy while project-local skills still win. Sidebar entry · A REA icon opens the panel: connection, package, skill version, engine audit, tool search, quick prompts, and commands. Status endpoint · GET /plugins/rea/status returns the live tool inventory plus a cached rea doctor audit. Cross-platform Host half · Plain ESM with no runtime dependencies; tested by CI on macOS, Linux, and Windows.

Architecture

flowchart LR
  subgraph Harness["DeepSeek Harness"]
    A[Agent] -->|mcp__rea__*| M[MCP client]
    P[REA panel] -->|GET /plugins/rea/status| H[Host half]
    H -->|tool inventory| T[Tool registry]
    H -->|rea doctor| C[REA CLI]
    H -->|skill provider| S[Skill registry]
    A -->|loads skill| S
  end

  M -->|stdio| R[REA MCP server]
  R --> E[Hopper · Ghidra · IDA · JADX · Kuna]
  R --> F[Local binaries, apps, packages, pages]
  C --> E

  H -.->|reads| N[rea-agents package]
  P -.->|renders| U[User]

The panel never talks to the REA server directly: it reads the Host route. The Host half is optional-service based, so it stays inert in a Harness without a web server or skill registry. Nothing is written to disk.

Tool catalog

REA 6.8.0 exposes 229 tools. The panel makes them searchable, and the same list is available to the agent under the mcp__rea__ namespace.

A few common entry points:

Tool · Use it for open_binary · Open an executable, archive, JavaScript bundle, or analysis database. analyze_function · Build a complete function dossier with pseudocode, assembly, calls, and references. analyze_javascript_application · Reconstruct an Electron or JavaScript application without executing it. inspect_managed_members · Decode .NET metadata, CIL anchors, and signatures without loading the assembly. inspect_artifact · Inventory a package, APK, IPA, DMG, ASAR, or archive with hashes and next probes. capture_browser_scenario · Run one bounded browser scenario and return evidence.

Compatibility

Surface · Supported · Status DSH · 0.2.x (engines.dsh: >=0.2.1-rc.3 =26.12.1 · Required for the npx MCP launch macOS · macOS 12+ · Runtime-verified (arm64, Web GUI) Linux · CI-tested Host logic · Full DSH + REA runtime not yet verified; REA needs procps Windows · CI-tested Host logic · Full DSH + REA runtime not yet verified Web GUI · Harness Web · Verified Electron `file://` shell · Not verified · Use the Web GUI

CI runs the Host test suite on Ubuntu, macOS, and Windows with Node 22, 24, and 26. The suite exercises the status route, loopback guard, home-path redaction, doctor parsing, and skill provider without requiring DSH or REA.

REA's analysis engines are optional:

  • Hopper is detected at its standard macOS location.
  • Ghidra needs GHIDRA_INSTALL_DIR and a JDK 21+.
  • IDA, JADX, apktool, ADB, WABT, TShark, Kuna, and a browser for web scenarios are configured through REA's REA_* variables and its installation guide.
  • Static JavaScript/Electron, .NET, artifact, SQLite, plist, entitlement, Go/Rust, and WASM analysis work without a native engine.

Configuration

The bundle's rows can be overridden in your own cordis.patch.yml (a profile patch, or the home patch at ~/.dsh/cordis.patch.yml). A non-insert patch replaces the whole config, so restate every field you need.

Pin another REA version or add engine paths:

- id: mcp-rea
  name: "@deepseek-ai/dsh-mcp-client"
  config:
    serverName: rea
    transport: stdio
    command: npx
    args: ["-y", "rea-agents@6.8.0", "mcp"]
    toolCallTimeoutMs: 600000
    failOnStartupError: false
    env:
      GHIDRA_INSTALL_DIR: /absolute/path/to/ghidra_12.1.4_PUBLIC
      JAVA_HOME: /absolute/path/to/jdk-21

Keep machine-specific engine paths in that local patch, never in this repository.

Environment variables read by the plugin itself:

Variable · Purpose REA_ROOT · Absolute path to a rea-agents package to use for the audit and skill. REA_LAUNCHER · Absolute path to a scripts/rea.mjs launcher. REA_NODE · Node executable for the audit (defaults to common paths, then node). REA_NPX · npm launcher for the audit fallback (defaults to npx). REA_INSTALL_ROOT · REA's installer state directory (default ~/.local/share/rea); its environment.json supplies engine paths for the audit.

Already configured REA by hand?

Two MCP rows with the same serverName cannot both load. Remove the older registration first:

  • rea setup --client dsh writes a rea-mcp row to ~/.dsh/cordis.patch.yml — delete that row.
  • A hand-written mcp-rea insertion in a profile patch — replace it with the override shown above so it keeps your engine paths and targets the bundle row.

Security and privacy

  • No secrets, no writes. The plugin stores nothing and reads only local REA files for status and skill discovery.
  • Loopback-only status. /plugins/rea/status rejects every non-loopback peer with 403; it answers GET/HEAD only and uses no request value in a command or path.
  • Home-path redaction. Every returned path replaces your home directory with ~, including doctor details and remediation text.
  • No telemetry. The only network access is npm's first download of the pinned REA package, plus whatever local REA tool you invoke.
  • No remote control. The plugin opens no port of its own, installs no service, and has no command endpoint.

The full model, including the loopback proxy behavior and supply-chain notes, is in SECURITY.md.

Troubleshooting

Symptom · What to do Panel shows Offline or zero tools · Confirm node and npx are on the Harness PATH; run npx -y rea-agents@6.8.0 doctor --format json in a terminal; check the first-download network access; press Refresh. Failed to load plugins after updating or renaming this bundle · Restart DeepSeek Harness. The browser boot graph caches a client module id across a package rename; a restart rebuilds it. Two rea MCP servers or a startup error · Remove the older rea-mcp/mcp-rea registration from the home or profile patch. Status route returns 403 from another machine · That is the loopback guard. Use an SSH tunnel or a same-machine reverse proxy. Node engine warning in the panel · Update Node to REA's supported range; the server can still run outside it, but the audit reports the mismatch. Skill still shows an older version · New agents resolve the aligned copy; restart Harness so existing sessions re-resolve it. Project-local skills intentionally win. MCP fails only on Windows · Ensure a Node distribution with npx.cmd is on PATH; the Host half is CI-tested, the DSH MCP launch path is not yet runtime-verified on Windows.

Development

No build step. The package is plain ESM plus a browser module.

npm test        # node --test: route, redaction, loopback, doctor, skill provider
npm run check   # node --check for both halves
npm pack --dry-run

CI runs that same sequence on:

  • Ubuntu, macOS, and Windows
  • Node 22, 24, and 26

The preview images under docs/assets/ are rendered from the self-contained pages in docs/preview/:

chrome --headless=new --hide-scrollbars --force-device-scale-factor=2 \
  --window-size=1200,810 --screenshot=docs/assets/panel.png \
  file://$PWD/docs/preview/panel.html

Distribution and catalog

DSH's Discover tab has no official third-party catalog: it shows only the format-1 indexes a user adds. This repository therefore ships its own index:

market/index.json

The index is validated against DSH's dsh-plugin-market-index format and pins each release to an immutable npm version. Adding the raw index URL once makes the plugin discoverable and installable from Discover. The index entry also carries the engines.dsh compatibility range, so incompatible Harness versions are marked before installation.

The plugin is published to npm as `@axyatech/dsh-plugin-rea` (current release: `1.1.0`, MIT, private: false, public access). Verify the published version:

npm view @axyatech/dsh-plugin-rea version

The unscoped dsh-plugin-rea name belongs to another publisher and is deliberately not used.