Skip to main content

OpenRemap

CI

PyPI Changelog License: MIT Python 3.10+ uv

An offline-first engine for analyzing, comparing, and reproducing ECU binary changes.

Embed it as a library, automate it in a pipeline, or run it from the terminal — your ECU data never leaves your machine.

🌐 openremap.com — full documentation, guides, and changelog.

Runs entirely offline. No accounts, no telemetry, no data leaves your machine — ever.


What it is

OpenRemap is an offline-first ECU binary analysis engine, exposed as a Python library and a CLI. The same pipeline that powers the command-line tool is fully available as importable services — no subprocess, no parsing stdout.

from openremap.core.services.identifier import identify_ecu
from openremap.core.services.confidence import score_identity
from openremap.core.services.patcher    import ECUPatcher

data     = open("ecu.bin", "rb").read()
identity = identify_ecu(data, filename="ecu.bin")
result   = score_identity(identity)

print(f"{identity['ecu_family']}  {result.tier}")  # EDC17  High

All services accept bytes and dict — no file paths, no hidden state, trivial to test and wrap in an API endpoint or a desktop app.

CPU-bound algorithms (entropy analysis, context-anchor search) run on a compiled Rust backend via PyO3. Pre-built wheels ship the native extension for Linux, macOS, and Windows — pip install openremap and it just works. A pure-Python fallback covers platforms without pre-built wheels.

Full integration guide


The problem

ECU work revolves around three tasks that today require expensive commercial software (€2,500–€8,000+) or manual hex-editor work with no audit trail:

  1. Identify a binary — manufacturer, ECU family, software revision, confidence score
  2. Diff two binaries — what changed between a stock file and a tuned file, captured as a portable recipe
  3. Apply a recipe to another binary — validate, patch, and verify — all-or-nothing

Whether you are building a tuning application, automating a workflow, or just need a reliable offline tool — OpenRemap gives you a clean Python API and a full CLI for all three.

What OpenRemap does

Step Command What happens
Identify openremap identify ecu.bin Reads the binary and tells you: manufacturer, ECU family, software version, hardware number, calibration ID — plus a confidence score rating how likely the file is unmodified
Scan openremap scan ./bins/ Batch-identifies every binary in a folder. Sorts them into Bosch/EDC17/, Siemens/PPD/, etc. Flags suspicious files before you touch them
Cook openremap cook stock.bin tuned.bin Diffs two binaries byte-by-byte and produces a .remap recipe — a portable JSON file listing every changed byte with context anchors. Readable in any text editor, diffable in Git
Tune openremap tune target.bin recipe.remap Validates the recipe against the target binary, applies the patch, then verifies every byte landed correctly. All-or-nothing — partial patches never happen

What it does NOT do

  • Map editing — OpenRemap works at the byte level, not the map level. Use WinOLS or ECM Titanium to find and edit maps. Use OpenRemap to capture, share, and reapply those edits.
  • Checksum correction — you must run the output through WinOLS, ECM Titanium, or equivalent before flashing. Always.
  • ECU reading/writing — it operates on .bin files you already have.

Supported ECUs

30 extractors across 4 manufacturers, covering ECUs from 1982 to present:

Manufacturer Families Examples
Bosch (18) EDC17, EDC16, EDC15, ME7, ME9, M5.x, M4.x, M3.x, M2.x, M1.x, MP9, ME1.5.5, LH-Jetronic, Mono-Motronic, and more VAG TDI, BMW, Volvo, PSA, Porsche, Alfa Romeo
Siemens (6) SIMOS, PPD, SID 801/803, Simtec 56, EMS2000 VAG petrol, PSA/Ford diesel, Volvo turbo
Delphi (2) Multec, Multec S Opel/Vauxhall diesel and petrol
Marelli (4) IAW 1AV, IAW 1AP, IAW 4LV, MJD 6JF Fiat, PSA, GM/Opel

→ Full reference: Bosch · Siemens · Delphi · Marelli


Confidence scoring

