CLI Reference
Full reference for the openremap command-line interface. For interactive
use, just run openremap with no arguments to launch the TUI.
No server, no database, no internet connection required — install and run anywhere. (Install)
New to the terminal? Run
openremap workflowfirst. It prints a complete plain-English walkthrough with the exact commands to type and what to look for at each step. No reading required.Know the commands already? Run
openremap commandsfor a one-line-per-command cheat-sheet.
Commands
Every command supports --help for a quick reminder of its arguments and
options. Each command has a plain-English intro page, a CLI
reference with every flag and example, and (for programmatic use) an
API page.
| Command | What it does | Reference |
|---|---|---|
commands |
Compact cheat-sheet — all commands at a glance | → this reference |
workflow |
Step-by-step guide — start here if you are new | → workflow |
families |
List every supported ECU family with era, size, and notes | → families |
identify |
Read an ECU binary and print everything extracted from it | → identify |
analyze |
Describe a whole binary — identity, VIN, layout, maps, checksums, health | → analyze |
convert |
Normalise HEX / S-Record images to flat bytes | → convert |
health |
One-shot calibration health check — CI-gateable | → health |
checksum |
Verify known checksum schemes (OK/STALE, no correction) | → checksum |
scan |
Classify a folder of ECU files by manufacturer and family | → scan |
scan-vins |
Locate VIN candidates and score them | → scan-vins |
layout |
Flash-layout block map — erased/code/calibration/ident regions | → layout |
scan-maps |
Structural scan — find calibration map axes and 2D tables | → scan-maps |
diff-maps |
Compare two binaries at map level — match by axis fingerprint | → diff-maps |
routine |
Read a code routine as readable pseudo-code | → routine |
cook |
Compare a stock and a tuned binary and save the difference as a recipe | → cook |
cook-volatile |
Car-portable recipe — excludes volatile bytes (VIN, checksum stores) with evidence | → cook-volatile |
merge |
Combine two recipes into one, validated against a common stock | → merge |
tune |
One-shot: validate before → apply → validate after | → tune |
validate before |
Pre-flight check — run before tuning (or use tune) |
→ validate |
validate check |
Diagnostic — run when validate before fails |
→ validate |
validate after |
Post-tune confirmation — run after tuning (or use tune) |
→ validate |
audit |
The receipt check — do stock, tuned, and recipe belong together? | → audit |
validate strict/validate exists/validate tunedare deprecated aliases forvalidate before/validate check/validate after. They still work but print a rename notice. Update your scripts when convenient.
Typical session
# New here? Print the full step-by-step guide first
openremap workflow
# Need a quick reminder of all commands?
openremap commands
# Not sure if your ECU is supported?
openremap families
openremap families --family EDC16
# (Optional) Sort a folder of binaries into a tidy library
openremap scan ./my_bins/ # preview — nothing moves
openremap scan ./my_bins/ --move --organize # sort into Bosch/EDC17/ etc.
# (Optional) Discover calibration maps in an unsupported or unknown ECU
openremap scan-maps ecu.bin
openremap scan-maps ecu.bin --region 0x10000-0x80000 --min-score 0.85 --show-series
# (Optional) Diff two binaries at map level — which maps changed, by how much
openremap diff-maps stock.bin stage1.bin
openremap diff-maps stock.bin stage1.bin --threshold 5 --json
# 1. Read the stock binary — confirm it is a supported ECU
openremap identify stock.bin
# 2. Health-check it — checksums, axes, map counts, VINs
openremap health stock.bin
# 3. Extract the tune — diff stock vs tuned and save as a recipe
openremap cook stock.bin stage1.bin --output recipe.remap
# 3b. Applying to ANOTHER CAR of the same SW revision?
# Use cook-volatile — it excludes VIN / checksum-store bytes with evidence
openremap cook-volatile stockA.bin stage1.bin --output portable.remap
# (Optional) Combine small mods — egr_off + stage1 into one recipe
openremap merge egr_off.remap stage1.remap --stock stock.bin -o both.remap
# 4. One-shot: validate before → apply → validate after
openremap tune target.bin recipe.remap
# (Optional) Receipt check — do stock, tuned, and recipe belong together?
openremap audit stock.bin stage1.bin recipe.remap
# If tune fails at Phase 1 — diagnose why
openremap validate check target.bin recipe.remap
# 5. MANDATORY — correct checksums with ECM Titanium, WinOLS, or equivalent
# before flashing the tuned binary to any vehicle
The old openremap-server daemon (replaced)
⚠ Historical — do not build new integrations on this. The legacy
openremap-serverdaemon has been replaced by the new API transport, and its module (openremap/server.py) no longer exists in the package.
openremap-server used to start a long-running JSON-RPC daemon that
non-Python applications (desktop editors, IDE plugins, automation tools
written in Rust, Go, C++, Electron, etc.) could use to call the openremap
pipeline without cold-starting a Python interpreter on every request.
The replacement is the API transport: the same JSON-RPC calls, served one request per line over stdin/stdout. See API — the programmatic surface and the method reference for what you can call today.
Two things to know if you are porting an old client:
python -m openremap.serverno longer exists — runpython -m openremap.api.transport.stdioinstead. It stays alive until stdin is closed, exactly like the old daemon.- The legacy daemon returned bare error strings; the new transport returns
JSON-RPC error objects —
{"id": <id>, "error": {"code": <int>, "message": "<str>"}}— so clients can branch on the code instead of parsing prose.
Other documentation
| Document | Contents |
|---|---|
| Getting started | The wiki home — who this is for, five-minute path, command map |
| How it works | The full pipeline, step by step |
| Confidence scoring | Confidence scoring — tiers, signals, warnings, and score breakdown |
| Recipe format | The recipe format spec (.remap) — fields, structure, versioning |
| Manufacturers | Supported ECU families per OEM |
| About OpenRemap | The project's identity and aims |
| Contributing | How to add a new ECU extractor, code style, submitting a PR |
| Disclaimer | Liability, intended use, professional review requirements |