cook
A tuner works like this: they take the factory file from your car (the
stock file), change it, and flash the result (the tuned file). If you
have both files, cook does the clever part — it compares them and writes
down every single change in a small text file called a recipe
(.remap).
Think of the recipe as the tuner's change list: "at this location, replace these bytes with those". Once you have it, you can:
- read it — it is human-readable text, so you can see exactly what the tune changes,
- share it — the recipe is portable, so someone else can review it,
- apply it — later commands (
tune,validate) use the recipe to patch another file of the same ECU.
cook only reads your two files. It never changes them.
When do I need it?
- After you have a stock and a tuned file and want to capture the tune as a reusable recipe.
- When you want to review what a tune actually changes before you trust it — open the recipe in any text editor.
- Not when you only have one file:
cookneeds both the stock and the tuned version to know what changed.
Important
A plain cook recipe is for applying to the same kind of file.
If the tune changed things that are different from car to car (like the
VIN or the checksum stores), use
cook-volatile instead — it makes the recipe
car-portable by excluding those "volatile" bytes with recorded evidence.
Try it (2 minutes)
openremap cook stock.bin stage1.bin --output recipe.remap
You will see a short summary like this:
✅ Recipe built successfully
ECU Bosch · EDC17
Match Key EDC17::08001505827522B
Format Version 4.4
Instructions 277
Bytes Changed 43,577
Original stock.bin
Modified stage1.bin
Recipe saved to recipe.remap
(Shortened — a warning line appears when some changes sit outside the calibration area; see the CLI page for what that means.)
Understanding the answer
| The summary says… | In plain words |
|---|---|
| ECU | Which ECU the recipe was built from (must match the target you apply it to) |
| Match Key | The ECU's name tag — the recipe refuses to apply to a different ECU |
| Instructions | How many separate changes were found. Zero means the two files are identical — you may have swapped the order |
| Bytes Changed | How many bytes differ in total — a rough idea of how big the tune is |
If the recipe says ECU: Unknown, the file's family is not supported yet. The recipe is still built (all changes captured), but it has no name tag, so it cannot be matched to a target later.
For developers
cook is one method of openremap.api — the same comparison, from code or
over JSON-RPC:
| Way of using it | Where to look | Example |
|---|---|---|
| Terminal (CLI) | cook — CLI | openremap cook stock.bin stage1.bin --output recipe.remap |
| Python code | cook — API | api.call("cook", {"original_path": "stock.bin", "modified_path": "stage1.bin"}) |
| Any language (JSON-RPC) | cook — API | a request with "method": "cook" |
Where to go next
| You want to… | Go to |
|---|---|
| See every flag and how the diff works | cook — CLI |
Call cook from your own code |
cook — API |
| Make the recipe car-portable | cook-volatile |
| Apply the recipe to a file safely | tune |
| Understand the recipe file format | Recipe format |