@usex/mikrotik-mcp 4.24.0 → 5.0.0

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.
Files changed (74) hide show
  1. package/README.md +108 -51
  2. package/dist/cli.js +1839 -554
  3. package/dist/index.d.ts +57 -0
  4. package/dist/index.js +1 -1
  5. package/dist/shared/{library-2f8ty72a.js → cli-2dj736ma.js} +34321 -22476
  6. package/dist/shared/{cli-ps0h2mxx.js → cli-vvy7yfyg.js} +1 -1
  7. package/dist/shared/{cli-10wtq3xb.js → library-13dhfdnq.js} +29451 -18574
  8. package/dist/shared/{library-phwm9kqe.js → library-syt5fmtj.js} +1 -1
  9. package/dist/ui/observability.html +70 -62
  10. package/package.json +3 -2
  11. package/policies/baseline.yaml +180 -0
  12. package/prompts/backup-and-document.md +28 -18
  13. package/prompts/build-tunnel-transactionally.md +74 -0
  14. package/prompts/fleet-rollout.md +68 -0
  15. package/prompts/setup-traffic-flow.md +68 -0
  16. package/schemas/README.md +1 -1
  17. package/schemas/config.schema.json +367 -4
  18. package/schemas/tool-catalog.json +3044 -1152
  19. package/schemas/tools/abort_rollout.json +17 -0
  20. package/schemas/tools/abort_transaction.json +17 -0
  21. package/schemas/tools/add_alert_rule.json +45 -0
  22. package/schemas/tools/add_ipv6_route.json +1 -1
  23. package/schemas/tools/add_route.json +3 -2
  24. package/schemas/tools/add_schedule.json +50 -0
  25. package/schemas/tools/add_script.json +1 -1
  26. package/schemas/tools/add_traffic_flow_target.json +36 -0
  27. package/schemas/tools/add_transaction_step.json +21 -0
  28. package/schemas/tools/analyze_flows.json +25 -0
  29. package/schemas/tools/begin_transaction.json +109 -0
  30. package/schemas/tools/block_attacker.json +22 -0
  31. package/schemas/tools/check_policy_snapshot.json +20 -0
  32. package/schemas/tools/commit_transaction.json +13 -0
  33. package/schemas/tools/configure_attack_response.json +12 -0
  34. package/schemas/tools/diff_explanations.json +24 -0
  35. package/schemas/tools/explain_device.json +22 -0
  36. package/schemas/tools/explain_policy_finding.json +17 -0
  37. package/schemas/tools/explain_rule_reachability.json +18 -0
  38. package/schemas/tools/explain_section.json +32 -0
  39. package/schemas/tools/export_policy_report.json +22 -0
  40. package/schemas/tools/flow_top_talkers.json +31 -0
  41. package/schemas/tools/get_alert_history.json +26 -0
  42. package/schemas/tools/get_attack_incident.json +13 -0
  43. package/schemas/tools/get_audit_timeline.json +24 -0
  44. package/schemas/tools/get_device_capabilities.json +7 -0
  45. package/schemas/tools/get_traffic_flow_settings.json +7 -0
  46. package/schemas/tools/list_alert_rules.json +7 -0
  47. package/schemas/tools/list_attack_incidents.json +27 -0
  48. package/schemas/tools/list_attack_responses.json +20 -0
  49. package/schemas/tools/list_policies.json +17 -0
  50. package/schemas/tools/list_schedules.json +12 -0
  51. package/schemas/tools/list_traffic_flow_targets.json +7 -0
  52. package/schemas/tools/mute_alert_rule.json +18 -0
  53. package/schemas/tools/plan_rollout.json +95 -0
  54. package/schemas/tools/refresh_device_capabilities.json +7 -0
  55. package/schemas/tools/remove_alert_rule.json +13 -0
  56. package/schemas/tools/remove_schedule.json +13 -0
  57. package/schemas/tools/remove_traffic_flow_target.json +13 -0
  58. package/schemas/tools/rollout_status.json +12 -0
  59. package/schemas/tools/run_policy_check.json +12 -0
  60. package/schemas/tools/run_schedule_now.json +13 -0
  61. package/schemas/tools/scan_for_attacks.json +21 -0
  62. package/schemas/tools/set_traffic_flow_settings.json +28 -0
  63. package/schemas/tools/simulate_change.json +72 -0
  64. package/schemas/tools/simulate_packet.json +53 -0
  65. package/schemas/tools/simulate_suite.json +71 -0
  66. package/schemas/tools/start_flow_collector.json +14 -0
  67. package/schemas/tools/start_rollout.json +98 -0
  68. package/schemas/tools/stop_flow_collector.json +7 -0
  69. package/schemas/tools/test_alert_channel.json +14 -0
  70. package/schemas/tools/unblock_attacker.json +20 -0
  71. package/schemas/tools/update_alert_rule.json +41 -0
  72. package/schemas/tools/update_route.json +3 -2
  73. package/schemas/tools/validate_policy_file.json +16 -0
  74. package/schemas/tools/verify_transaction.json +13 -0
package/README.md CHANGED
@@ -1,20 +1,20 @@
1
1
  <div align="center">
2
2
  <img src="assets/logo.svg" alt="@usex/mikrotik-mcp" width="440" />
3
- <p><strong>Drive one or more MikroTik routers in plain language — 819 risk-annotated tools your AI can call, over SSH.</strong><br/>
4
- Firewall · routing · DHCP/DNS · wireless · QoS · a complete VPN suite · transactional Safe Mode · and a live observability dashboard that watches every call.</p>
3
+ <p><strong>Drive one or more MikroTik routers in plain language — 885 risk-annotated tools your AI can call, over SSH.</strong><br/>
4
+ Firewall · routing · DHCP/DNS · wireless · QoS · a complete VPN suite · transactional Safe Mode · live attack detection · and an observability dashboard that watches every call.</p>
5
5
 
6
6
  <p>
7
7
  <a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-7C3AED.svg"></a>
8
8
  <img alt="Runtime: Bun" src="https://img.shields.io/badge/runtime-Bun%20%E2%89%A5%201.3-06B6D4.svg">
9
9
  <img alt="TypeScript" src="https://img.shields.io/badge/TypeScript-strict-6366F1.svg">
10
- <img alt="MCP" src="https://img.shields.io/badge/MCP-819%20tools-1F2937.svg">
10
+ <img alt="MCP" src="https://img.shields.io/badge/MCP-885%20tools-1F2937.svg">
11
11
  <a href="docs/"><img alt="Docs" src="https://img.shields.io/badge/docs-reference-7C3AED.svg"></a>
12
12
  </p>
13
13
  </div>
14
14
 
15
15
  ---
16
16
 
17
- `@usex/mikrotik-mcp` turns **MikroTik RouterOS** into **819 [Model Context Protocol](https://modelcontextprotocol.io)
17
+ `@usex/mikrotik-mcp` turns **MikroTik RouterOS** into **885 [Model Context Protocol](https://modelcontextprotocol.io)
18
18
  tools** any MCP client (Claude Desktop, Claude Code, Cursor, …) can call to read and
19
19
  configure your router by talking to it. It reaches the device over **plain SSH** — no
20
20
  agent, no package to install on RouterOS — runs on **[Bun](https://bun.sh)**, and
@@ -46,9 +46,23 @@ Then just ask:
46
46
 
47
47
  ## Highlights
48
48
 
49
- - 🧰 **819 tools, one per RouterOS scope** — L2 (bridge, VLAN, wireless, PoE),
49
+ - 🧰 **885 tools, one per RouterOS scope** — L2 (bridge, VLAN, wireless, PoE),
50
50
  L3 (addressing, routing, DHCP, DNS), security (firewall, NAT, address-lists,
51
51
  certificates), QoS, and system ops (users, logs, backups, scheduler).
52
+ - 🛡️ **Attack detection** — reads every device's log, correlates brute force,
53
+ credential spraying and _a login that succeeded after failures_ into incidents with
54
+ evidence, and can block the source with a timed, reversible entry. Detect-only until
55
+ you say otherwise. [→](docs/attack-detection.md)
56
+ - ⏱️ **Scheduled audits** — run the auditors on a cron with nobody in the loop, and
57
+ hear only about what **changed** since the last run: new, worsened, resolved.
58
+ [→](docs/scheduled-audits.md)
59
+ - 📖 **`explain_device`** — turns a config into the architecture document that should
60
+ have been in the wiki (topology diagram, what's exposed, what each chain does), and
61
+ explains what the difference between two snapshots actually _means_.
62
+ [→](docs/config-narrative.md)
63
+ - 🧪 **Offline simulator** — trace a hypothetical packet through NAT, routing and
64
+ firewall against a snapshot, with no device in the loop. Reports UNKNOWN rather than
65
+ guessing. [→](docs/simulator.md)
52
66
  - 📊 **Live observability dashboard** — a localhost web UI that shows **every tool
53
67
  call the AI makes** in real time: inputs, outputs, latency, errors, per-device
54
68
  analytics. Secrets redacted. [Jump to it ↓](#-observability-dashboard)
@@ -67,6 +81,9 @@ Then just ask:
67
81
  bastion (`jumpVia`); commands, Safe Mode and file upload all ride the hop.
68
82
  - ⚡ **Connection pooling** — one persistent SSH session per device saves ~200-500 ms
69
83
  per command.
84
+ - 🔀 **REST API, opt-in** — point a device at RouterOS 7.9+'s `/rest` for structured
85
+ JSON and real HTTP status codes, with automatic SSH fallback for anything REST
86
+ can't express. Per-device, off by default.
70
87
 
71
88
  ## Install
72
89
 
@@ -195,7 +212,7 @@ mikrotik-mcp serve --dashboard # → http://127.0.0.1:9090
195
212
  ```
196
213
 
197
214
  <div align="center">
198
- <img src="assets/screenshots/dashboard-overview.png" alt="Observability dashboard — overview" width="820" />
215
+ <img src="assets/screenshots/web/dashboard-overview.webp" alt="Observability dashboard — overview" width="820" />
199
216
  </div>
200
217
 
201
218
  Every call flows through one choke point in the registry, so the dashboard sees **all
@@ -215,16 +232,19 @@ of them, across every transport**. Why you'll want it on:
215
232
  RouterOS identity/version and recent activity.
216
233
 
217
234
  <div align="center">
218
- <img src="assets/screenshots/dashboard-live-feed.png" alt="Observability dashboard — live call feed" width="820" />
235
+ <img src="assets/screenshots/web/dashboard-live-feed.webp" alt="Observability dashboard — live call feed" width="820" />
219
236
  </div>
220
237
 
221
238
  <div align="center">
222
- <img src="assets/screenshots/dashboard-devices.png" alt="Observability dashboard — devices & connectivity" width="820" />
239
+ <img src="assets/screenshots/web/dashboard-devices.webp" alt="Observability dashboard — devices & connectivity" width="820" />
223
240
  </div>
224
241
 
225
- It also carries **Config Studio** (edit the config JSON with autocomplete + safe-apply
226
- auto-rollback), a **live topology map** from MNDP discovery, a **releases/upgrade**
227
- timeline, and a **reload/restart** button. Everything persists to a Bun-native SQLite
242
+ It also carries a page per flagship workflow **Attacks** (live incidents, the evidence
243
+ behind each, guarded blocking), **Schedules** (audit posture over time and what regressed),
244
+ **Explain** (the architecture document with its topology diagram), **Policies**,
245
+ **Simulator**, **Transactions**, **Flows** and **Rollout** — plus **Config Studio** (edit
246
+ the config JSON with autocomplete + safe-apply auto-rollback), a **live topology map** from
247
+ MNDP discovery, a **releases/upgrade** timeline, and a **reload/restart** button. Everything persists to a Bun-native SQLite
228
248
  store on your machine — no external database. Binds to loopback (`127.0.0.1`) by default;
229
249
  set a bearer token (`--dashboard-token`) to expose it safely.
230
250
 
@@ -237,89 +257,89 @@ set a bearer token (`--dashboard-token`) to expose it safely.
237
257
  duration, risk annotation — secrets already `«redacted»`.
238
258
 
239
259
  <div align="center">
240
- <img src="assets/screenshots/dashboard-live-feed-detail.png" alt="Live feed — call detail drawer" width="820" />
260
+ <img src="assets/screenshots/web/dashboard-live-feed-detail.webp" alt="Live feed — call detail drawer" width="820" />
241
261
  </div>
242
262
 
243
263
  **Clients.** Every DHCP lease / connected station across devices, with identity, traffic
244
264
  and last-seen.
245
265
 
246
266
  <div align="center">
247
- <img src="assets/screenshots/dashboard-clients.png" alt="Clients" width="820" />
267
+ <img src="assets/screenshots/web/dashboard-clients.webp" alt="Clients" width="820" />
248
268
  </div>
249
269
 
250
270
  **RADIUS & User Manager.** Servers, sessions, profiles, limitations and vouchers.
251
271
 
252
272
  <div align="center">
253
- <img src="assets/screenshots/dashboard-radius-um.png" alt="RADIUS & User Manager" width="820" />
273
+ <img src="assets/screenshots/web/dashboard-radius-um.webp" alt="RADIUS & User Manager" width="820" />
254
274
  </div>
255
275
 
256
276
  **Topology.** Live L2 map built from MNDP neighbour discovery.
257
277
 
258
278
  <div align="center">
259
- <img src="assets/screenshots/dashboard-topology.png" alt="Topology map" width="820" />
279
+ <img src="assets/screenshots/web/dashboard-topology.webp" alt="Topology map" width="820" />
260
280
  </div>
261
281
 
262
282
  **Packets.** Packet captures started from the dashboard, with status and download.
263
283
 
264
284
  <div align="center">
265
- <img src="assets/screenshots/dashboard-packets.png" alt="Packet capture" width="820" />
285
+ <img src="assets/screenshots/web/dashboard-packets.webp" alt="Packet capture" width="820" />
266
286
  </div>
267
287
 
268
288
  **Snapshots.** `/export`-based config snapshots kept locally — browse and diff any two.
269
289
 
270
290
  <div align="center">
271
- <img src="assets/screenshots/dashboard-snapshots.png" alt="Config snapshots" width="820" />
291
+ <img src="assets/screenshots/web/dashboard-snapshots.webp" alt="Config snapshots" width="820" />
272
292
  </div>
273
293
 
274
294
  **Drift Guard.** Baseline vs. live config, with drift promoted or reconciled.
275
295
 
276
296
  <div align="center">
277
- <img src="assets/screenshots/dashboard-drift-guard.png" alt="Drift Guard" width="820" />
297
+ <img src="assets/screenshots/web/dashboard-drift-guard.webp" alt="Drift Guard" width="820" />
278
298
  </div>
279
299
 
280
300
  **Change Plan.** Dry-run a batch of changes, review the exact commands, then apply under
281
301
  Safe Mode.
282
302
 
283
303
  <div align="center">
284
- <img src="assets/screenshots/dashboard-changeplan.png" alt="Change plan / dry-run" width="820" />
304
+ <img src="assets/screenshots/web/dashboard-changeplan.webp" alt="Change plan / dry-run" width="820" />
285
305
  </div>
286
306
 
287
307
  **S3 Backups.** Off-device backup archive — upload, list, download, delete.
288
308
 
289
309
  <div align="center">
290
- <img src="assets/screenshots/dashboard-s3-backup.png" alt="S3 backups" width="820" />
310
+ <img src="assets/screenshots/web/dashboard-s3-backup.webp" alt="S3 backups" width="820" />
291
311
  </div>
292
312
 
293
313
  **Backups.** Local backup files kept on the MCP host.
294
314
 
295
315
  <div align="center">
296
- <img src="assets/screenshots/dashboard-local-backup.png" alt="Local backups" width="820" />
316
+ <img src="assets/screenshots/web/dashboard-local-backup.webp" alt="Local backups" width="820" />
297
317
  </div>
298
318
 
299
319
  **Modules.** The full tool catalog by module and risk annotation.
300
320
 
301
321
  <div align="center">
302
- <img src="assets/screenshots/dashboard-modules.png" alt="Tool modules" width="820" />
322
+ <img src="assets/screenshots/web/dashboard-modules.webp" alt="Tool modules" width="820" />
303
323
  </div>
304
324
 
305
325
  **Config.** Config Studio — edit the config JSON with autocomplete, then safe-apply with
306
326
  auto-rollback.
307
327
 
308
328
  <div align="center">
309
- <img src="assets/screenshots/dashboard-config.png" alt="Config Studio" width="820" />
329
+ <img src="assets/screenshots/web/dashboard-config.webp" alt="Config Studio" width="820" />
310
330
  </div>
311
331
 
312
332
  **Memory.** Knowledge graph of entities, relations and observations gathered from calls.
313
333
 
314
334
  <div align="center">
315
- <img src="assets/screenshots/dashboard-memory.png" alt="Memory knowledge graph" width="820" />
335
+ <img src="assets/screenshots/web/dashboard-memory.webp" alt="Memory knowledge graph" width="820" />
316
336
  </div>
317
337
 
318
338
  **What's new.** Release notes for the running server version, shown on first launch after
319
339
  an upgrade.
320
340
 
321
341
  <div align="center">
322
- <img src="assets/screenshots/dashboard-whats-new.png" alt="What's new — release notes" width="820" />
342
+ <img src="assets/screenshots/web/dashboard-whats-new.webp" alt="What's new — release notes" width="820" />
323
343
  </div>
324
344
 
325
345
  </details>
@@ -328,18 +348,24 @@ Full reference: **[docs/observability.md](docs/observability.md)**.
328
348
 
329
349
  ## The tool catalog
330
350
 
331
- **819 tools across 111 modules.** Full, always-current reference (parameters + risk per
351
+ **885 tools across 137 modules.** Full, always-current reference (parameters + risk per
332
352
  tool) is generated from source: **[docs/tools-reference.md](docs/tools-reference.md)**.
333
353
 
334
- | Group | Tools | Modules |
335
- | ------------------------ | ----: | ------------------------------------------------------------------------------------------------ |
336
- | **Interfaces** | 41 | interfaces, VLAN, bridge, wireless, PoE |
337
- | **Addressing & Routing** | 46 | IP addresses, IP pools, routing, DHCP, DNS |
338
- | **Dynamic Routing** | 99 | router-id, tables, rules, next-hops, filters, BFD, BGP, OSPF, RIP, PIM-SM, IGMP proxy, GMP, RPKI |
339
- | **Security** | 34 | firewall filter, NAT, address-lists, certificates, IP services |
340
- | **VPN & Tunneling** | 96 | WireGuard, IPsec, PPP, L2TP, PPTP, SSTP, OpenVPN, GRE/IPIP/EoIP/VXLAN |
341
- | **QoS** | 19 | queue types, queue trees, simple queues |
342
- | **System & Ops** | 102 | system, network tools, scheduler/scripts, users, logs, backup, Safe Mode |
354
+ | Group | Tools | Modules |
355
+ | ------------------------ | ----: | ----------------------------------------------------------------------------------------------------------------- |
356
+ | **System & Ops** | 182 | system, network tools, scheduler/scripts, users, logs, backup, Safe Mode, transactions, rollout, scheduled audits |
357
+ | **Security** | 125 | firewall filter, NAT, address-lists, certificates, IP services, hardening, policy-as-code, attack detection |
358
+ | **VPN & Tunneling** | 108 | WireGuard, IPsec, PPP, L2TP, PPTP, SSTP, OpenVPN, GRE/IPIP/EoIP/VXLAN |
359
+ | **Dynamic Routing** | 99 | router-id, tables, rules, next-hops, filters, BFD, BGP, OSPF, RIP, PIM-SM, IGMP proxy, GMP, RPKI |
360
+ | **IPv6** | 90 | addressing, DHCPv6, ND, neighbours, pools, routes, firewall filter/NAT/mangle/raw |
361
+ | **Tools** | 67 | ping, traceroute, bandwidth test, sniffer, traffic generator, RoMON, Wake-on-LAN, SMS |
362
+ | **Addressing & Routing** | 62 | IP addresses, IP pools, routing, DHCP, DNS |
363
+ | **Interfaces** | 56 | interfaces, VLAN, bridge, wireless, PoE |
364
+ | **AAA** | 34 | RADIUS, User Manager, 802.1X |
365
+ | **QoS** | 23 | queue types, queue trees, simple queues |
366
+ | **Switch** | 18 | switch settings, ports, rules, port isolation |
367
+ | **Discovery & Meta** | 9 | tool gateway (find/describe/invoke), server pulse, capability probe |
368
+ | **Memory** | 9 | persistent knowledge graph |
343
369
 
344
370
  ## Beyond the catalog
345
371
 
@@ -348,12 +374,33 @@ Higher-level workflows built on top of the per-scope tools:
348
374
  - **[Change Plan & Dry-Run](docs/change-plan.md)** — preview commands as a
349
375
  terraform-style plan, apply under Safe Mode, show the exact `/export` diff, commit
350
376
  only if still reachable.
377
+ - **[Cross-Device Transactions](docs/transactions.md)** — coordinate Safe Mode across
378
+ several routers: prepare, verify while still uncommitted, then commit everywhere or
379
+ roll back everywhere.
380
+ - **[Staged Fleet Rollout](docs/fleet-rollout.md)** — apply one change as canary → wave →
381
+ fleet with a health gate and soak between waves, reverting everything already changed
382
+ on the first failure.
383
+ - **[Scheduled Audits](docs/scheduled-audits.md)** — run the auditors on a cron with
384
+ nobody in the loop and alert only on what changed since the previous run: new,
385
+ worsened, resolved.
386
+ - **[Config Narrative](docs/config-narrative.md)** — turn a router's configuration into a
387
+ plain-language architecture document with a topology diagram, and explain what the
388
+ difference between two snapshots actually means.
389
+ - **[Attack Detection](docs/attack-detection.md)** — watch the fleet's logs for brute
390
+ force, credential spraying and a login that succeeded after failures, correlate them
391
+ into incidents with evidence, and block the source reversibly when you ask.
351
392
  - **[Config Snapshots](docs/config-snapshots.md)** — store `/export` snapshots and
352
393
  time-travel diff any two, or one against the live device.
353
394
  - **[Firewall Audit](docs/firewall-audit.md)** — find shadowed, broad, missing-default-drop,
354
395
  duplicate and dead rules, risk-scored, with one-click fixes.
355
396
  - **[Security Hardening](docs/security-hardening.md)** — per-category audit+remediate
356
397
  pairs; audits read-only, fixes dry-run + snapshot + Safe-Mode first.
398
+ - **[Policy-as-Code](docs/policy-as-code.md)** — write your own compliance rules in
399
+ YAML and lint a config snapshot offline; Markdown/JSON/SARIF, read-only, CI-able.
400
+ - **[Offline Simulator](docs/simulator.md)** — trace a hypothetical packet through NAT,
401
+ routing and firewall against a snapshot; reports UNKNOWN rather than guessing.
402
+ - **[Traffic Flow](docs/traffic-flow.md)** — NetFlow/IPFIX collection and continuous
403
+ top-talker / conversation / application analytics; flow metadata only, no payload.
357
404
  - **[Port-Scan Detection](docs/port-scan-detection.md)** · **[Packet Capture Studio](docs/packet-capture.md)** ·
358
405
  **[Discovery](docs/discovery.md)** · **[Config Studio](docs/config-studio.md)**.
359
406
 
@@ -402,22 +449,32 @@ Full table (HTTP host, allow-lists, timeouts, dashboard options, `MIKROTIK_LOG_L
402
449
 
403
450
  ## Documentation
404
451
 
405
- | Doc | |
406
- | ------------------------------------------------------------------- | ----------------------------------------------------------- |
407
- | [Getting started](docs/getting-started.md) | Install, verify, first run |
408
- | [Configuration](docs/configuration.md) | Every env var & flag |
409
- | [Multiple devices](docs/multi-device.md) | Manage several routers; per-call targeting |
410
- | [Connecting clients](docs/connecting-clients.md) | Claude Desktop, stdio, HTTP |
411
- | **[Observability](docs/observability.md)** | Real-time dashboard: live feed + analytics, SQLite |
412
- | [Safe Mode](docs/safe-mode.md) | Transactional changes |
413
- | **[Change Plan & Dry-Run](docs/change-plan.md)** | Preview commands, apply with the exact diff + auto-rollback |
414
- | **[Firewall Audit](docs/firewall-audit.md)** | Shadowed/broad/dead rules, risk-scored |
415
- | **[Security Hardening](docs/security-hardening.md)** | Per-category audit+remediate, snapshot + Safe-Mode |
416
- | **[VPN guide](docs/vpn-guide.md)** | Every tunnel type + how to build it |
417
- | [Prompts](docs/prompts.md) | The 9 guided workflows |
418
- | [Architecture](docs/architecture.md) · [Security](docs/security.md) | How it's built · credentials & risk gating |
419
- | [Tool reference](docs/tools-reference.md) | The full generated catalog |
420
- | [Development](docs/development.md) · [Docker](docs/docker.md) | Build, test, deploy |
452
+ | Doc | |
453
+ | ------------------------------------------------------------------- | ------------------------------------------------------------ |
454
+ | [Getting started](docs/getting-started.md) | Install, verify, first run |
455
+ | [Configuration](docs/configuration.md) | Every env var & flag |
456
+ | [Device capabilities](docs/capabilities.md) | What a router supports; how tools are gated on it |
457
+ | [Alerting](docs/alerting.md) | Rules that reach out — Slack, Discord, ntfy, webhook, MCP |
458
+ | [Multiple devices](docs/multi-device.md) | Manage several routers; per-call targeting |
459
+ | [Connecting clients](docs/connecting-clients.md) | Claude Desktop, stdio, HTTP |
460
+ | **[Observability](docs/observability.md)** | Real-time dashboard: live feed + analytics, SQLite |
461
+ | [Safe Mode](docs/safe-mode.md) | Transactional changes |
462
+ | **[Cross-Device Transactions](docs/transactions.md)** | Two-phase commit across several routers |
463
+ | **[Staged Fleet Rollout](docs/fleet-rollout.md)** | Canary wave fleet with health gates and auto-revert |
464
+ | **[Change Plan & Dry-Run](docs/change-plan.md)** | Preview commands, apply with the exact diff + auto-rollback |
465
+ | **[Traffic Flow](docs/traffic-flow.md)** | NetFlow/IPFIX collection + top-talker analytics |
466
+ | **[Attack Detection](docs/attack-detection.md)** | Live attack incidents from logs; guarded, timed blocking |
467
+ | **[Firewall Audit](docs/firewall-audit.md)** | Shadowed/broad/dead rules, risk-scored |
468
+ | **[Security Hardening](docs/security-hardening.md)** | Per-category audit+remediate, snapshot + Safe-Mode |
469
+ | **[Scheduled Audits](docs/scheduled-audits.md)** | Auditors on a cron, alerting only on run-over-run changes |
470
+ | **[Policy-as-Code](docs/policy-as-code.md)** | Your own YAML compliance rules, linted offline → SARIF |
471
+ | **[Config Narrative](docs/config-narrative.md)** | Config → architecture doc + Mermaid; consequence-level diffs |
472
+ | **[Offline Simulator](docs/simulator.md)** | Trace a packet through firewall + routing, no device |
473
+ | **[VPN guide](docs/vpn-guide.md)** | Every tunnel type + how to build it |
474
+ | [Prompts](docs/prompts.md) | The 9 guided workflows |
475
+ | [Architecture](docs/architecture.md) · [Security](docs/security.md) | How it's built · credentials & risk gating |
476
+ | [Tool reference](docs/tools-reference.md) | The full generated catalog |
477
+ | [Development](docs/development.md) · [Docker](docs/docker.md) | Build, test, deploy |
421
478
 
422
479
  ## Security
423
480