Governed AI-ops for Cisco Meraki network fabrics: uplink RCA, health scoring & config-drift with a built-in governance harness (audit, budget, undo, risk tiers)
Project description
Fabric AIops (preview)
Disclaimer: Community-maintained open-source project. Not affiliated with, endorsed by, or sponsored by Cisco, Meraki, or any network-controller vendor. "Cisco" and "Meraki" and all product/trademark names belong to their respective owners. MIT licensed.
Governed AI-ops for network fabrics managed through a cloud controller —
starting with the Cisco Meraki Dashboard API (organizations → networks →
devices) — with a built-in governance harness: unified audit log, policy
engine, token/runaway budget guard, undo-token recording, and graduated-autonomy
risk tiers. Multi-platform by construction: a registry keyed by platform
means Catalyst Center or Arista CVP can be added later as additional platforms
without touching the ops/CLI/MCP layers — Meraki is the one platform shipped in
v0.1. Preview — mock-validated only, not verified against a live Meraki org.
What it does
Three flagship signature analyses, plus the guarded reads and writes around them:
- Uplink loss & latency RCA — pull MX WAN uplink loss + latency across an org, rank the worst uplinks by a composite of average loss and latency, and map each degraded uplink to a likely cause + recommended action. Every ranking carries its numbers, not a black-box verdict.
- Network health score — a composite 0-100 score per network from device online %, uplink health %, and an alert-severity penalty (weighted 0.5/0.3/0.2), with every component returned so the number is explainable.
- Config template drift — for networks bound to a config template, list the settings that have drifted from the template (expected vs actual).
What works
- CLI (
fabric-aiops ...):init,overview,org,network,device,client,health,remediate,secret,doctor,mcp. - MCP server (
fabric-aiops mcporfabric-aiops-mcp): 32 tools (24 read, 8 write), every one wrapped with the bundled@governed_toolharness. - Encrypted credentials: the Meraki API key lives in an encrypted store
~/.fabric-aiops/secrets.enc(Fernet + scrypt) — never plaintext on disk. Unlock with a master password fromFABRIC_AIOPS_MASTER_PASSWORD(MCP/CI) or an interactive prompt (CLI). - Reversibility: mutating writes fetch the real before-state first and record a faithful inverse (
update_device/update_network_vlanrestore prior values;claim↔remove;bind↔unbind/rebind). Irreversible ops (reboot_device,blink_device_leds) record the prior state for audit but declare no undo. - Safety: every state-changing CLI op supports
--dry-runand requires double confirmation; every write MCP tool takes adry_runpreview.
Capability matrix (32 MCP tools)
| Domain | Tools | Count | R/W |
|---|---|---|---|
| Overview | overview |
1 | read |
| Organizations | org_list, org_get, org_licensing, org_admins, org_device_statuses, org_api_requests |
6 | read |
| Networks | network_list, network_get, network_vlans, network_alerts, network_traffic |
5 | read |
| Devices | device_inventory, device_status, device_uplinks, switch_ports, wireless_ssids |
5 | read |
| Clients | client_list, client_get, client_usage, client_connectivity |
4 | read |
| Health (flagship) | uplink_loss_and_latency_rca, network_health_score, config_template_drift |
3 | read |
| Remediation | reboot_device, claim_devices_into_network, remove_device_from_network, bind_network_to_template, unbind_network_from_template |
5 | write (high) |
update_device, update_network_vlan |
2 | write (medium) | |
blink_device_leds |
1 | write (low) |
network_health_score and config_template_drift are injected-only (they score
data you already hold); uplink_loss_and_latency_rca accepts injected records
for offline analysis or pulls live from a configured target. Device models carry
a product-type prefix: MX appliance, MS switch, MR wireless AP, MV
camera, MG cellular gateway.
Quick start
uv tool install fabric-aiops # or: pipx install fabric-aiops
fabric-aiops init # wizard: add a target + store the Meraki API key (encrypted)
fabric-aiops doctor # verify config, secrets, connectivity
fabric-aiops overview # one-shot fabric fleet health
fabric-aiops health uplink-rca # rank worst MX WAN uplinks + cause/action
fabric-aiops device inventory --model MS # switches in the org
Run as an MCP server (stdio):
export FABRIC_AIOPS_MASTER_PASSWORD=... # unlock secrets non-interactively
fabric-aiops-mcp
Governance
Every MCP tool passes through the bundled @governed_tool harness:
- Audit — every call (params, result, status, duration, risk tier, approver,
rationale) is logged to
~/.fabric-aiops/audit.db(relocatable viaFABRIC_AIOPS_HOME). - Budget / runaway guard — token and call budgets trip a circuit breaker.
- Risk tiers — graduated autonomy; high-risk ops can require a named approver
(
FABRIC_AUDIT_APPROVED_BY/FABRIC_AUDIT_RATIONALE— the env-var names the bundled harness reads). - Undo recording — reversible writes record an inverse descriptor built from the fetched before-state.
Scope
This is the network-fabric / controller member of the AIops-tools family
(governed AI-ops with audit + budget + undo + risk tiers). Do NOT use it for
OT / industrial edge (Modbus, OPC-UA, PROFINET) — see the separate
industrial-aiops line — nor for device-level CLI/SSH network automation.
Missing a capability?
Coverage is intentionally a curated subset of the Meraki Dashboard API. Missing a call, a device family, or want another controller platform (Catalyst Center, Arista CVP)? Open an issue or PR — contributions welcome.
Status
Preview — mock-validated only, not verified against a live Meraki org. The
Dashboard API paths are modelled from the public API shape and need live
verification. fabric-aiops doctor is the fastest live check.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fabric_aiops-0.1.2.tar.gz.
File metadata
- Download URL: fabric_aiops-0.1.2.tar.gz
- Upload date:
- Size: 134.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d27ce637b70c3ff724d9afec1d722e9e12fa2616923e31dac154fd7cfceae93c
|
|
| MD5 |
058315b2cb4961d8f20b42d958a39e83
|
|
| BLAKE2b-256 |
5ae4bd68cf2437f0ad981d8f6bfb391ce9102e38d3e3b70045045b24f9722bf3
|
Provenance
The following attestation bundles were made for fabric_aiops-0.1.2.tar.gz:
Publisher:
publish.yml on AIops-tools/Fabric-AIops
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fabric_aiops-0.1.2.tar.gz -
Subject digest:
d27ce637b70c3ff724d9afec1d722e9e12fa2616923e31dac154fd7cfceae93c - Sigstore transparency entry: 2160869384
- Sigstore integration time:
-
Permalink:
AIops-tools/Fabric-AIops@2e7446584d62b6b227128fdcc0a491f0f69c6101 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/AIops-tools
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2e7446584d62b6b227128fdcc0a491f0f69c6101 -
Trigger Event:
release
-
Statement type:
File details
Details for the file fabric_aiops-0.1.2-py3-none-any.whl.
File metadata
- Download URL: fabric_aiops-0.1.2-py3-none-any.whl
- Upload date:
- Size: 85.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c1bf8515c1b26ef5a06b42ce0280723afe632a0aab59463b971d1d1eed7fb84
|
|
| MD5 |
512906733df00b40c26b27c8cab4c56c
|
|
| BLAKE2b-256 |
d14a30c9d10f8e37f411fb0f424149400b507884bd03ebded06f0a7b29201bbc
|
Provenance
The following attestation bundles were made for fabric_aiops-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on AIops-tools/Fabric-AIops
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fabric_aiops-0.1.2-py3-none-any.whl -
Subject digest:
0c1bf8515c1b26ef5a06b42ce0280723afe632a0aab59463b971d1d1eed7fb84 - Sigstore transparency entry: 2160869549
- Sigstore integration time:
-
Permalink:
AIops-tools/Fabric-AIops@2e7446584d62b6b227128fdcc0a491f0f69c6101 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/AIops-tools
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2e7446584d62b6b227128fdcc0a491f0f69c6101 -
Trigger Event:
release
-
Statement type: