zilalzihar/mikrotik-routeros-qa-dataset
MikroTik RouterOS Q&A Dataset The first public structured Q&A dataset for MikroTik RouterOS fine-tuning. 1,672 instruction/response pairs grounded in the official MikroTik Confluence documentation, covering 215 distinct documentation pages. Built to fine-tune zilalzihar/mikrotik-routeros-v01-GGUF, and released so others can train their own RouterOS-specialized models without re-doing the grounding work. Files File Records Purpose qa-pairs.jsonl 1,672… See the full description on the dataset page: https://huggingface.co/datasets/zilalzihar/mikrotik-routeros-qa-dataset.
MikroTik RouterOS Q&A Dataset
The first public structured Q&A dataset for MikroTik RouterOS fine-tuning. 1,672 instruction/response pairs grounded in the official MikroTik Confluence documentation, covering 215 distinct documentation pages.
Built to fine-tune `zilalzihar/mikrotik-routeros-v01-GGUF`, and released so others can train their own RouterOS-specialized models without re-doing the grounding work.
Files
Schema
Each record is a single JSON object on its own line (JSONL) with the following fields:
The schema is Alpaca-compatible (instruction / input / output), so it slots directly into most LoRA/SFT pipelines.
Statistics
Source
Official MikroTik RouterOS Help (Confluence). All 215 source pages are publicly available documentation.
Generation method
Q&A pairs were generated by Anthropic Claude Opus 4.7 running inside Claude Code, with each batch grounded in a specific source page. Each pair includes a source field so the grounding can be audited end-to-end. Coverage was driven page-by-page so the resulting dataset broadly reflects the structure of the official docs rather than skewing to popular topics.
A small fraction (93 of 1,672 ≈ 5.6%) are completion-style examples where the model is given a partial config snippet in the input field and asked to complete it. The remaining 1,579 are conversational Q&A.
Use cases
- Fine-tuning LLMs for MikroTik domain expertise (the original use case — see the companion model).
- Evaluation benchmarks for networking-focused LLMs.
- RAG augmentation — the
sourcefield makes it straightforward to link a generated answer back to a documentation page. - Pedagogical examples for anyone learning RouterOS.
Example records
Chat-style (most of the dataset):
{
"instruction": "I need to stress-test a link by hammering a host with a quick burst of pings — say 1000 packets to 10.155.114.1 — and get a summary of the results. What's the RouterOS command for that?",
"input": "",
"output": "Use the `/tool/flood-ping` command. It sends a burst of ICMP packets to the target and prints a summary at the end:\n\n```routeros\n[admin@MikroTik] > /tool/flood-ping address=10.155.114.1 count=1000\n sent: 1000\n received: 1000\n min-rtt: 0\n avg-rtt: 0\n max-rtt: 1\n```",
"source": "Flood-Ping_361168915.md"
}Completion-style (~5.6% of the dataset):
{
"instruction": "Complete this LoRa NetID filter so it allows only the TTN-owned NetID 000013 and blocks everything else, then applies both filters to the EU TTN server.",
"input": "/iot lora netid\nadd name=allow_TTN netids=000013-000013 type=whitelist",
"output": "add name=block_all netids=000000-ffffff type=blacklist\n/iot lora disable [find]\n/iot lora servers set netid=block_all,allow_TTN [find where address~\"eu1.cloud.thethings.network\"]\n/iot lora enable [find]",
"source": "General-Properties_16351619.md"
}Conceptual / behavioral Q&A:
{
"instruction": "When I disable the LCD with /lcd set enabled=no, do I lose anything besides the display going dark?",
"input": "",
"output": "Yes - statistics gathering stops and resets, and the LCD program closes. So it isn't just turning off the screen, it's also dropping the rolling stats buffers that the Stats and Interfaces screens use. If you only want the screen off but stats running, use the `backlight` function instead.",
"source": "LCD-Touchscreen_130220194.md"
}Loading
from datasets import load_dataset
ds = load_dataset("zilalzihar/mikrotik-routeros-qa-dataset", data_files={
"train": "train.jsonl",
"validation": "val.jsonl",
})
print(ds)Or for the full pooled corpus:
ds = load_dataset("zilalzihar/mikrotik-routeros-qa-dataset", data_files="qa-pairs.jsonl")Ethical notes
- All source material is publicly available official MikroTik documentation.
- This dataset is not affiliated with or endorsed by MikroTikls SIA. "MikroTik" and "RouterOS" are trademarks of their respective owner.
- Q&A pairs were machine-generated and grounded in source docs but may still contain errors. Always verify against the upstream documentation before relying on a configuration in production.
Citation
@misc{mikrotik_routeros_qa_2026,
title = {MikroTik RouterOS Q\&A Dataset},
author = {zilalzihar},
year = {2026},
howpublished = {\url{https://huggingface.co/datasets/zilalzihar/mikrotik-routeros-qa-dataset}},
note = {1{,}672 instruction/response pairs grounded in official MikroTik Confluence documentation.}
}