RouterOS Schema Diff

Side-by-side diff of RouterOS API commands between two versions. Each line represents a path (/ip/address/), command (/ip/address/add), or argument (/ip/address/add address=(> "A.B.C.D/M")) from /console/inspect.

How to use RouterOS Schema Diff Tool
Using the Diff

Pick two versions from the dropdowns — the diff fires automatically, no button needed. The extra-packages toggle includes commands from container, iot, zerotier, and other optional packages; testing includes beta and RC builds in the version list. Hit between the dropdowns to swap the two versions, then open Show CHANGELOGs for the human release notes between them.

Below each version, the command and attribute counts for that schema are shown. The ⬇ Download link saves the full pseudo-CLI text for that version — the same flat representation used in the diff. After a comparison, a 𝚫 summary on the right of the options bar shows the net change in commands and attributes (green = added, red = removed, yellow = unchanged).

Tune the view with the options bar: side-by-side or line-by-line layout, optional context lines around changes, and hunk markers (@@) shown or hidden. Use 🔗 Share to copy a URL that restores the exact comparison and view settings. All options are captured in the URL automatically.


The Notation

Lines use a pseudo-CLI shorthand — not actual RouterOS export output, but a flat reading of the command tree. Each line is one of:

/ip/address/                             ← menu (trailing /)
/ip/address/add                          ← command
/ip/address/add address=(> "A.B.C.D/M") ← argument + type hint
Added lines appear as insertions, removed as deletions — standard unified diff.

The (> "…") is how RouterOS describes argument types internally — the same hint WinBox shows in its property sheet. No (> …)? That argument has no type metadata available.


How the sausage is made — RouterOS exposes /console/inspect via REST — the same introspection endpoint that powers WinBox’s sidebar tree and CLI Tab-completion. A real RouterOS CHR boots in CI, every API branch is walked via POST /rest/console/inspect, and the result is flattened into the pseudo-CLI notation above. The ⬇ Download saves exactly this flattened text — not the raw inspect.json. CLI paths (/ip/address) are used instead of REST URLs (/rest/ip/address/add) — most admins think in terminal.