ReversePort

Reverse engineer anything. Port it anywhere.

An MCP server and CLI that lets your coding agent take apart apps, games, binaries and websites, then rebuild them or port them to Godot, Unity, Unreal, three.js or another language. It runs on your machine and only reads the target.

npx reverseport setup

Needs Node.js 22.19 or newer. Setup connects Claude Code, Codex, Cursor, Gemini CLI, Copilot, OpenCode and more, and backs up your config first.

A real run of ReversePort 1.0.0 on Godot's 2D platformer demo. JSON trimmed to the key fields.

Ask your agent. It picks the tools.

You keep talking in plain sentences. ReversePort gives the agent one consistent set of tools, and every answer comes with the evidence behind it.

  • What is this game made with, and how is it built?
    re_scan finds the engine and version, languages, entry points and how it starts, also for exported builds.
  • What changed between build 43 and 44?
    re_compare diffs folders, packs and binaries, biggest changes first.
  • Decompile the function that saves settings and explain it.
    Opens the binary through Ghidra, Hopper or IDA, finds the function and shows pseudocode with references.
  • What is this game made with? I don't have the files.
    re_lookup checks public sources: engine with a confidence level, stack, file layout and open-source remakes.
  • Rebuild the movement of this game in Godot.
    re_blueprint writes a clean-room spec: systems, values to measure on the original, a parity table and a project skeleton.
  • How do the packages in this monorepo depend on each other?
    re_graph resolves pnpm, Turborepo and Nx workspace names and tsconfig paths, and shows which package uses which.
  • Show me how this button on the website is built.
    capture_web_screenshot with a CSS selector returns a cropped image of the element, its HTML and its computed CSS.
  • Port my Godot game to Unity.
    port_plan, then the agent ports unit by unit, and port_verify checks that nothing was left behind.

A Godot pack, read field by field

The first bytes of a real Godot 4.3 .pck, and what re_archive makes of them. Point at a field to find its bytes. The same reader finds packs hidden inside an exported .exe.

reverseport archive MiniHeli.pck
{ "format": "godot-pck",
  "packVersion": 2, "godotVersion": "4.3.0",
  "encryptedDirectory": false, "totalEntries": 13,
  "entries": [ { "path": "res://actors/bullet.gd",
                 "offset": 900, "size": 208 }, … ] }
  • Magic"GDPC": a Godot pack
  • Pack format2
  • EngineGodot 4.3.0
  • Pack flagsnone (not encrypted)
  • Files start atbyte 900
  • Files13
  • Path length24
  • First pathres://actors/bullet.gd
  • Its offset0, counted from byte 900
  • Its size208 bytes
  • Its MD526af92524699e4afae68bbe95e718b0b

Findings come with their evidence

An agent that says "done" should be able to show why. A proof case ties every claim to saved evidence and keeps open questions open until they are answered.

  • Evidence is saved with its SHA-256, so a later check sees if a file or tool result changed.
  • Observed claims name a competing explanation and the check that would prove them wrong.
  • In Claude Code, hooks ask first before a tool runs or attaches to a program, refuse remote debugger endpoints, and stop a "done" while a proof case fails its check.
  • With Stashpad, findings become memories you approve, and the next session gets a handoff note that is read once.
reverseport case init --question "What changed between build 43 and 44?" --target ./builds
reverseport case evidence <caseId> --file build-44/Game.pck --locator "build-44" --note "pack"
reverseport case claim <caseId> --statement "Build 44 adds ui/minimap.gd" --evidence '["E001"]'
reverseport case check <caseId>

Port routes

Scenes, transforms and assets convert automatically. Code is ported by your agent with an API map for each pair, one unit at a time.

RouteCodeScenes and prefabsTransformsProject skeleton
Godot→UnityAgent, with API mapSpecs plus a one-click editor builderZ mirroredScene builder script
Godot→UnrealAgent, .h and .cppSpecs in cm, Z upAxes and ×100.uproject, module, targets
Godot→three.jsAgent, TypeScriptTypeScript builder modulesUnchangedVite, TS, fixed-step loop
GDScript→Godot C#Agent, with API mapScript paths swappedUnchanged.csproj, project.godot
Unity→GodotAgent, GDScriptWritten as .tscnZ mirroredproject.godot
Unity→UnrealAgent, with API mapNot yetAxes and ×100.uproject, module
Any→languageAgentNot applicableNot applicableNot applicable

The problems that make ports go wrong