Every identification includes a confidence verdict — HIGH, MEDIUM, LOW, SUSPICIOUS, or UNKNOWN — built from multiple signals:

  • Detection strength — how rigorous the extractor's matching cascade is
  • Software version format — manufacturer-aware canonical format checking (Bosch 1037-prefixed, Delphi 8-digit GM-style, etc.)
  • Identity fields present — hardware number, calibration ID, ECU variant
  • Filename analysis — tuning keywords (stage2, dpf_off, egr_off) and generic names (1.bin) flag suspicious files
  • Family-aware scoring — ECU families that architecturally lack certain fields are never penalised for their absence

Full scoring breakdown


The recipe format

The .remap recipe is a self-contained JSON file. Every changed byte is listed with its offset, original value, modified value, and a context anchor — 32 bytes of surrounding data that let the patcher find the right location even if the binary has shifted slightly between software revisions.

Recipes are human-readable, Git-diffable, and shareable. No proprietary format, no binary blobs. A recipe is a portable, reproducible record of a tune — you can review it, version it, and apply it to any matching ECU.

Recipe format specification


Install

Works on Windows, macOS, and Linux. One command:

pip install openremap

Or with uv (recommended):

uv tool install openremap

Pre-built wheels include the compiled Rust backend — no Rust toolchain required. On platforms without a pre-built wheel, the pure-Python backend takes over automatically.

Detailed guides:


Get started

openremap

The full terminal UI launches — identify files, scan folders, cook recipes, and apply tunes, all from one interface.

The complete CLI is also there when you need it:

openremap workflow    # Prints a plain-English step-by-step guide
openremap commands    # Quick reference of all available commands

Full CLI reference


Documentation


Contributing

Contributions are welcome — especially new ECU family extractors. See CONTRIBUTING.md.

License

MIT — see LICENSE.

OpenRemap TUI — Scan panel


⚠️ Checksum verification is mandatory. Before flashing any tuned binary to a vehicle, you must run it through a dedicated checksum correction tool (ECM Titanium, WinOLS, or equivalent). openremap tune confirms the recipe was applied correctly — it does not correct or validate ECU checksums. Flashing a binary with an incorrect checksum will brick your ECU.

⚠️ Research and educational use only. Any output produced by this software must be reviewed by a qualified professional before being flashed to a vehicle. The authors accept no liability for damage, loss, or legal consequences arising from its use. Read the full DISCLAIMER.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

openremap-0.6.1-cp310-abi3-win_amd64.whl (504.7 kB view details)

Uploaded CPython 3.10+Windows x86-64

openremap-0.6.1-cp310-abi3-manylinux_2_34_x86_64.whl (612.5 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.34+ x86-64

openremap-0.6.1-cp310-abi3-macosx_11_0_arm64.whl (596.4 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file openremap-0.6.1-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: openremap-0.6.1-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 504.7 kB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for openremap-0.6.1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 7d7896982b64031e6212a383e1daee199a5b96ab61042091370045c54fc5ad25
MD5 6be498ef996cbf6c9553e3f290df7104
BLAKE2b-256 bb4258450c41a2bad551e94788492075c9d71e0c5a02d978ef9004c97e12cd7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for openremap-0.6.1-cp310-abi3-win_amd64.whl:

Publisher: release.yml on v-arapidis/openremap-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openremap-0.6.1-cp310-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for openremap-0.6.1-cp310-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 a9940ea23cd1863a102c3e4e796a26bbca6a1ef90dfb7bfcedaf81894a3fa6c7
MD5 c71c4b44d968301a85a5d1c603a9ffa8
BLAKE2b-256 76dd9cdf0929a8907d48958b0e6d6ad0eb85911645228ad3021b2e7b55731edf

See more details on using hashes here.

Provenance

The following attestation bundles were made for openremap-0.6.1-cp310-abi3-manylinux_2_34_x86_64.whl:

Publisher: release.yml on v-arapidis/openremap-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openremap-0.6.1-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for openremap-0.6.1-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 49dc1702f9622c0f878e8384dedaf9c56e83b34ceb66a2605b755304517bfed9
MD5 31930674a193a8cf93e280b17dfb3807
BLAKE2b-256 56f03387cc727f1ca706e7a378fa82ca3bfb505bcb5b59a70fc0b4e430059c9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for openremap-0.6.1-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on v-arapidis/openremap-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page