merge
Sometimes you end up with two recipes for the same car: one tuner's
egr_off.remap, another's stage1.remap. You want both changes in one
recipe — but applied together safely.
merge combines two recipes into one. It works like git's "three-way
merge": you give it the stock file (the original, unmodified binary)
as the common ancestor, and it figures out how the two change lists fit
together.
- Changes that do the same thing → kept once.
- Changes in different places → both kept.
- Changes that disagree (two different edits at the same spot) → conflict — reported for you to decide. Nothing is guessed.
merge never changes your files — it reads the two recipes (and the stock
file) and writes a new merged recipe.
When do I need it?
- When you combine small mods into one recipe per car (egr_off +
stage1 + dpf_off → one
.remap). - When two people tuned the same car and you want to merge their change lists into one reviewable recipe.
- When a recipe was built from a slightly different original — merge
skips (or, with
--strict, aborts on) the few instructions that do not match your stock file, instead of failing the whole thing.
Try it (2 minutes)
openremap merge egr_off.remap stage1.remap --stock stock.bin -o both.remap
You will see a short report:
✅ Merged egr_off.remap (12 instructions) + stage1.remap (67 instructions) → 79 instructions.
⚠ egr_off.remap: 1 instruction(s) skipped — they do not match the stock binary
(…). This recipe was likely built from a slightly different original.
Saved merged recipe to both.remap (schema 4.4)
(Sample output — numbers depend on your recipes.)
Understanding the answer
| The report says… | In plain words |
|---|---|
| → N instructions | The total change list after merging |
| skipped | A few changes did not match your stock file (e.g. car-specific bytes) and were left out — with a note |
| schema 4.4 | The merged recipe is in the standard format with the maps layer |
If a merge reports a conflict, the two recipes edit the same spot differently — no tool can choose for you. Re-examine the two recipes (they are plain text) and decide which change you actually want.
For developers
merge is one method of openremap.api:
| Way of using it | Where to look | Example |
|---|---|---|
| Terminal (CLI) | merge — CLI | openremap merge a.remap b.remap --stock stock.bin -o both.remap |
| Python code | merge — API | api.call("merge", {"recipe_a": …, "recipe_b": …}) |
| Any language (JSON-RPC) | merge — API | a request with "method": "merge" |
Where to go next
| You want to… | Go to |
|---|---|
See the exact merge rules and --strict |
merge — CLI |
Call merge from your own code |
merge — API |
| Build the recipes you merge | cook |
| Apply the merged recipe to a file safely | tune |