OpenRemap Docs

Cook

A recipe is the written record of what a tuner changed: at this offset these bytes become those bytes. Two files in, one recipe out. Nothing is modified.

cook-strict

What it is: the normal way to make a recipe. It insists that every change can be found uniquely in the file, which is what makes the result safe to apply to another car with the same software.

openremap cook-strict original.bin stage1.bin -o stage1.remap
  cook-strict  ·  original.bin
  MODE          anchors must be unique · exclusions: none
  STOCK KEY     EDC17C66::1037541778126241V0
  TUNED KEY     EDC17C66::1037541778126241V0
  CHANGES       79 instructions · 7,828 bytes · 24 maps
  REGIONS       79 tagged · calibration 38, mixed 40, erased 1
  FLAGS         CODE_AREA 41

  ✅ RECIPE BUILT
  identity_floor any
  sections       maps, regions
  saved to       stage1.remap

What the lines mean:

  • CHANGES — how many separate edits, how many bytes, how many tables involved.
  • REGIONS — where the edits sit: inside calibration data, mixed, or empty space.
  • FLAGS — edits worth a look, e.g. CODE_AREA means it touched program code. Flagged, not dropped: a flag is information, never a filter.
  • identity_floor any — the important one for later: this recipe can be applied to any dump of this family, including one the tool cannot identify.

cook-forced

What it is: the same, but it permits changes that cannot be pinned down uniquely (a change inside repeated blank bytes, for instance).

openremap cook-forced original.bin stage1.bin -o stage1-forced.remap
  cook-forced  ·  original.bin
  MODE          anchors may repeat · exclusions: none
  CHANGES       79 instructions · 7,828 bytes · 24 maps

  ✅ RECIPE BUILT
  identity_floor any
  saved to       stage1-forced.remap

Notice identity_floor any here too: forcing allows repeated bytes, it does not require them. When they do occur the floor becomes firmware, and then only commands that verify the software version will accept the recipe.

Rule of thumb: try cook-strict first. Use cook-forced only if strict refuses.

recipe-info

What it is: reads a recipe and tells you what it says about itself. No target file needed — nothing is applied.

openremap recipe-info stage1.remap
  stage1.remap
  SCHEMA        5.0  (cook-strict)
  CONTENT       79 instructions · 7,828 bytes
  PORTABILITY   identity_floor any · anchors_unique True · sections maps, regions
  FROM          original.bin  (4,194,304 B · EDC17C66::1037541778126241V0)
  TO            stage1.bin
  CHANGED       7,828 bytes (0.19 %) · 3 single / 76 multi-byte
  PRODUCED      openremap 0.9.0

Use this before applying a recipe you were given: it tells you which files it was made from and what it requires.

A recipe from an old version is refused with a pointer to the cook command, not silently accepted:

✗ REFUSED at A2 — schema 4.x is not supported by the apply engine; re-cook it with cook-strict

merge

What it is: combines two recipes into one, checked against a common stock file.

openremap merge stage1.remap egr_off.remap --stock original.bin -o both.remap
  ✅ Merged stage1.remap (79 instructions) + egr_off.remap (12 instructions) → 91 instructions.

  Saved merged recipe to both.remap (schema 5.0)

If the two recipes change the same bytes differently, it says so and refuses — it never guesses which one wins.

Where to go next

You want to… Go to
apply the recipe to an actual file tune-strict
prove the recipe reproduces the tuned file audit
understand the recipe format recipe format