@tikoci/rosetta 0.9.1 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # rosetta
2
2
 
3
- MCP server that gives AI assistants searchable access to the complete [MikroTik RouterOS documentation](https://help.mikrotik.com/docs/spaces/ROS/overview) — 317 pages, 4,860 properties, 40,000-entry command tree, hardware specs for 144 products, 518 YouTube video transcripts, and direct links to help.mikrotik.com.
3
+ MCP server that gives AI assistants searchable access to MikroTik RouterOS documentation — 317 legacy Confluence-export pages, 4,860 properties, 40,000-entry command tree, hardware specs for 156 products, 538 YouTube video transcripts, and direct links to source docs. MikroTik's current help system is the Docusaurus site at <https://manual.mikrotik.com>; rosetta's prose-doc extraction still needs a major migration away from the retired Confluence export.
4
4
 
5
5
  If you need MikroTik docs, you likely have a MikroTik. Install rosetta once as a container on your router using [RouterOS /app](#install-on-mikrotik-app), and any AI assistant on the network can use it. Or [run it locally](#install-locally-with-bun) on your workstation. **No AI required** — rosetta includes a [terminal browser](#browse-without-ai) for searching the database directly.
6
6
 
@@ -12,22 +12,22 @@ Instead of vector embeddings, rosetta uses **SQLite [FTS5](https://www.sqlite.or
12
12
 
13
13
  | Data Source | Coverage |
14
14
  |-------------|----------|
15
- | Documentation pages | 317 pages (~515K words) from help.mikrotik.com |
15
+ | Documentation pages | 317 pages (~515K words) from the retired help.mikrotik.com Confluence export |
16
16
  | Property definitions | 4,860 with types, defaults, descriptions |
17
17
  | Command tree | 5,114 commands, 551 dirs, 34K arguments |
18
18
  | Version history | 46 RouterOS versions tracked (7.9–7.23beta2) |
19
- | Hardware products | 144 devices — specs, pricing, block diagrams |
19
+ | Hardware products | 156 devices — specs, pricing, block diagrams |
20
20
  | Performance benchmarks | 2,874 tests across 125 devices (ethernet + IPSec) |
21
- | YouTube transcripts | 518 videos, ~1,890 chapter-level segments |
21
+ | YouTube transcripts | 538 videos, ~1,870 transcript segments |
22
22
  | Callout blocks | 1,034 warnings, notes, and tips |
23
23
 
24
- Documentation covers RouterOS **v7 only**, aligned with the long-term release (~7.22) at export time.
24
+ Documentation covers RouterOS **v7 only**, aligned with the long-term release (~7.22) at the March 2026 Confluence-export time. Future official doc updates are expected on <https://manual.mikrotik.com>, including a Docusaurus CLI Reference generated from `/console/inspect` data.
25
25
 
26
26
  ---
27
27
 
28
28
  ## Install on MikroTik (/app)
29
29
 
30
- RouterOS 7.22+ includes the [/app](https://help.mikrotik.com/docs/spaces/ROS/pages/328068) feature for running containers directly on the router. This is the simplest way to deploy rosetta — install once, and any AI assistant on your network can connect to the MCP endpoint URL shown in the router UI.
30
+ RouterOS 7.22+ includes the [/app](https://manual.mikrotik.com/docs/CLI%20Reference/container/app) feature for running containers directly on the router. This is the simplest way to deploy rosetta — install once, and any AI assistant on your network can connect to the MCP endpoint URL shown in the router UI.
31
31
 
32
32
  **Requirements:** RouterOS 7.22+, x86 or ARM64 architecture (CCR, RB5009, hAP ax series, CHR, etc.), container package installed, device-mode enabled.
33
33
 
@@ -49,7 +49,7 @@ After reboot:
49
49
  /system/device-mode/update mode=advanced container=yes
50
50
  ```
51
51
 
52
- See MikroTik's [Container documentation](https://help.mikrotik.com/docs/spaces/ROS/pages/Container) for full prerequisites and troubleshooting.
52
+ See MikroTik's [Container documentation](https://manual.mikrotik.com/docs/Extended%20features/Container/) for full prerequisites and troubleshooting.
53
53
 
54
54
  ### 2. Add the rosetta app
55
55
 
@@ -0,0 +1,157 @@
1
+ "Product name","Product code",Architecture,CPU,"CPU core count","CPU nominal frequency","License level","Operating system","Size of RAM","Storage size",Dimensions,"PoE in","PoE out","PoE out ports","PoE in input Voltage","Number of DC inputs","DC jack input Voltage","Max power consumption","Wireless 2.4 GHz number of chains","Antenna gain dBi for 2.4 GHz","Wireless 5 GHz number of chains","Antenna gain dBi for 5 GHz","10/100 Ethernet ports","10/100/1000 Ethernet ports","Number of 2.5G Ethernet ports","Number of USB ports","Ethernet Combo ports","SFP ports","SFP+ ports","Number of 1G/2.5G/5G/10G Ethernet ports","Number of SIM slots","Memory cards","USB slot type","MSRP (USD)"
2
+ "ATL 5G R16",ATLGM&RG520F-EU,"ARM 64bit",88F3720,2,"800 MHz",3,"RouterOS v7","512 MB","32 MB",,802.3af/at,,,"12-56 V",1,,"10 W",,,,,,1,,,,,,,1,,,349.00
3
+ "ATL LTE18 kit",ATLGM&EG18-EA,"ARM 64bit",88F3720,2,"800 MHz",3,"RouterOS v7","256 MB","16 MB",,802.3af/at,,,"12-57 V",1,,"8 W",,,,,,1,,,,,,,1,,,279.00
4
+ "BaseBox 5",RB912UAG-5HPnD-OUT,MIPSBE,AR9342,1,"600 MHz",4,RouterOS,"64 MB","128 MB",246x135x50mm,"Passive PoE",,,"8-30 V",1,,"12 W",,,2,,,1,,1,,,,,1,,"USB type A",89.00
5
+ cAP,RBcAP2nD,MIPSBE,QCA9533,1,"650 MHz",4,RouterOS,"64 MB","16 MB","185mm diameter, 31mm height",802.3af/at,,,"11-57 V",1,,"4 W",2,2,,,1,,,,,,,,,,,49.95
6
+ "cAP ac",RBcAPGi-5acD2nD,"ARM 32bit",IPQ-4018,4,"488-896 (auto) MHz",4,RouterOS,"128 MB","16 MB","Round case: ⌀ 136 mm, height: 30 mm; Square case: 145 mm x 145 mm x 30 mm",802.3af/at,"Passive PoE up to 57V",Ether2,"17-57 V",1,,"24 W",2,2,2,2.5,,2,,,,,,,,,,85.00
7
+ "cAP ax",cAPGi-5HaxD2HaxD,"ARM 64bit",IPQ-6010,4,"auto (864 - 1800) MHz",4,"RouterOS v7","1 GB","128 MB",,802.3af/at,"Passive PoE up to 57V",Ether2,"18-57 V",2,"18-57 V","36 W",2,6,2,5.5,,2,,,,,,,,,,129.00
8
+ "cAP lite",RBcAPL-2nD,MIPSBE,QCA9533,1,"650 MHz",4,RouterOS,"64 MB","16 MB","Wall case: 88 x 52 x 20 mm Ceiling case: ⌀88 mm x 20 mm",802.3af/at,,,"10-60 V",2,,"4 W",2,1.5,,,1,,,,,,,,,,,29.00
9
+ "cAP LTE12 ax",cAPGi-5HaxD2HaxD&EG12-EA,"ARM 64bit",IPQ-6010,4,"auto (864 - 1800) MHz",4,"RouterOS v7","1 GB","128 MB",,802.3af/at,"Passive PoE up to 57V",Ether2,"18-57 V",2,"18-57 V","34 W",2,6,2,5.5,,2,,,,,,,1,,,229.00
10
+ "cAP XL ac",RBcAPGi-5acD2nD-XLr4,"ARM 32bit",IPQ-4018,4,"488-896 (auto) MHz",4,RouterOS,"128 MB","16 MB","191 x 42 mm",802.3af/at,"Passive PoE up to 57V",Ether2,"18-57 V",1,,"24 W",2,6,2,5.5,,2,,,,,,,,,,99.00
11
+ CCR2004-1G-2XS-PCIe,CCR2004-1G-2XS-PCIe,"ARM 64bit",AL52400,4,"1500 MHz",6,"RouterOS v7","4 GB","128 MB","170 x 69 x 18 mm",,,,,,,"29 W",,,,,,1,,,,,,,,,,199.00
12
+ CCR2004-1G-12S+2XS,CCR2004-1G-12S+2XS,"ARM 64bit",AL32400,4,"1700 MHz",6,"RouterOS v7","4 GB","128 MB","443 x 224 x 44 mm",,,,,,,"60 W",,,,,,1,,,,,12,,,,,595.00
13
+ CCR2004-16G-2S+,CCR2004-16G-2S+r2,"ARM 64bit",AL32400,4,"1700 MHz",6,"RouterOS v7","4 GB","128 MB","443 x 210 x 44 mm",,,,,,,"48 W",,,,,,16,,1,,,2,,,,,465.00
14
+ CCR2004-16G-2S+PC,CCR2004-16G-2S+PC,"ARM 64bit",AL32400,4,"1200 MHz",6,"RouterOS v7","4 GB","128 MB","272 x 195 x 44 mm",,,,,2,"36-57 V","36 W",,,,,,16,,1,,,2,,,,,465.00
15
+ CCR2116-12G-4S+,CCR2116-12G-4S+,"ARM 64bit",AL73400,16,"2000 MHz",6,"RouterOS v7","16 GB","128 MB","443 x 199 x 44 mm",,,,,,,"83 W",,,,,,13,,,,,4,,,,,995.00
16
+ CCR2216-1G-12XS-2XQ,CCR2216-1G-12XS-2XQ,"ARM 64bit",AL73400,16,"2000 MHz",6,"RouterOS v7","16 GB","128 MB","443 x 367 x 44 mm",,,,,,,"128 W",,,,,,1,,,,,,,,,,2795.00
17
+ "Chateau 5G R17 ax",S53UG+5HaxD2HaxD-TC&RG650E-EU,"ARM 64bit",IPQ-6010,4,"864-1800 MHz",4,"RouterOS v7","1 GB","128 MB",,,,,,1,"12-28 V","27 W",2,3,2,6,,4,1,1,,,,,1,,"USB type A",349.00
18
+ "Chateau LTE6-US",D53G-5HacD2HnD-TC&EG06-A,"ARM 32bit",IPQ-4019,4,"488-896 (auto) MHz",4,"RouterOS v7","256 MB","16 MB","240 x 156 x 44 mm",,,,,1,"12-28 V","19 W",2,3,2,5.5,,5,,1,,,,,1,,"USB type A",189.00
19
+ "Chateau LTE7",D53G-5HacD2HnD-TC&R11e-LTE7,"ARM 32bit",IPQ-4019,4,"448-896 (auto) MHz",4,"RouterOS v7","256 MB","16 MB",,,,,,1,"12-28 V","20 W",2,2,2,4,,5,,1,,,,,1,,"USB type A",119.00
20
+ "Chateau LTE7 ax",S53UG+5HaxD2HaxD-TC&R11e-LTE7,"ARM 64bit",IPQ-6010,4,"auto MHz",4,"RouterOS v7","1 GB","128 MB",,,,,,1,"12-28 V","21.5 W",2,3,2,6,,4,1,1,,,,,1,,"USB type A",169.00
21
+ "Chateau LTE12 (2025)",D53G-5HacD2HnD-TC&EG120K-EA,"ARM 32bit",IPQ-4019,4,"448-896 (auto) MHz",4,"RouterOS v7","256 MB","32 MB",,,,,,1,"12-28 V","24 W",2,2,2,4,,5,,1,,,,,1,,"USB type A",179.00
22
+ "Chateau LTE18 ax",S53UG+5HaxD2HaxD-TC&EG18-EA,"ARM 64bit",IPQ-6010,4,"auto (864 -1800) MHz",4,"RouterOS v7","1 GB","128 MB","240 x 156 x 44 mm",,,,,1,"12-28 V","19 W",2,3,2,6,,4,1,1,,,,,1,,"USB type A",299.00
23
+ "Chateau PRO ax",H53UiG-5HaxQ2HaxQ,"ARM 64bit",IPQ-8072A,4,"2208 MHz",6,"RouterOS v7","1 GB","128 MB",,,"Passive PoE up to 57V",Ether5,,1,"18-57 V","55 W (Networked standby (HiNA) ≤ 8 W)",4,5,4,6,,5,,1,,,,,,,"USB 3.0 type A",199.00
24
+ "CME Gateway",CME22-2n-BG77,MIPSBE,QCA9531,1,"650 MHz",4,"RouterOS v7","64 MB","16 MB",,802.3af/at,"Passive PoE up to 57V",Ether2,"18-57 V",2,,"31 W",1,2,,,2,,,,,,,,1,,,89.00
25
+ CRS106-1C-5S,CRS106-1C-5S,MIPSBE,QCA8511,1,"400 MHz",5,RouterOS,"128 MB","16 MB","114 x 137 x 29mm","Passive PoE",,,"11-30 V",2,"11-30 V","11 W",,,,,,,,,1,5,,,,,,59.00
26
+ CRS112-8P-4S-IN,CRS112-8P-4S-IN,MIPSBE,QCA8511,1,"400 MHz",5,RouterOS,"128 MB","16 MB","200 x 142 x 44 mm",,802.3af/at,Ether1-Ether8,,2,"18-28 V / 48-57 V","160 W",,,,,,8,,,,4,,,,,,209.00
27
+ CRS304-4XG-IN,CRS304-4XG-IN,"ARM 64bit",98DX2528,2,"1200 MHz",5,"RouterOS v7","512 MB","32 MB",,802.3af/at,,,"36-57 V",4,"12-57 V / 12-57 V","21 W",,,,,,1,,,,,,4,,,,199.00
28
+ CRS305-1G-4S+IN,CRS305-1G-4S+IN,"ARM 32bit",98DX3236,2,"800 MHz",5,"RouterOS / SwitchOS","512 MB","16 MB","141 x 115 x 28 mm",802.3af/at,,,"12-57 V",3,"12-57 V","18 W",,,,,,1,,,,,4,,,,,149.00
29
+ CRS309-1G-8S+IN,CRS309-1G-8S+IN,"ARM 32bit",98DX8208,2,"800 MHz",5,"RouterOS / SwitchOS","512 MB","16 MB","272 x 191 x 44 mm",802.3af/at,,,"18-57 V",2,"12-57 V","23 W",,,,,,1,,,,,8,,,,,269.00
30
+ CRS310-1G-5S-4S+IN,CRS310-1G-5S-4S+IN,"ARM 32bit",98DX226S,2,"800 MHz",5,"RouterOS v7 / SwitchOS","256 MB","16 MB","200 x 166 x 44 mm",802.3af/at,,,"18-57 V",2,"18-57 V","20 W",,,,,,1,,,,5,4,,,,,199.00
31
+ CRS310-8G+2S+IN,CRS310-8G+2S+IN,"ARM 32bit",98DX226S,2,"800 MHz",5,"RouterOS v7 / SwitchOS","256 MB","32 MB","200 x 206,1 x 44",,,,,1,"18-57 V","34 W",,,,,,,8,1,,,2,,,,"USB type A",219.00
32
+ CRS312-4C+8XG-RM,CRS312-4C+8XG-RM,MIPSBE,QCA9531,1,"650 MHz",5,"RouterOS v7 / SwitchOS","64 MB","16 MB","443 x 183 x 44 mm",,,,,,,"60 W",,,,,1,,,1,,,,8,,,"USB type A",699.00
33
+ CRS317-1G-16S+RM,CRS317-1G-16S+RM,"ARM 32bit",98DX8216,2,"800 MHz",6,"RouterOS / SwitchOS","1 GB","16 MB","443 x 224 x 44 mm",,,,,,,"44 W",,,,,,1,,,,,16,,,,,499.00
34
+ CRS320-8P-8B-4S+RM,CRS320-8P-8B-4S+RM,"ARM 32bit",98DX226S,2,"800 MHz",5,"RouterOS v7 / SwitchOS","256 MB","32 MB",,,802.3af/at/bt,"Ether1-Ether8 (af/at), Ether9-Ether16 (bt)",,,,"600W (1150W with additional PSU)",,,,,,17,,,,,4,,,,,489.00
35
+ CRS326-4C+20G+2Q+RM,CRS326-4C+20G+2Q+RM,MIPSBE,QCA9531,1,"650 MHz",6,"RouterOS v7","128 MB","32 MB",,,,,,,,"70 W",,,,,1,,20,,,,,,,,,999.00
36
+ CRS326-24G-2S+IN,CRS326-24G-2S+INr2,"ARM 32bit",98DX3236,2,"800 MHz",5,"RouterOS / SwitchOS","512 MB","16 MB","285 x 144 x 44 mm","Passive PoE",,,"10-30 V",2,"10-30 V","21 W",,,,,,24,,,,,2,,,,,199.00
37
+ CRS326-24G-2S+RM,CRS326-24G-2S+RM,"ARM 32bit",98DX3236,2,"800 MHz",5,"RouterOS / SwitchOS","512 MB","16 MB","443 x 144 x 44 mm","Passive PoE",,,"10-30 V",2,"10-30 V","24 W",,,,,,24,,,,,2,,,,,209.00
38
+ CRS326-24S+2Q+RM,CRS326-24S+2Q+RM,MIPSBE,QCA9531,1,"650 MHz",5,"RouterOS v7 / SwitchOS","128 MB","32 MB","443 x 200 x 44 mm",,,,,,,"69 W",,,,,1,,,1,,,24,,,,"USB type A",599.00
39
+ CRS328-4C-20S-4S+RM,CRS328-4C-20S-4S+RM,"ARM 32bit",98DX3236,2,"800 MHz",5,"RouterOS / SwitchOS","512 MB","16 MB","443 x 194 x 44 mm",,,,,,,"43 W",,,,,,,,,4,20,4,,,,,449.00
40
+ CRS328-24P-4S+RM,CRS328-24P-4S+RM,"ARM 32bit",98DX3236,1,"800 MHz",5,"RouterOS / SwitchOS","512 MB","16 MB","443 x 300 x 44 mm",,802.3af/at,Ether1-Ether24,,,,"494 W",,,,,,24,,,,,4,,,,,489.00
41
+ CRS354-48G-4S+2Q+RM,CRS354-48G-4S+2Q+RM,MIPSBE,QCA9531,1,"650 MHz",5,"RouterOS v7 / SwitchOS","128 MB","32 MB","297 x 443 x 44 mm",,,,,,,"60 W",,,,,1,48,,,,,4,,,,,599.00
42
+ CRS354-48P-4S+2Q+RM,CRS354-48P-4S+2Q+RM,MIPSBE,QCA9531,1,"650 MHz",5,"RouterOS v7 / SwitchOS","128 MB","32 MB","443 x 382 x 44 mm",,802.3af/at,Ether1-Ether48,,,,"800 W",,,,,1,48,,,,,4,,,,,999.00
43
+ CRS418-8P-8G-2S+5axQ2axQ-RM,CRS418-8P-8G-2S+5axQ2axQ-RM,"ARM 64bit",IPQ-8072A,4,"2208 MHz",5,"RouterOS v7","1 GB","128 MB",,,802.3af/at,Ether9-Ether16,,,,"227 W",4,5,4,6,,17,,1,,,2,,,,"USB 3.0 type A",499.00
44
+ CRS418-8P-8G-2S+RM,CRS418-8P-8G-2S+RM,"ARM 64bit",IPQ-8072,4,"2208 MHz",5,"RouterOS v7","1 GB","128 MB",,,802.3af/at,"Ether9 - Ether16",,,,"215 W",,,,,,17,,1,,,2,,,,"USB 3.0 type A",449.00
45
+ CRS504-4XQ-IN,CRS504-4XQ-IN,MIPSBE,QCA9531,1,"650 MHz",5,"RouterOS v7","64 MB","16 MB","320 x 185 x 44 mm","802.3 bt",,,"43-57 V",3,"36-57 V","41 W",,,,,1,,,,,,,,,,,799.00
46
+ CRS504-4XQ-OUT,CRS504-4XQ-OUT,MIPSBE,QCA9531,1,"650 MHz",5,"RouterOS v7","128 MB","32 MB",,"802.3 bt",,,"43-57 V",3,"36-57 V","44 W",,,,,1,,,,,,,,,,,899.00
47
+ CRS510-8XS-2XQ-IN,CRS510-8XS-2XQ-IN,MIPSBE,QCA9531,1,"650 MHz",5,"RouterOS v7","128 MB","32 MB",,"802.3 bt",,,"42.5-57 V",3,"36-57 V","45 W",,,,,1,,,,,,,,,,,999.00
48
+ CRS518-16XS-2XQ-RM,CRS518-16XS-2XQ-RM,MIPSBE,QCA9531,1,"650 MHz",6,"RouterOS v7","64 MB","16 MB",,,,,,,,"95 W",,,,,1,,,1,,,,,,,"USB type A",1595.00
49
+ CRS520-4XS-16XQ-RM,CRS520-4XS-16XQ-RM,"ARM 64bit",AL52400,4,"2 GHz",5,"RouterOS v7","4 GB","128 MB",,,,,,,,"150 W (220 W with both PSUs)",,,,,,,,,,,,"2 (supported: 10M/100M/1G/10G)",,,,2195.00
50
+ "CRS804 DDQ",CRS804-4DDQ-hRM,"ARM 64bit",AL52400,4,"2000 MHz",6,"RouterOS v7","4 GB","512 MB",,,,,,,,"123 W",,,,,,,,,,,,"2 (supported: 10M/100M/1G/10G)",,,,1295.00
51
+ "CRS812 DDQ",CRS812-8DS-2DQ-2DDQ-RM,"ARM 64bit",AL52400,4,"2000 MHz",6,"RouterOS v7","4 GB","512 MB",,,,,,,,"134 W",,,,,,,,,,,,"2 (supported: 10M/100M/1G/10G)",,,,1295.00
52
+ CSS318-16G-2S+IN,CSS318-16G-2S+IN,,,,,,SwOS,,"16 MB",,,,,,,,"13 W",,,,,,16,,,,,2,,,,,139.00
53
+ CSS326-24G-2S+RM,CSS326-24G-2S+RM,,,,,,SwOS,,"2 MB","443 x 144 x 44 mm","Passive PoE",,,"10-30 V",2,"10-30 V","19 W",,,,,,24,,,,,2,,,,,159.00
54
+ CSS610-8G-2S+IN,CSS610-8G-2S+IN,,,,,,"SwitchOS Lite",,"64 KB","200 x 164 x 44 mm","Passive PoE",,,"12-57 V",2,"12-57 V","11 W",,,,,,8,,,,,2,,,,,119.00
55
+ CSS610-8P-2S+IN,CSS610-8P-2S+IN,,,,,,"SwitchOS Lite",,"64 KB",272x208x44mm,,802.3af/at,Ether1-Ether8,,1,"48-57 V","162 W",,,,,,8,,,,,2,,,,,229.00
56
+ "Cube 60Pro ac",CubeG-5ac60ay,"ARM 32bit",IPQ-4019,4,"448-896 (auto) MHz",4,RouterOS,"256 MB","64 MB","115 x 95 x 82 mm",802.3af/at,,,"18-48 V",1,,"10 W",,,1,11.5,,1,,,,,,,,,,149.00
57
+ "CubeSA 60Pro ac",CubeG-5ac60ay-SA,"ARM 32bit",IPQ-4019,4,"448-896 (auto) MHz",4,RouterOS,"256 MB","64 MB","115 x 211 x 90 mm",802.3af/at,,,"18-48 V",1,,"13 W",,,1,11.5,,1,,,,,,,,,,199.00
58
+ "FiberBox Plus",CRS305-1G-4S+OUTr2,"ARM 32bit",98DX226S,2,"800 MHz",5,"RouterOS v7 / SwOS","256 MB","16 MB",,802.3af/at,,,"42-57 V",3,"24-57 V","17 W",,,,,,1,,,,,4,,,,,229.00
59
+ FTC11XG,FTC11XG,,,,,,"SwitchOS Lite",,"64 KB",,"802.3 bt",,,"43-57 V",2,"18-57 V","10 W",,,,,,1,,,,,1,1,,,,139.00
60
+ FTC21-ups,FTC21-ups,,,,,,,,,,802.3af/at,"Passive PoE up to 57V",Ether2,"48-57 V",2,"24-57 V","28 W",,,,,,2,,,,"1 (2.5G supported)",,,,,,99.00
61
+ GPEN21,GPEN21,,,,,,"SwitchOS Lite",,,,802.3af/at,"Passive PoE up to 57V",Ether2,"12-57 V",2,"12-57 V","30 W",,,,,,2,,,,1,,,,,,40.00
62
+ GPERx6,CSS606-1G-2Gi-3S+OUT,,,,,,SwOS,,,,"802.3 bt","Passive PoE up to 57V",Ether2-Ether3,"42-57 V",2,"12-57 V","160 W",,,,,,3,,,,,3,,,,,139.00
63
+ "Groove 52",RBGroove52HPnr2,MIPSBE,AR9342,1,"600 MHz",3,RouterOS,"64 MB","16 MB","180x49x44mm, 193g","Passive PoE",,,"9-30 V",1,,"6 W",1,,1,,1,,,,,,,,,,,59.00
64
+ "GrooveA 52",RBGrooveA-52HPnr2,MIPSBE,AR9342,1,"600 MHz",4,RouterOS,"64 MB","16 MB","177x44x44mm, 193g","Passive PoE",,,"9-30 V",1,,"6 W",1,6,1,6,1,,,,,,,,,,,79.00
65
+ "GrooveA 52 ac",RBGrooveGA-52HPacn,MIPSBE,QCA9556,1,"720 MHz",4,RouterOS,"64 MB","16 MB","177 x 44 x 44 mm","Passive PoE",,,"10-30 V",1,,"5 W",1,6,1,6,,1,,,,,,,,,,99.00
66
+ hAP,RB951Ui-2nD,MIPSBE,QCA9531,1,"650 MHz",4,RouterOS,"64 MB","16 MB","113 x 89 x 28mm","Passive PoE","Passive PoE",Ether5,"10-28 V",2,"10-28 V","5 W",2,1.5,,,5,,,1,,,,,,,"USB type A",45.00
67
+ "hAP ac",RB962UiGS-5HacT2HnT,MIPSBE,QCA9558,1,"720 MHz",4,"RouterOS v7","128 MB","16 MB","114 x 137 x 29mm","Passive PoE","Passive PoE",Ether5,"11-57 V",2,"11-57 V","17 W",3,2.5,3,2,,5,,1,,1,,,,,"USB type A",129.00
68
+ "hAP ac lite",RB952Ui-5ac2nD,MIPSBE,QCA9531,1,"650 MHz",4,RouterOS,"64 MB","16 MB","113 x 89 x 28mm","Passive PoE","Passive PoE",Ether5,"10-28 V",2,"10-28 V","20 W",2,1.5,1,2,5,,,1,,,,,,,"USB type A",59.00
69
+ "hAP ac lite TC",RB952Ui-5ac2nD-TC,MIPSBE,QCA9531,1,"650 MHz",4,RouterOS,"64 MB","16 MB","34 x 119 x 98mm","Passive PoE","Passive PoE",Ether5,"10-28 V",2,"10-28 V","20 W",2,1.5,1,2,5,,,1,,,,,,,"USB type A",59.00
70
+ "hAP ac²",RBD52G-5HacD2HnD-TCr2,"ARM 32bit",IPQ-4018,4,"488-896 (auto) MHz",4,RouterOS,"128 MB","16 MB","34 x 119 x 98mm","Passive PoE",,,"18-28 V",2,"12-30 V","21 W",2,2.5,2,2.5,,5,,1,,,,,,,"USB type A",79.00
71
+ "hAP ac³",RBD53iG-5HacD2HnD,"ARM 32bit",IPQ-4019,4,"448-896 (auto) MHz",4,RouterOS,"256 MB","128 MB","251 x 129 x 39 mm","Passive PoE","Passive PoE",Ether5,"18-28 V",2,"12-28 V","30 W",2,3,2,5.5,,5,,1,,,,,,,"USB type A",109.00
72
+ "hAP ax lite",L41G-2axD,"ARM 32bit",IPQ-5010,2,"800 MHz",4,"RouterOS v7","256 MB","128 MB",,,,,,"1 (USB-C)",,"8 W",2,4.3,,,,4,,,,,,,,,,59.00
73
+ "hAP ax S",E62iUGS-2axD5axT,"ARM 32bit",EN7562CT,2,"950 MHz",4,"RouterOS v7","512 MB","128 MB",,"Passive PoE","Passive PoE",Ether5,"18-28 V",2,"12-28 V","34 W",2,5.5,3,6.5,,5,,1,,"1 (2.5G supported)",,,,,"USB type A",79.00
74
+ "hAP ax²",C52iG-5HaxD2HaxD-TC,"ARM 64bit",IPQ-6010,4,"864 MHz",4,"RouterOS v7","1 GB","128 MB",,"Passive PoE","Passive PoE","Ether 1","18-28 V",2,"12-28 V","27 W",2,4,2,4.5,,5,,,,,,,,,,99.00
75
+ "hAP ax³",C53UiG+5HPaxD2HPaxD,"ARM 64bit",IPQ-6010,4,"auto (864 - 1800) MHz",6,"RouterOS v7","1 GB","128 MB",,"Passive PoE","Passive PoE","Ether 1","18-28 V",2,"12-28 V","38 W",2,3.3,2,5.5,,4,1,1,,,,,,,"USB 3.0 type A",139.00
76
+ "hAP be lite",A42G-HbeP,"ARM 32bit",AN7563PT,2,"950 MHz",4,"RouterOS v7","512 MB","128 MB",,,,,,1,,"12 W",2,4.4,3,7,,3,1,,,,,,,,,79.00
77
+ "hAP be³ Media",MA53UG+HbeH,"ARM 64bit",IPQ-5322,4,"Up to 1.5 GHz (auto)",6,"RouterOS v7","2 GB","512 MB",,802.3af/at,,,"24-57 V",2,"24-57 V","29 W",2,4,2,7.5,,,5,3,,,,,,,"USB 3.0 type A",179.00
78
+ "hAP lite",RB941-2nD,SMIPS,QCA9533,1,"650 MHz",4,RouterOS,"32 MB","16 MB",,,,,,1,,"3.5 W",2,1.5,,,4,,,,,,,,,,,24.95
79
+ "hAP lite TC",RB941-2nD-TC,SMIPS,QCA9533,1,"650 MHz",4,RouterOS,"32 MB","16 MB",,,,,,1,,"3.5 W",2,1.5,,,4,,,,,,,,,,,24.95
80
+ hEX,RB750Gr3,MMIPS,MT7621A,2,"880 MHz",4,RouterOS,"256 MB","16 MB",113x89x28mm,"Passive PoE",,,"8-30 V",2,"8-30 V","10 W",,,,,,5,,1,,,,,,1,"USB type A",59.95
81
+ "hEX lite",RB750r2,MIPSBE,QCA9533,1,"850 MHz",4,RouterOS,"64 MB","16 MB","113x89x28mm. Weight without packaging and cables: 129g","Passive PoE",,,"6-30 V",2,"6-30 V","2 W",,,,,5,,,,,,,,,,,39.95
82
+ "hEX PoE",RB960PGS,MIPSBE,QCA9557,1,"800 MHz",4,RouterOS,"128 MB","16 MB",,"Passive PoE",802.3af/at,Ether2-Ether5,"12-57 V",2,"12-57 V","54 W",,,,,,5,,1,,1,,,,,"USB type A",89.00
83
+ "hEX PoE lite",RB750UPr2,MIPSBE,QCA9531,1,"650 MHz",4,RouterOS,"64 MB","16 MB",113x89x28mm,"Passive PoE","Passive PoE",Ether2-Ether5,"8-30 V",2,"8-30 V","51 W",,,,,5,,,1,,,,,,,"USB type A",59.95
84
+ "hEX refresh",E50UG,"ARM 32bit",EN7562CT,2,"950 MHz",4,"RouterOS v7","512 MB","128 MB",113x89x28mm,"Passive PoE",,,"12-28 V",2,"12-28 V","10 W",,,,,,5,,1,,,,,,,"USB type A",59.95
85
+ "hEX S",RB760iGS,MMIPS,MT7621A,2,"880 MHz",4,RouterOS,"256 MB","16 MB","113 x 89 x 28 mm",802.3af/at,"Passive PoE up to 57V",Ether5,"12-57 V",2,"12-57 V","24 W",,,,,,5,,1,,1,,,,1,"USB type A",79.00
86
+ "hEX S (2025)",E60iUGS,"ARM 32bit",EN7562CT,2,"950 MHz",4,"RouterOS v7","512 MB","128 MB",,802.3af/at,"Passive PoE up to 57V",Ether5,"18-57 V",2,"12-57 V","23 W",,,,,,5,,1,,"1 (2.5G supported)",,,,,"USB 3.0 type A",69.00
87
+ KNOT,RB924i-2nD-BT5&BG77r2,MIPSBE,QCA9531,1,"650 MHz",4,"RouterOS v7","64 MB","128 MB","122 x 87 x 26 mm",802.3af/at,"Passive PoE up to 57V",Ether2,"18-57 V",3,"12-57 V","18 W",2,1.5,,,2,,,1,,,,,1,,"microUSB type AB",99.00
88
+ "KNOT Embedded LTE4",EC25-EU&KNe,"ARM 32bit","CPU ARM 32-bit Cortex A7",1,"800 MHz",3,"RouterOS v7","256 MB","512 MB",,802.3af/at,,,"12-57 V",2,,"7 W",,,,,,1,,,,,,,1,,,79.00
89
+ "KNOT Embedded LTE4 Global",EG25-G&KNe,"ARM 32bit","Cortex A7",1,"800 MHz",3,"RouterOS v7","256 MB","256 MB",,802.3af/at,,,"12-57 V",2,,"6 W",,,,,,1,,,,,,,1,,,89.00
90
+ "KNOT LR8G kit",RB924iR-2nD-BT5&BG770A&R11e-LR8G,MIPSBE,QCA9531,1,"650 MHz",4,"RouterOS v7","64 MB","128 MB",,802.3af/at,"Passive PoE",Ether2,"18-57 V",3,"12-57 V","23 W",2,1.5,,,2,,,1,,,,,1,,"microUSB type AB",179.00
91
+ "KNOT LR9G kit",RB924iR-2nD-BT5&BG770A&R11e-LR9G,MIPSBE,QCA9531,1,"650 MHz",4,"RouterOS v7","64 MB","128 MB",,802.3af/at,802.3af,Ether2,"18-57 V",3,"12-57 V","23 W",2,1.5,,,2,,,1,,,,,1,,"microUSB type AB",179.00
92
+ L009UiGS-2HaxD-IN,L009UiGS-2HaxD-IN,"ARM 32bit",IPQ-5018,2,"800 MHz",5,"RouterOS v7","512 MB","128 MB",,802.3af/at,"Passive PoE",Ether8,"24-56 V",2,"24-56 V","47 W",2,4,,,,8,,1,,"1 (2.5G supported)",,,,,"USB 3.0 type A",129.00
93
+ L009UiGS-RM,L009UiGS-RM,"ARM 32bit",IPQ-5018,2,"800 MHz",5,"RouterOS v7","512 MB","128 MB",,802.3af/at,"Passive PoE",Ether8,"24-56 V",2,"24-56 V","40 W",,,,,,8,,1,,"1 (2.5G supported)",,,,,"USB 3.0 type A",119.00
94
+ L11UG-5HaxD,L11UG-5HaxD,"ARM 32bit",IPQ-5010,2,"800 MHz",4,"RouterOS v7","256 MB","128 MB",,"Passive PoE",,,"18-28 V",2,"12-28 V","15 W",,,2,,,1,,1,,,,,,,"USB type A",79.00
95
+ L23UGSR-5HaxD2HaxD,L23UGSR-5HaxD2HaxD,"ARM 32bit",IPQ-5010,2,"800 MHz",4,"RouterOS v7","256 MB","128 MB",,"Passive PoE",,,"18-28 V",2,"12-28 V","25 W",2,,2,,,1,,1,,"1 (2.5G supported)",,,1,,"USB type A",99.00
96
+ "LAMP 5G R16",LAMPGM&RG520F-EU,"ARM 64bit",88F3720,2,"800 MHz",3,"RouterOS v7","512 MB","32 MB",,802.3af/at,,,"12-56 V",1,,"10 W",,,,,,1,,,,,,,1,,,349.00
97
+ "LDF 5",RBLDF-5nD,MIPSBE,AR9344,1,"600 MHz",3,RouterOS,"64 MB","16 MB",84x84x115mm,"Passive PoE",,,"10-30 V",1,,"6 W",,,2,9,1,,,,,,,,,,,49.00
98
+ "LHG 5",RBLHG-5nD,MIPSBE,AR9344,1,"600 MHz",3,RouterOS,"64 MB","16 MB","Ø 391 x 222 mm; package 450 x 450 x 145 mm","Passive PoE",,,"11-30 V",1,,"6 W",,,2,24.5,1,,,,,,,,,,,69.00
99
+ "LHG 5 ax",LHG-5axD,"ARM 32bit",IPQ-5010,2,"800 MHz",3,"RouterOS v7","256 MB","128 MB",,"Passive PoE",,,"12-28 V",1,,"5 W",,,2,24.5,,1,,,,,,,,,,99.00
100
+ "LHGG LTE7 kit",LHGGR&R11e-LTE7,"ARM 64bit",88F3720,2,"800 MHz",3,"RouterOS v7","256 MB","16 MB",,802.3af/at,,,"12-57 V",1,,"8 W",,,,,,1,,,,,,,1,,,169.00
101
+ "LHG LTE18 kit",LHGGM&EG18-EA,"ARM 64bit",88F3720,2,"800 MHz",3,"RouterOS v7","256 MB","16 MB",,802.3af/at,,,"12-57 V",1,,"8 W",,,,,,1,,,,,,,1,,,279.00
102
+ "LHG XL 5 ac",RBLHGG-5acD-XL,"ARM 32bit",IPQ-4018,4,"488-896 (auto) MHz",3,RouterOS,"256 MB","16 MB","Ø 550 x 245 mm;","Passive PoE",,,"10-30 V",1,,"8 W",,,2,27,,1,,,,,,,,,,117.00
103
+ "LHG XL 5 ax",LHG-5axD-XL,"ARM 32bit",IPQ-5010,2,"800 MHz",3,"RouterOS v7","256 MB","128 MB",,"Passive PoE",,,"12-28 V",1,,"5 W",,,2,27,,1,,,,,,,,,,119.00
104
+ "LHG XL HP5",RBLHG-5HPnD-XL,MIPSBE,AR9344,1,"600 MHz",3,RouterOS,"64 MB","16 MB","Ø 550 x 245 mm;","Passive PoE",,,"10-28 V",1,,"7 W",,,2,27,1,,,,,,,,,,,89.00
105
+ "LtAP LTE7 kit",LtAP-2HnD&R11e-LTE7r2,MMIPS,MT7621AT,2,"880 MHz",4,"RouterOS v7","128 MB","16 MB",,"Passive PoE",,,"12-30 V",3,"12-30 V","24 W",2,2.5,,,,1,,1,,,,,3,,"USB type A",169.00
106
+ "LtAP mini",RB912R-2nD-LTm,MIPSBE,QCA9531,1,"650 MHz",4,RouterOS,"64 MB","16 MB","139 x 77 x 28,5 mm",802.3af/at,,,"12-57 V",3,"8-30 V","9 W",2,1.5,,,1,,,,,,,,2,,,99.00
107
+ "LtAP mini LTE kit",RB912R-2nD-LTm&EC200A-EUr3,MIPSBE,QCA9531,1,"650 MHz",4,"RouterOS v7","64 MB","16 MB",,802.3af/at,,,"12-57 V",3,"8-30 V","8 W",2,1.5,,,1,,,,,,,,2,,,99.00
108
+ "mANTBox 2 12s",RB911G-2HPnD-12Sr2,MIPSBE,AR9342,1,"600 MHz",4,RouterOS,"64 MB","128 MB","140 x 348 x 82 mm","Passive PoE",,,"10-28 V",2,"8-30 V","11 W",2,12,,,,1,,,,,,,,,,99.00
109
+ "mANTBox ax 15s",L22UGS-5HaxD2HaxD-15S,"ARM 32bit",IPQ-5010,2,"800 MHz",4,"RouterOS v7","256 MB","128 MB",,"Passive PoE",,,"18-28 V",2,"12-28 V","21 W",2,12,2,15,,1,,1,,"1 (2.5G supported)",,,,,"USB type A",179.00
110
+ mAP,RBmAP2nD,MIPSBE,QCA9531,1,"650 MHz",4,RouterOS,"64 MB","16 MB",68x68x19mm,802.3af/at,"Passive PoE",Ether2,"12-57 V",3,"8-57 V","5 W",2,1.2,,,2,,,1,,,,,,,"microUSB type AB",45.00
111
+ "mAP lite",RBmAPL-2nD,MIPSBE,QCA9533,1,"650 MHz",4,RouterOS,"64 MB","16 MB",48x49x11mm,802.3af/at,,,"10-60 V",2,,"3.5 W",2,1.5,,,1,,,,,,,,,,,30.00
112
+ "Metal 52 ac",RBMetalG-52SHPacn,MIPSBE,QCA9556,1,"720 MHz",4,RouterOS,"64 MB","16 MB",215x60x38mm,"Passive PoE",,,"10-30 V",1,,"11 W",1,6,1,6,,1,,,,,,,,,,119.00
113
+ "NetBox 5 ax",L11UG-5HaxD-NB,"ARM 32bit",IPQ-5010,2,"800 MHz",4,"RouterOS v7","256 MB","128 MB",,"Passive PoE",,,"18-28 V",1,,"15 W",,,2,,,1,,1,,,,,,,"USB type A",109.00
114
+ "netFiber 9",CRS310-1G-5S-4S+OUT,"ARM 32bit",98DX226S,2,"800 MHz",5,"RouterOS v7 / SwitchOS","256 MB","16 MB",,802.3af/at,,,"18-57 V",2,"18-57 V","17 W",,,,,,1,,,,5,4,,,,,249.00
115
+ "NetMetal 5",RB922UAGS-5HPacD-NM,MIPSBE,QCA9557,1,"720 MHz",4,RouterOS,"128 MB","128 MB","143x247x48mm (PCB)","Passive PoE",,,"8-30 V",1,,"19 W",,,2,,,1,,1,,1,,,1,,"USB type A",149.00
116
+ "NetMetal ax",L23UGSR-5HaxD2HaxD-NM,"ARM 32bit",IPQ-5010,2,"800 MHz",4,"RouterOS v7","256 MB","128 MB",,"Passive PoE",,,"18-28 V",2,"12-28 V","25 W",2,,2,,,1,,1,,"1 (2.5G supported)",,,1,,"USB type A",169.00
117
+ "netPower 15FR",CRS318-1Fi-15Fr-2S-OUT,"ARM 32bit",98DX224S,2,"800 MHz",5,"RouterOS / SwitchOS","256 MB","16 MB","304 x 212 x 71 mm","Passive PoE","Passive PoE",Ether15,"18-57 V (recommended 36-57V)",16,"18-57 V","29 W",,,,,16,,,,,2,,,,,,169.00
118
+ "netPower 16P",CRS318-16P-2S+OUT,"ARM 32bit",98DX226S,2,"800 MHz",5,"RouterOS / SwitchOS","256 MB","16 MB","303 x 212 x 78 mm",,802.3af/at,Ether1-Ether16,,2,"18-30 V / 48-57 V","316 W",,,,,,16,,,,,2,,,,,279.00
119
+ "netPower Lite 7R",CSS610-1Gi-7R-2S+OUT,,,,,,"SwitchOS Lite",,"64 KB","303.5 x 211.9 x 71.3/72.3 (left/right) mm","Passive PoE","Passive PoE",Ether8,"12-57 V",3,"12-57 V","29 W",,,,,,8,,,,,2,,,,,139.00
120
+ "netPower Lite 8P",CSS610-8P-2S+OUT,,,,,,"SwOS Lite",,"64 KB",,,802.3af/at,Ether1-Ether8,,3,,"208 W",,,,,,8,,,,,2,,,,,199.00
121
+ "OmniTIK 5 PoE ac",RBOmniTikPG-5HacD,MIPSBE,QCA9557,1,"720 MHz",4,RouterOS,"128 MB","16 MB","416 x 129 x 58 mm","Passive PoE",802.3af/at,Ether2-Ether5,"12-57 V",1,,"66 W",,,2,7.5,,5,,1,,,,,,,"USB type A",139.00
122
+ "PowerBox Pro",RB960PGS-PB,MIPSBE,QCA9557,1,"800 MHz",4,RouterOS,"128 MB","16 MB","125 x 52 x 225 mm","Passive PoE",802.3af/at,Ether2-Ether5,"12-57 V",2,"12-57 V","54 W",,,,,,5,,,,1,,,,,,109.00
123
+ "QRT 5",RB911G-5HPnD-QRT,MIPSBE,AR9342,1,"600 MHz",4,RouterOS,"64 MB","128 MB",309x320x50mm,"Passive PoE",,,"8-28 V",1,,"12 W",,,2,24,,1,,,,,,,,,,169.00
124
+ R11e-LTE7,R11e-LTE7,,,,,,,,,,,,,,,,"5 W",,,,,,,,,,,,,,,,65.00
125
+ RB260GS,CSS106-5G-1S,,,,,,"MikroTik SwOS",,"128 KB",113x139x28mm,"Passive PoE",,,"11-30 V",2,"11-30 V","5 W",,,,,,5,,,,1,,,,,,39.95
126
+ RB260GSP,CSS106-1G-4P-1S,,,,,,"MikroTik SwOS",,"128 KB",113x139x28mm,"Passive PoE","Passive PoE",Ether2-Ether5,"11-30 V",2,"11-30 V","53 W",,,,,,5,,,,1,,,,,,55.95
127
+ RB450Gx4,RB450Gx4,"ARM 32bit",IPQ-4019,4,"448-896 (auto) MHz",5,RouterOS,"1 GB","512 MB","90 x 116 mm",802.3af/at,"Passive PoE",Ether5,"12-57 V",3,"10-57 V","16 W",,,,,,5,,,,,,,,,,99.00
128
+ RB911G-5HPnD,RB911G-5HPnD,MIPSBE,AR9342,1,"600 MHz",3,RouterOS,"64 MB","128 MB",105x105mm,"Passive PoE",,,"8-28 V",2,"8-28 V","11 W",,,2,,,1,,,,,,,,,,55.00
129
+ RB912UAG-2HPnD,RB912UAG-2HPnD,MIPSBE,AR9342,1,"600 MHz",4,RouterOS,"64 MB","128 MB",105x105mm,"Passive PoE",,,"8-30 V",2,"8-30 V","13.5 W",2,,,,,1,,1,,,,,1,,"USB type A",79.00
130
+ RB912UAG-5HPnD,RB912UAG-5HPnD,MIPSBE,AR9342,1,"600 MHz",4,RouterOS,"64 MB","128 MB",105x105mm,"Passive PoE",,,"8-30 V",2,"8-30 V","12 W",,,2,,,1,,1,,,,,1,,"USB type A",79.00
131
+ RB922UAGS-5HPacD,RB922UAGS-5HPacD,MIPSBE,QCA9557,1,"720 MHz",4,RouterOS,"128 MB","128 MB",105x105mm,"Passive PoE",,,"8-30 V",2,"8-30 V","17 W",,,2,,,1,,1,,1,,,1,,"USB type A",99.00
132
+ RB951Ui-2HnD,RB951Ui-2HnD,MIPSBE,AR9344,1,"600 MHz",4,RouterOS,"128 MB","128 MB",113x138x29mm,"Passive PoE","Passive PoE",Ether5,"8-30 V",2,"8-30 V","24 W",2,2.5,,,5,,,1,,,,,,,"USB type A",59.95
133
+ RB1100AHx4,RB1100x4,"ARM 32bit",AL21400,4,"1.4 GHz",6,RouterOS,"1 GB","128 MB","443 x 148 x 44 mm",802.3af/at,,,"20-57 V",2,,"20 W",,,,,,13,,,,,,,,1,,329.00
134
+ "RB1100AHx4 Dude Edition",RB1100Dx4,"ARM 32bit",AL21400,4,"1.4 GHz",6,RouterOS,"1 GB","128 MB","443 x 148 x 44 mm",802.3af/at,,,"20-57 V",2,,"33 W",,,,,,13,,,,,,,,1,,385.00
135
+ RB4011iGS+5HacQ2HnD-IN,RB4011iGS+5HacQ2HnD-IN,"ARM 32bit",AL21400,4,"auto (533 - 1900) MHz",5,"RouterOS v7","1 GB","512 MB","228 x 120 x 30 mm","Passive PoE","Passive PoE up to 57V",Ether10,"18-57 V",2,"12-57 V","44 W",2,3,4,3,,10,,,,,1,,,,,275.00
136
+ RB4011iGS+RM,RB4011iGS+RM,"ARM 32bit",AL21400,4,"auto (533 - 1900) MHz",5,"RouterOS v7","1 GB","512 MB","228 x 120 x 30 mm","Passive PoE","Passive PoE up to 57V",Ether10,"18-57 V",2,"12-57 V","33 W",,,,,,10,,,,,1,,,,,219.00
137
+ RB5009UG+S+IN,RB5009UG+S+IN,"ARM 64bit",88F7040,4,"350-1400 (auto) MHz",5,"RouterOS v7","1 GB","1 GB","220 x 125 x 22 mm",802.3af/at,,,"24-57 V",3,"24-57 V","25 W",,,,,,7,1,1,,,1,,,,"USB 3.0 type A",219.00
138
+ RB5009UPr+S+IN,RB5009UPr+S+IN,"ARM 64bit",88F7040,4,"350-1400 (auto) MHz",5,"RouterOS v7","1 GB","1 GB",,"802.3af/at (ether1), Mode B (ether2-ether8)",802.3af/at,Ether1-Ether8,"24-57 V",3,"24-57 V","150 W",,,,,,7,1,1,,,1,,,,"USB 3.0 type A",299.00
139
+ RB5009UPr+S+OUT,RB5009UPr+S+OUT,"ARM 64bit",88F7040,4,"350-1400 (auto) MHz",5,"RouterOS v7","1 GB","1 GB",,802.3af/at,802.3af/at,Ether1-Ether8,"24-57 V",2,,"150 W",,,,,,7,1,1,,,1,,,,"USB 3.0 type A",319.00
140
+ RBM33G,RBM33G,MMIPS,MT7621A,2,"880 MHz",4,RouterOS,"256 MB","16 MB",,"Passive PoE",,,"11-28 V",2,"11-28 V","24 W",,,,,,3,,1,,,,,2,,"USB 3.0 type A",59.00
141
+ "ROSE Data server (RDS)",RDS2216-2XG-4S+4XS-2XQ,"ARM 64bit",AL73400,16,"2000 MHz",6,"RouterOS v7 (Special ROSE edition)","32 GB","128 MB","476 x 443 x 44 mm",,,,,,,"286 W",,,,,,1,,2,,,4,2,,,"USB 3.0 type A",1950.00
142
+ "SXT LTE7 kit",SXTR&R11e-LTE7r3,MIPSBE,QCA9531,1,"650 MHz",3,"RouterOS v7","64 MB","16 MB",,802.3af/at,"Passive PoE up to 57V",Ether2,"12-57 V",1,,"24 W",,,,,2,,,,,,,,2,,,109.00
143
+ "SXT SA5 ac",RBSXTG-5HPacD-SAr2,MIPSBE,QCA9557,1,"720 MHz",4,RouterOS,"128 MB","128 MB",,802.3af/at,,,"12-57 V",1,,"12 W",,,2,14,,1,,1,,,,,,,"USB type A",119.00
144
+ "SXTsq 5 ac",RBSXTsqG-5acDr2,"ARM 32bit",IPQ-4018,4,"488-896 (auto) MHz",3,RouterOS,"256 MB","16 MB","129 x 129 x 34 mm","Passive PoE",,,"10-28 V",1,,"7 W",,,2,16,,1,,,,,,,,,,65.00
145
+ "SXTsq 5 ax",SXTsq-5axD,"ARM 32bit",IPQ-5010,2,"800 MHz",4,"RouterOS v7","256 MB","128 MB",,"Passive PoE",,,"12-28 V",1,,"6 W",,,2,16,,1,,,,,,,,,,65.00
146
+ "SXTsq Embedded LTE4",EC25-EU&SXTsq,"ARM 32bit","Cortex A7",1,"800 MHz",3,"RouterOS v7","256 MB","512 MB",,Passive,,,"12-28 V",1,,"5 W",,,,,,1,,,,,,,2,,,89.00
147
+ "SXTsq Embedded LTE4 Global",EG25-G&SXTsq,"ARM 32bit","Cortex A7",1,"800 MHz",3,"RouterOS v7","256 MB","256 MB",,Passive,,,"12-28 V",1,,"5 W",,,,,,1,,,,,,,1,,,99.00
148
+ "SXTsq Lite2",RBSXTsq2nD,MIPSBE,QCA9533,1,"650 MHz",3,RouterOS,"64 MB","16 MB","129 x 129 x 34 mm","Passive PoE",,,"10-30 V",1,,"5 W",2,10,,,1,,,,,,,,,,,39.00
149
+ "SXTsq Lite5",RBSXTsq5nD,MIPSBE,AR9344,1,"600 MHz",3,RouterOS,"64 MB","16 MB",129x129x34mm,"Passive PoE",,,"10-30 V",1,,"6 W",,,2,16,1,,,,,,,,,,,46.00
150
+ "wAP ax",wAPG-5HaxD2HaxD,"ARM 32bit",IPQ-5010,2,"800 MHz",4,"RouterOS v7","256 MB","128 MB",,802.3af/at,,,"18-57 V",2,"12-57 V","9 W",2,6.9,2,7,,2,,,,,,,,,,89.00
151
+ "wAP ax LTE7 kit",wAPGR-5HaxD2HaxD&R11e-LTE7,"ARM 64bit",IPQ-5010,2,"800 MHz",4,"RouterOS v7","256 MB","128 MB",,802.3af/at,,,"18-57 V",2,"12-57 V","13 W",2,6.9,2,7,,2,,,,,,,1,,,169.00
152
+ "wAP LR2 kit",RBwAPR-2nD&R11e-LR2,MIPSBE,QCA9531,1,"650 MHz",4,,"64 MB","16 MB",,"Passive PoE",,,"9-30 V",3,"9-30 V","8 W",2,2,,,1,,,,,,,,1,,,149.00
153
+ "wAP LR8G kit",RBwAPR-2nD&R11e-LR8G,MIPSBE,QCA9531,1,"650 MHz",4,"RouterOS v7","64 MB","16 MB",,"Passive PoE",,,"9-30 V",3,"9-30 V","5 W",2,2,,,1,,,,,,,,1,,,149.00
154
+ "wAP LR9G kit",RBwAPR-2nD&R11e-LR9G,MIPSBE,QCA9531,1,"650 MHz",4,"RouterOS v7","64 MB","16 MB",,"Passive PoE",,,"9-28 V",3,"9-28 V","7 W",2,2,,,1,,,,,,,,1,,,149.00
155
+ "wAP LTE kit",wAPR-2nD&EC200A-EUr2,MIPSBE,QCA9531,1,"650 MHz",4,"RouterOS v7","64 MB","16 MB",,"Passive PoE",,,"9-30 V",3,"9-30 V","7 W",2,2,,,1,,,,,,,,1,,,99.00
156
+ "wAP R",RBwAPR-2nD,MIPSBE,QCA9531,1,"650 MHz",4,RouterOS,"64 MB","16 MB","185x85x30 mm","Passive PoE",,,"9-30 V",3,"9-30 V","6 W",2,2,,,1,,,,,,,,1,,,89.00
157
+ "Wireless Wire Cube Pro",CubeG-5ac60aypair,"ARM 32bit",IPQ-4019,4,"448-896 (auto) MHz",4,RouterOS,"256 MB","64 MB",,802.3af/at,,,"18-48 V",1,,"10 W",,,1,11.5,,1,,,,,,,,,,298.00
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tikoci/rosetta",
3
- "version": "0.9.1",
3
+ "version": "0.9.3",
4
4
  "description": "RouterOS documentation as SQLite FTS5 — RAG search + command glossary via MCP",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -23,7 +23,7 @@ function normalizeSuperscripts(s: string): string {
23
23
  return s.replace(/[⁰¹²³⁴⁵⁶⁷⁸⁹₀₁₂₃₄₅₆₇₈₉]/g, (c) => DIGIT_SUPER_SUB[c] ?? c);
24
24
  }
25
25
 
26
- const DEFAULT_CSV = "matrix/2026-03-25/matrix.csv";
26
+ const DEFAULT_CSV = "matrix/2026-07-07/matrix.csv";
27
27
  const csvPath = process.argv[2] || DEFAULT_CSV;
28
28
 
29
29
  /** Parse a CSV line respecting quoted fields. */
@@ -20,10 +20,11 @@ import { tmpdir } from "node:os";
20
20
  import { join } from "node:path";
21
21
  import type { Subprocess } from "bun";
22
22
  import { SCHEMA_VERSION } from "./paths.ts";
23
+ import { MIN_COMMANDS, MIN_PAGES } from "./setup.ts";
23
24
 
24
25
  // ── Helpers ──
25
26
 
26
- const BASE_PORT = 19700 + Math.floor(Math.random() * 800);
27
+ const BASE_PORT = 30000 + Math.floor(Math.random() * 20000);
27
28
  let portCounter = 0;
28
29
 
29
30
  function nextPort(): number {
@@ -94,20 +95,33 @@ function createFixtureDb(dbPath: string): void {
94
95
  ros_version TEXT
95
96
  );`);
96
97
 
97
- fixture.run(`INSERT INTO pages (
98
+ // Keep this fixture at setup.ts's minimum health threshold so the server
99
+ // startup path stays fully offline even before the current package version has
100
+ // a published release DB.
101
+ const insertPage = fixture.prepare(`INSERT INTO pages (
98
102
  id, slug, title, path, depth, parent_id, url, text, code, code_lang,
99
103
  author, last_updated, word_count, code_lines, html_file
100
- ) VALUES (
101
- 1, 'fixture', 'Fixture Page', 'RouterOS > Fixture', 1, NULL,
102
- 'https://help.mikrotik.com/docs/spaces/ROS/pages/1/Fixture',
103
- 'fixture text', '', NULL, 'test', NULL, 2, 0, 'fixture.html'
104
- );`);
104
+ ) VALUES (?, ?, ?, ?, 1, NULL, ?, 'fixture text', '', NULL, 'test', NULL, 2, 0, ?);`);
105
+ for (let i = 1; i <= MIN_PAGES; i++) {
106
+ insertPage.run(
107
+ i,
108
+ `fixture-${i}`,
109
+ `Fixture Page ${i}`,
110
+ `RouterOS > Fixture ${i}`,
111
+ `https://help.mikrotik.com/docs/spaces/ROS/pages/${i}/Fixture`,
112
+ `fixture-${i}.html`,
113
+ );
114
+ }
115
+ insertPage.finalize();
105
116
 
106
- fixture.run(`INSERT INTO commands (
117
+ const insertCommand = fixture.prepare(`INSERT INTO commands (
107
118
  id, path, name, type, parent_path, page_id, description, ros_version
108
- ) VALUES (
109
- 1, '/system', 'system', 'dir', NULL, 1, 'fixture command', '7.22'
110
- );`);
119
+ ) VALUES (?, ?, ?, 'dir', NULL, 1, 'fixture command', '7.22');`);
120
+ insertCommand.run(1, "/system", "system");
121
+ for (let i = 2; i <= MIN_COMMANDS; i++) {
122
+ insertCommand.run(i, `/fixture/cmd-${i}`, `cmd-${i}`);
123
+ }
124
+ insertCommand.finalize();
111
125
 
112
126
  // Stamp the current schema version so mcp.ts doesn't try to auto-download
113
127
  // a "real" DB. Importing SCHEMA_VERSION here keeps the fixture in sync with
@@ -119,7 +133,22 @@ function createFixtureDb(dbPath: string): void {
119
133
  }
120
134
 
121
135
  async function startServer(dbPath: string): Promise<ServerHandle> {
122
- const port = nextPort();
136
+ let lastError: unknown;
137
+ for (let attempt = 0; attempt < 10; attempt++) {
138
+ try {
139
+ return await startServerOnPort(dbPath, nextPort());
140
+ } catch (e) {
141
+ lastError = e;
142
+ const message = e instanceof Error ? e.message : String(e);
143
+ if (!message.includes("Server failed to start") || !message.includes("port")) {
144
+ throw e;
145
+ }
146
+ }
147
+ }
148
+ throw lastError instanceof Error ? lastError : new Error(String(lastError));
149
+ }
150
+
151
+ async function startServerOnPort(dbPath: string, port: number): Promise<ServerHandle> {
123
152
  const proc = Bun.spawn(["bun", "run", "src/mcp.ts", "--http", "--port", String(port)], {
124
153
  cwd: `${import.meta.dirname}/..`,
125
154
  stdout: "pipe",
@@ -109,10 +109,7 @@ describe.skipIf(!hasTestDb && !dbWasExplicitlyConfigured)(
109
109
  });
110
110
 
111
111
  const transportErrors: Error[] = [];
112
- let resolveClosed!: () => void;
113
- const closeSeen = new Promise<void>((resolve) => {
114
- resolveClosed = resolve;
115
- });
112
+ const { promise: closeSeen, resolve: resolveClosed } = Promise.withResolvers<void>();
116
113
  let closeCount = 0;
117
114
 
118
115
  client = new Client({ name: "stdio-test-client", version: "1.0.0" });
package/src/setup.ts CHANGED
@@ -11,6 +11,7 @@ import { execSync } from "node:child_process";
11
11
  import {
12
12
  closeSync,
13
13
  existsSync,
14
+ fstatSync,
14
15
  openSync,
15
16
  readdirSync,
16
17
  readSync,
@@ -24,6 +25,7 @@ import { gunzipSync } from "bun";
24
25
  import { detectMode, resolveBaseDir, resolveDbPath, resolveVersion, SCHEMA_VERSION } from "./paths.ts";
25
26
 
26
27
  declare const REPO_URL: string;
28
+ const REPLACE_DB_TIMEOUT_MS = 30_000;
27
29
 
28
30
  const GITHUB_REPO =
29
31
  typeof REPO_URL !== "undefined" ? REPO_URL : "tikoci/rosetta";
@@ -32,8 +34,8 @@ const RELEASE_VERSION = resolveVersion(import.meta.dirname);
32
34
  /** Minimum byte counts for a healthy DB. Validation thresholds — keep loose so
33
35
  * shrinking the dataset doesn't break startup, but tight enough to catch a
34
36
  * redirect-to-login HTML page or a partial transfer. */
35
- const MIN_PAGES = 100;
36
- const MIN_COMMANDS = 1000;
37
+ export const MIN_PAGES = 100;
38
+ export const MIN_COMMANDS = 1000;
37
39
  const MIN_DECOMPRESSED_BYTES = 50 * 1024 * 1024; // 50 MB
38
40
  const SQLITE_MAGIC = "SQLite format 3\0";
39
41
  const DOWNLOAD_LOCK_WAIT_MS = 90_000;
@@ -72,14 +74,12 @@ function dbHasData(dbPath: string): boolean {
72
74
  }
73
75
 
74
76
  function looksLikeSqliteFile(dbPath: string): boolean {
75
- if (!existsSync(dbPath)) return false;
76
-
77
77
  let fd: number | null = null;
78
78
  try {
79
- const stats = statSync(dbPath);
79
+ fd = openSync(dbPath, "r");
80
+ const stats = fstatSync(fd);
80
81
  if (!stats.isFile() || stats.size < SQLITE_MAGIC.length) return false;
81
82
 
82
- fd = openSync(dbPath, "r");
83
83
  const header = Buffer.alloc(SQLITE_MAGIC.length);
84
84
  const bytesRead = readSync(fd, header, 0, header.byteLength, 0);
85
85
  return bytesRead === header.byteLength && header.toString("utf8") === SQLITE_MAGIC;
@@ -301,7 +301,7 @@ function isReplaceRaceError(e: unknown): boolean {
301
301
  }
302
302
 
303
303
  async function replaceDbFile(tmpPath: string, dbPath: string): Promise<void> {
304
- const deadline = Date.now() + 30_000;
304
+ const deadline = Date.now() + REPLACE_DB_TIMEOUT_MS;
305
305
  let lastError: unknown = null;
306
306
 
307
307
  while (Date.now() <= deadline) {
@@ -310,7 +310,6 @@ async function replaceDbFile(tmpPath: string, dbPath: string): Promise<void> {
310
310
  return;
311
311
  } catch (e) {
312
312
  if (!isReplaceRaceError(e)) throw e;
313
- lastError = e;
314
313
  }
315
314
 
316
315
  tryUnlink(dbPath);
@@ -475,8 +474,8 @@ export async function downloadDb(
475
474
  cleanupDbArtifacts(tmpPath);
476
475
  lastError = new Error(
477
476
  `Downloaded DB schema=${probe.schemaVersion} does not match this rosetta build (expected ${SCHEMA_VERSION}). ` +
478
- `This usually means the cached package version is older than the published DB. ` +
479
- `Run: bunx @tikoci/rosetta@latest --refresh`,
477
+ `This usually means your MCP client is still using a cached older package version. ` +
478
+ `Restart the MCP client to let bunx re-resolve the latest package, or run: bunx @tikoci/rosetta@latest --refresh`,
480
479
  );
481
480
  if (isLast) throw lastError;
482
481
  log(` ${lastError.message}`);