Each of these came from a real port that broke. ReversePort has a tool for it, so the agent does not have to guess.

  • re_apicheck

    Is this GDScript valid for Godot 4.3? Finds Godot 3 names with their replacements, members that do not exist and classes that are too new.

  • port_upgrade

    Godot 3 to 4 as a converted copy: renames, annotations, await, signals, scenes and project.godot, plus what still needs a human.

  • port_convert {physics}

    Gravity, fixed step, damping, friction and layers mapped, and jump velocity recomputed, so the port falls and jumps the same.

  • port_trace

    Logs both versions tick by tick and points to the first tick where they differ.

  • port_shader

    Unity shaders and Shadertoys to Godot: uniforms, intrinsics and built-ins mapped, with markers for the rest.

  • re_save

    Save files: layers, fields with their role, checksums that are verified, and a diff of two saves.

  • re_il2cpp

    A Unity IL2CPP game without source: classes, methods and strings from global-metadata.dat, plus a C# skeleton.

  • port_rpgmaker

    RPG Maker MV/MZ to Godot: maps drawn from the tilesets, events running and a list of what is left.

  • re_archive

    GameMaker, Ren'Py, Unreal, Flash, FMOD, Wwise and Unity WebGL containers: names, assets and facts.

  • re_refs

    Pink materials and "missing" scripts after a Unity move: dangling and duplicate GUIDs, with remap suggestions.

  • re_strings

    Every player-facing string as .pot or .csv, and a translated copy written back.

  • port_verify

    Leftovers, missing functions and stub bodies, so a port that compiles but does nothing is not called done.

Works with the agent you already use

Any vendor and any model size. About 45 tools are listed by default instead of almost 200, so small models stay focused. The rest are one call away, and results over 256 KB are saved to a file instead of flooding the context.

  • Claude Code
  • Codex
  • Cursor
  • Gemini CLI
  • GitHub Copilot
  • OpenCode
  • Windsurf
  • Cline
  • Zed
  • VS Code
MCP
npx reverseport setup, or reverseport connect <client> for a config snippet.
MCP over HTTP
reverseport serve on 127.0.0.1:32147/mcp.
Function calling
Tool lists in OpenAI, Anthropic and Gemini formats, plus OpenAPI 3.1.
Shell only
JSON on stdout, errors as JSON with the exact next step.

Skills that know the next step

Setup installs skills next to the server, so the agent follows the right workflow without being told.

  • reverse-engineer

    How does this work? Engine, stack, architecture, dependency graph, classes, scenes and unknown files.

  • build-inspector

    Exported builds: engine and version, what is inside the pack, and what changed between two builds.

  • rebuild

    No files: learn how a game, app or site is built, then write a measured clean-room rebuild spec.

  • port-project

    Any port, unit by unit in dependency order, with API maps, converted scenes and a verified result.

  • godot-port

    Godot 4 to Unity, Unreal, three.js or Godot C#: signals, node paths, autoloads, physics, input and axes.

  • unity-to-godot

    Unity to Godot 4: MonoBehaviours, prefabs and scenes to .tscn, colliders and rigidbodies.

  • port-verify

    The finish line: fix what is left, then hand over with an honest list of what still needs a human.

  • proof-case

    Evidence, claims that cite it, decisions with what was rejected, real tests and open unknowns.

  • troubleshoot

    Unreadable scenes, packs that will not list, refused paths and MCP connection problems.

The Claude Code plugin adds the port-architect agent, which runs a whole port from recon to hand-over, and guard hooks. A copied skill can be older than the tool: reverseport skills get <name> prints the one that matches your version.

What it does and does not do

So you know what to expect before you install.

It does

  • Run locally. Nothing is uploaded to an analysis service and there is no extra API bill.
  • Only read the target. Output always goes to a new folder.
  • Work right after cloning for scanning, packs, lookup, blueprints and porting. No build step.
  • Drive Ghidra, Hopper, IDA and JADX when you have them installed, and show the evidence behind each conclusion.

It does not

  • Crack, decrypt or bypass DRM, anti-cheat or licensing. Use it on software you own or may analyse.
  • Port code by itself. Your agent writes the code; ReversePort plans, gives API maps and checks the result.
  • Decompile without a backend. Native decompiling needs Ghidra, Hopper or IDA.
  • Convert Unity scenes to Unreal yet. That route ports code and transforms only.

Get started

Three steps, about two minutes.

  1. Connect your agents. Pick them, review the changes and approve.

    npx reverseport setup
  2. Restart your agent so it loads the new MCP server and skill.

  3. Ask something real, for example:

    What is ./MyGame made with? Then plan a port to Unity.

Using Claude Code? You can install the plugin instead, which adds the porting skills and the port-architect agent:

/plugin marketplace add laaielichter/reverseport
/plugin install reverseport@reverseport

The same marketplace has two sister plugins: Stashpad, memory for agents that you can read and review (/plugin install stashpad@reverseport), and agentdisk, a report of what agents left on your disk with a cleanup you can undo (/plugin install agentdisk@reverseport, needs the agentdisk binary).

godot-demo-projects/2d/platformer