routeros-fundamentals
RouterOS v7 domain knowledge for AI agents. Use when: working with MikroTik RouterOS, writing RouterOS CLI/script commands, calling RouterOS REST API, debugging why a Linux command fails on RouterOS, or when the user mentions MikroTik, RouterOS, CHR, or /ip /system /interface paths. Scope: RouterOS 7.x (long-term and newer) only — v6 is NOT covered and accuracy for v6 problems will be low.
适合你,如果经常需要配置或调试 MikroTik RouterOS 设备
用别的 agent?下载 .zip 解压,把文件夹放进它的技能目录
~/.claude/skills/(项目级 .claude/skills/)~/.codex/skills/npx oh-my-skill add tikoci/routeros-skills/routeros-fundamentalscurl -fsSL https://oh-my-skill.com/install.sh | bash -s -- tikoci/routeros-skills/routeros-fundamentalsnpx oh-my-skill verify tikoci/routeros-skills/routeros-fundamentals怎么用
技能原文 SKILL.md
RouterOS Fundamentals
RouterOS Is NOT GNU/Linux
RouterOS runs a Linux kernel (5.6.3) but everything above the kernel is MikroTik's proprietary nova system. This is the single most important fact for agents to internalize.
What does NOT exist on RouterOS:
- No
/bin,/usr,/etc,/var— no FHS layout - No bash, sh, ash, zsh — no Unix shell at all
- No coreutils (
ls,cat,grep,ps,mount,ip,iptables, etc.) - No glibc, musl, busybox
- No apt, pkg, opkg — no package manager (packages are
.npkfiles installed via upload + reboot) - No
systemctl,service, init system - No
/procor/sysaccessible from userland - No
docker,podman— RouterOS has its own/containersubsystem (7.x+)
What DOES exist:
- RouterOS CLI — its own language, not shell. Accessed via SSH, serial, WinBox, or WebFig
- REST API at
/rest/(HTTP, port 80 by default) — the primary programmatic interface - RouterOS scripting language (
.rscfiles) — its own syntax, not bash. See therouteros-scriptingskill and [Scripting reference](./references/scripting.md) - WebFig (web UI) on port 80
- WinBox protocol on port 8291
Common agent mistakes to avoid:
- Do NOT try
ssh admin@host 'ls /'— it opens RouterOS CLI, not a shell - Do NOT suggest
mount,fdisk,mkfs— use/diskcommands instead - Do NOT look for config files at
/etc/— configuration is in the RouterOS database - Do NOT assume
pingworks the same — it's/tool/pingor/pingin CLI - Do NOT suggest installing packages via
aptoropkg— upload.npkvia SCP then/system/package/apply-changes(7.18+) or/system/reboot(<7.18) - See [Extra packages reference](./references/extra-packages.md) for the full package list and installation pattern
RouterOS CLI Syntax
RouterOS CLI uses path-based navigation, not Unix command pipelines:
# Navigation /ip/address/print /interface/print /system/resource/print # Adding entries /ip/address/add address=192.168.1.1/24 interface=ether1 # Modifying (by internal ID or find expression) /ip/address/set [find interface=ether1] address=10.0.0.1/24 # Removing /ip/address/remove [find address="192.168.1.1/24"] # Running a command /system/reboot /tool/fetch url="http://example.com/file.npk" dst-path="/"
Key syntax differences from shell:
=assigns properties (no spaces around it)[find ...]is the query expression (like WHERE)- Interactive
printrow numbers are not script-safe object IDs; use[find ...]or*HEXinternal IDs - Strings use
""(double quotes only) - Comments use
# - Variables:
:local myVar "value"and$myVar - No pipes, no redirection, no subshell
REST API
RouterOS REST API at http://HOST:PORT/rest/. HTTP verbs map non-standardly:
| HTTP | RouterOS Action | CLI Equiv | |---|---|---| | GET | print (list/read) | /path/print | | PUT | add (create) | /path/add | | PATCH | set (update) | /path/set | | DELETE | remove | /path/remove | | POST | command (execute) | /path/command |
Key gotchas:
PUTcreates (NOT updates) — opposite of many REST APIs- Empty password auth:
admin:(colon required, nothing after) - WebFig root (
GET /) returns HTTP 200 without auth — use as health check - REST API (
/rest/) requires auth (HTTP 401 without it) .idfield is*HEXformat (e.g.,*1,*A)
See [REST API reference](./references/rest-api-patterns.md) for full patterns, error handling, filtering, POST commands, and /console/inspect.
Version Scheme
Format: MAJOR.MINOR[.PATCH][betaN|rcN] — e.g., 7.22, 7.22.1, 7.23beta2, 7.22rc1
Channels: stable / long-term / testing / development
Version endpoint (plain text): https://upgrade.mikrotik.com/routeros/NEWESTa7.<channel>
For version parsing, comparison, download URLs, and package naming: see [Version parsing reference](./references/version-parsing.md).
Architecture Names
MikroTik uses these architecture identifiers (not standard Linux arch names):
| MikroTik name | CPU | Common hardware | |---|---|---| | x86 | x86_64 | CHR, x86-based RouterBOARDs | | arm64 | aarch64 | Modern ARM boards (RB5009, Chateau) | | arm | ARMv7 | Older ARM boards | | mipsbe | MIPS big-endian | Legacy RouterBOARDs | | mmips | MIPS multi-core | hAP ac, RB4011 | | smips | MIPS single-core | hAP lite, mAP | | ppc | PowerPC | CCR1xxx series | | tile | Tilera | CCR (older models) |
CHR (Cloud Hosted Router) is available only for x86 and arm64.
Default Credentials
- Username:
admin - Password: (empty — no password)
- On first login via SSH/console, RouterOS 7.x prompts to set a password or press
ato skip - REST API and WebFig allow empty-password access
Inspecting Hardware from RouterOS CLI
# PCI devices (the RouterOS equivalent of lspci) /system/resource/hardware/print # IRQ assignments (shows driver binding) /system/resource/irq/print # System overview /system/resource/print # Disk info /disk/print # Installed packages /system/package/print # IP services and ports /ip/service/print # Network interfaces /interface/print
Additional Resources
Reference files:
- New official manual home: <https://manual.mikrotik.com/>. The new site is replacing older Confluence-based
help.mikrotik.comdocs and includes a CLI Reference section at <https://manual.mikrotik.com/docs/CLI%20Reference/>. - For REST API details and
/console/inspectcommand tree: see [REST API reference](./references/rest-api-patterns.md) - For version parsing, comparison, and download URL logic: see [Version parsing reference](./references/version-parsing.md)
- For extra packages (container, iot, zerotier, etc.): see [Extra packages reference](./references/extra-packages.md)
- For device-mode (modes, feature matrix, physical confirmation): see [Device-mode reference](./references/device-mode.md)
- For RouterOS scripting language syntax: see [Scripting reference](./references/scripting.md)
- For user management, SSH keys, admin account: see [Users REST reference](./references/routeros-users-rest.md)
- For IP addressing, routing, DHCP, DNS, interfaces: see [Networking REST reference](./references/routeros-networking-rest.md)
- For firewall filter/NAT/mangle and rule ordering: see [Firewall REST reference](./references/routeros-firewall-rest.md)
- For Bun runtime bugs affecting HTTP (req.destroy, pool, secrets): see [Bun runtime gotchas](./references/bun-runtime-gotchas.md)
Related skills:
- For RouterOS scripting and
.rsc/CLI config automation gotchas: see therouteros-scriptingskill - For the /container subsystem (VETH, device-mode, lifecycle): see the
routeros-containerskill - For netinstall-cli and device flashing: see the
routeros-netinstallskill - For the /app YAML container format (7.22+): see the
routeros-app-yamlskill - For /console/inspect tree traversal and schema generation: see the
routeros-command-treeskill - For running CHR in QEMU (local or CI): see the
routeros-qemu-chrskill - For packet capture, /tool/sniffer, and TZSP streaming: see the
routeros-snifferskill
MCP tools:
- For command tree browsing and property lookups: use the
rosettaMCP server tools (routeros_search,routeros_get_page,routeros_command_tree)