@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.
- package/README.md +108 -51
- package/dist/cli.js +1839 -554
- package/dist/index.d.ts +57 -0
- package/dist/index.js +1 -1
- package/dist/shared/{library-2f8ty72a.js → cli-2dj736ma.js} +34321 -22476
- package/dist/shared/{cli-ps0h2mxx.js → cli-vvy7yfyg.js} +1 -1
- package/dist/shared/{cli-10wtq3xb.js → library-13dhfdnq.js} +29451 -18574
- package/dist/shared/{library-phwm9kqe.js → library-syt5fmtj.js} +1 -1
- package/dist/ui/observability.html +70 -62
- package/package.json +3 -2
- package/policies/baseline.yaml +180 -0
- package/prompts/backup-and-document.md +28 -18
- package/prompts/build-tunnel-transactionally.md +74 -0
- package/prompts/fleet-rollout.md +68 -0
- package/prompts/setup-traffic-flow.md +68 -0
- package/schemas/README.md +1 -1
- package/schemas/config.schema.json +367 -4
- package/schemas/tool-catalog.json +3044 -1152
- package/schemas/tools/abort_rollout.json +17 -0
- package/schemas/tools/abort_transaction.json +17 -0
- package/schemas/tools/add_alert_rule.json +45 -0
- package/schemas/tools/add_ipv6_route.json +1 -1
- package/schemas/tools/add_route.json +3 -2
- package/schemas/tools/add_schedule.json +50 -0
- package/schemas/tools/add_script.json +1 -1
- package/schemas/tools/add_traffic_flow_target.json +36 -0
- package/schemas/tools/add_transaction_step.json +21 -0
- package/schemas/tools/analyze_flows.json +25 -0
- package/schemas/tools/begin_transaction.json +109 -0
- package/schemas/tools/block_attacker.json +22 -0
- package/schemas/tools/check_policy_snapshot.json +20 -0
- package/schemas/tools/commit_transaction.json +13 -0
- package/schemas/tools/configure_attack_response.json +12 -0
- package/schemas/tools/diff_explanations.json +24 -0
- package/schemas/tools/explain_device.json +22 -0
- package/schemas/tools/explain_policy_finding.json +17 -0
- package/schemas/tools/explain_rule_reachability.json +18 -0
- package/schemas/tools/explain_section.json +32 -0
- package/schemas/tools/export_policy_report.json +22 -0
- package/schemas/tools/flow_top_talkers.json +31 -0
- package/schemas/tools/get_alert_history.json +26 -0
- package/schemas/tools/get_attack_incident.json +13 -0
- package/schemas/tools/get_audit_timeline.json +24 -0
- package/schemas/tools/get_device_capabilities.json +7 -0
- package/schemas/tools/get_traffic_flow_settings.json +7 -0
- package/schemas/tools/list_alert_rules.json +7 -0
- package/schemas/tools/list_attack_incidents.json +27 -0
- package/schemas/tools/list_attack_responses.json +20 -0
- package/schemas/tools/list_policies.json +17 -0
- package/schemas/tools/list_schedules.json +12 -0
- package/schemas/tools/list_traffic_flow_targets.json +7 -0
- package/schemas/tools/mute_alert_rule.json +18 -0
- package/schemas/tools/plan_rollout.json +95 -0
- package/schemas/tools/refresh_device_capabilities.json +7 -0
- package/schemas/tools/remove_alert_rule.json +13 -0
- package/schemas/tools/remove_schedule.json +13 -0
- package/schemas/tools/remove_traffic_flow_target.json +13 -0
- package/schemas/tools/rollout_status.json +12 -0
- package/schemas/tools/run_policy_check.json +12 -0
- package/schemas/tools/run_schedule_now.json +13 -0
- package/schemas/tools/scan_for_attacks.json +21 -0
- package/schemas/tools/set_traffic_flow_settings.json +28 -0
- package/schemas/tools/simulate_change.json +72 -0
- package/schemas/tools/simulate_packet.json +53 -0
- package/schemas/tools/simulate_suite.json +71 -0
- package/schemas/tools/start_flow_collector.json +14 -0
- package/schemas/tools/start_rollout.json +98 -0
- package/schemas/tools/stop_flow_collector.json +7 -0
- package/schemas/tools/test_alert_channel.json +14 -0
- package/schemas/tools/unblock_attacker.json +20 -0
- package/schemas/tools/update_alert_rule.json +41 -0
- package/schemas/tools/update_route.json +3 -2
- package/schemas/tools/validate_policy_file.json +16 -0
- 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 —
|
|
4
|
-
Firewall · routing · DHCP/DNS · wireless · QoS · a complete VPN suite · transactional Safe Mode · and
|
|
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-
|
|
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 **
|
|
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
|
-
- 🧰 **
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
226
|
-
|
|
227
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
**
|
|
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
|
-
| **
|
|
337
|
-
| **
|
|
338
|
-
| **
|
|
339
|
-
| **
|
|
340
|
-
| **
|
|
341
|
-
| **
|
|
342
|
-
| **
|
|
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
|
-
| [
|
|
410
|
-
| [
|
|
411
|
-
|
|
|
412
|
-
| [
|
|
413
|
-
| **[
|
|
414
|
-
|
|
|
415
|
-
| **[
|
|
416
|
-
| **[
|
|
417
|
-
| [
|
|
418
|
-
| [
|
|
419
|
-
| [
|
|
420
|
-
| [
|
|
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
|
|