Operate Kubernetes clusters with 55 audited tools — list resources, diagnose pod health, scale workloads, and manage rollouts safely.
Memory
proxy-aiops
Try itOperate Traefik, Caddy, and HAProxy with 28 governed tools for routing, health, TLS, and safe config writes.
What it does
A unified operations layer for Traefik, Caddy, and HAProxy reverse proxies. Provides read-only inspection of routes, services, upstreams, TLS certificates, and traffic metrics, plus four flagship RCA analyses (backend health, cert expiry, error rate, route conflicts). Supports governed writes on Caddy (config set/delete/load) and HAProxy (server drain/weight) with audit logging, undo tokens, and dry-run previews. All operations logged; credentials encrypted at rest.
When to use it
- Investigating 502/503/504 spikes by correlating error rates with backend health
- Sweeping TLS certificate expiry across an edge fleet before renewals
- Auditing routing configuration for shadowed or dead routes
- Safely draining or adjusting server weights with an undo path available
The skill document
Proxy AIops
Disclaimer: Community-maintained open-source project, not affiliated with, endorsed by, or sponsored by Traefik Labs, the Caddy project, HAProxy Technologies, or the HAProxy project. Traefik, Caddy and HAProxy are trademarks of their respective owners. Source at github.com/AIops-tools/Proxy-AIops under the MIT license.
Governed reverse-proxy operations — 28 MCP tools across Traefik (API +
/metrics), Caddy (admin API) and HAProxy (Data Plane API v2), every
one wrapped with the bundled @governed_tool harness: a local unified audit
log under ~/.proxy-aiops/, policy engine, token/runaway budget guard,
undo-token recording, and descriptive risk tiers. A per-target
platform field selects the API shape, so the same tools work on all three
proxies and one config can span a mixed edge. An explicit support matrix
raises teaching errors for ops a platform cannot do — never a silent no-op.
Credentials are stored encrypted (~/.proxy-aiops/secrets.enc, Fernet +
scrypt) — never plaintext on disk; Traefik/Caddy secrets are optional
(unauthenticated localhost is the common case).
Standalone: the governance harness is bundled in the package (
proxy_aiops.governance) — no external skill-family dependency. Behaviour is covered by a mock-based test suite;docs/VERIFICATION.mdis the checklist for a live run (all three platforms are free/self-hostable, so a small lab is enough).
What This Skill Does
| Group | Tools | Count | R/W |
|---|---|---|---|
| Status | proxy_overview, version_info, list_entrypoints | 3 | read |
| Routes | list_routes, route_detail, find_route | 3 | read |
| Services | list_services, service_detail, list_upstreams, upstream_detail, list_middlewares | 5 | read |
| Certificates | list_certificates | 1 | read |
| Traffic | traffic_stats, error_counters | 2 | read |
| Config | config_snapshot, search_config, get_config_value | 3 | read |
| Flagship analyses | backend_health_rca, cert_expiry_sweep, error_rate_rca, route_conflict_analysis | 4 | read |
| Writes (caddy) | set_config_value (med), delete_config_path (high), load_config (high) | 3 | write |
| Writes (haproxy) | set_server_state, set_server_weight | 2 | write (med) |
| Undo | undo_list, undo_apply | 2 | read / write |
The four flagship analyses are transparent heuristics that report their
numbers, never a black-box verdict: backend_health_rca groups down upstreams
per service and maps the health-check failure class (connection refused / L4
timeout / TLS / L7 / DNS / maint) to a cause + action; cert_expiry_sweep
buckets certs by days-to-expiry with per-platform renewal hints;
error_rate_rca ranks services by 5xx share vs the fleet baseline and maps
the dominant code (502/503/504/500) to a cause; route_conflict_analysis
finds shadowed routes, dead routes, and redirect loops.
Quick Install
uv tool install proxy-aiops
proxy-aiops init # wizard: pick platform (traefik/caddy/haproxy) + optional encrypted secret
proxy-aiops doctor
When to Use This Skill
- Get a one-shot snapshot (
overview/version_info/list_entrypoints) - Investigate 502/503/504 spikes (
error_rate_rca) → dominant code → cause - Find why an upstream/backend is down (
list_upstreams,backend_health_rca) - Sweep TLS cert expiry across the edge (
certs --sweep/cert_expiry_sweep) - Audit routing hygiene (
route_conflict_analysis— shadowed/dead routes, redirect loops) and answer "which route serves this host?" (find_route) - Safely drain/return an haproxy server (
set_server_state, reversible + undo-recorded) or adjust its weight (set_server_weight) - Safely edit caddy config (
set_config_value/delete_config_path/load_config— prior config captured, undo replays the restore)
Do NOT use when the target is not a Traefik/Caddy/HAProxy proxy — route hypervisor, storage, backup, cluster, network-device, or OT/industrial work to the appropriate other AIops-tools skill. Do NOT use for firewall rules — use firewall-aiops.
Related Skills — Skill Routing
| If the user wants… | Use |
|---|---|
| Traefik / Caddy / HAProxy proxy ops | proxy-aiops (this skill) |
| Firewall rules / NAT / gateway health | firewall-aiops |
| A non-proxy platform (hypervisor, storage, backup, cluster, network devices, OT edge) | the appropriate other AIops-tools skill |
| Managed cloud load balancers | out of scope for this tool |
Common Workflows
1. A 5xx spike — is it the app or the backend?
proxy-aiops doctor→ confirm the proxy's API is reachable before you trust any number that follows.proxy-aiops overview→ the one-shot picture: platform/version, entrypoints, and route/service counts, so you know the blast radius.proxy-aiops analyze errors --rate 5 --min-requests 100→ services ranked by 5xx share against the fleet baseline, with the dominant status code mapped to a cause (503 no upstream available / 502 connection failed / 504 timeout / 500 app error). The--min-requestsfloor keeps a single failed request on a quiet service from outranking a real incident.proxy-aiops analyze health --service→ the same service from the backend side: which servers are failing their health check and what class of failure it is. If the servers are healthy, the 5xx is coming from the application, and no amount of proxy work will fix it — hand it off.- If one server is the problem, take it out of rotation gracefully:
proxy-aiops services upstreamsto get the exact server name, thenproxy-aiops server state drain --dry-runand re-run for real (double-confirm; the prior state is captured as the undo descriptor).drainlets in-flight connections finish — reach formaintonly when you need it out now. - Re-run
proxy-aiops analyze errorsto confirm the rate dropped. - Failure branch: if draining one server just moves the load onto the next one to
fall over, you are shedding capacity you do not have — put it straight back with
proxy-aiops undo list→undo apply(restores the prior state, not a hardcodedready) before you drain a second. Noteserver state/server weightare haproxy runtime operations; on a traefik or caddy target the tool raises a teaching error naming the right mechanism rather than silently doing nothing.
2. Certificates about to expire
proxy-aiops certs --sweep --warn-days 30 --critical-days 7→ the TLS domain inventory with each cert live-probed on port 443 and bucketed expired / critical / warning, plus a renewal hint.proxy-aiops certs --sweep --port 8443for any entrypoint not on 443 — the sweep probes one port at a time, so a non-standard listener needs its own pass.proxy-aiops overviewandproxy-aiops routes list→ map each expiring domain back to the routes that actually serve it, so you renew what is in use and ignore what is not.- Renew through the platform's own mechanism (ACME for traefik/caddy), then re-run the sweep to confirm the new expiry date.
- Failure branch: on a haproxy target the sweep returns a teaching note rather
than results — haproxy serves certs from
.pemfiles on disk, outside this tool's API surface, so check those with your file-level tooling. If a probe fails to connect, distinguish "cert is bad" from "port is closed" withproxy-aiops routes findbefore assuming a certificate problem.
3. "Why is this hostname hitting the wrong backend?"
proxy-aiops routes find --path /api→ best-matching routes, most specific first. This is the direct answer to "who serves this request".proxy-aiops routes show→ the full rule, priority, middlewares, and the service it points at.proxy-aiops analyze conflicts→ shadowed routes (fully covered by an earlier or higher-priority route), dead routes (the service is missing, or has zero servers up), and redirect loops — each finding names the covering route or the missing service rather than just flagging a number.proxy-aiops services showandproxy-aiops services upstreams→ confirm the service the route resolves to actually has healthy servers behind it.- Fix the ordering/priority at its source: on caddy via
proxy-aiops config set(recipe 4); on traefik, in the provider that generated the route (labels, file provider, CRD) — traefik's API is read-only, and the tool says so explicitly instead of pretending to write. - Failure branch: if
routes findreturns nothing, the request is not matching any route at all — checkproxy-aiops overviewfor the entrypoints and confirm the listener you think you are hitting exists. A "dead route" finding whose service is missing usually means a config was applied referencing a service that was never created; fixing the route without creating the service just moves the 404.
4. Edit a caddy config subtree, reversibly
proxy-aiops config snapshot→ the whole current config; take this before you change anything, so you have an out-of-band copy independent of the undo store.proxy-aiops config search→ locate the config path holding the value you want (searching beats guessing at caddy's nested JSON paths).proxy-aiops config get→ read the exact current subtree you are about to replace.proxy-aiops config set '' --dry-run→ preview the write.- Re-run without
--dry-run(double-confirm) — the prior subtree is fetched and captured, and an inverse undo descriptor is recorded with an_undo_id. - Validate:
proxy-aiops routes list,proxy-aiops analyze conflicts, andproxy-aiops analyze errors→ confirm the edit did what you meant and did not shadow an existing route. - Failure branch:
proxy-aiops undo list→undo applyrestores the captured subtree exactly. If the config is too broken for a targeted undo, theconfig snapshotfrom step 1 is your fallback viaload_config— but noteload_configandconfig deleteare risk=high with--dry-run+ double confirmation at the CLI.load_configreplaces the entire config, so it is a last resort, not a first instinct.
Governance & Safety
The skill delivers reads and writes and records them; it does not decide whether a write is permitted. That is your agent's judgement, or the permission of the account you connect it with (a read-only HAProxy Data Plane API role, a scoped Traefik/Caddy admin API — writes then fail at the server). There is no read-only switch, policy file, or approval gate.
- Audit is the guarantee, and it is not bypassable. Every operation — MCP and CLI alike — is logged to
~/.proxy-aiops/audit.db(relocatable viaPROXY_AIOPS_HOME): params (secrets redacted), result, status, duration, and the risk tier. The CLI writes the same row the MCP path does. PROXY_AUDIT_APPROVED_BY/PROXY_AUDIT_RATIONALEare optional annotations recorded on the audit row (who/why); they are never required and never block.- Runaway guard — a safety backstop, not authorization: the same call looped in a tight window trips a circuit breaker. Disable with
PROXY_RUNAWAY_MAX=0. - Writes support
--dry-run/dry_run=Trueand double confirmation at the CLI; CLI writes execute through the same governed tools, so they are audited + undo-recorded. - Reversible writes capture the real fetched before-state and record an inverse descriptor that replays against the tool's own signature.
- Traefik targets accept no writes at all — the support matrix teaches you to edit the provider source instead.
References
references/capabilities.md— full tool + platform + API-path referencereferences/cli-reference.md— CLI command referencereferences/setup-guide.md— onboarding, credentials, and connectivitydocs/VERIFICATION.md— live-verification checklist (what the mock suite covers, and what a real-proxy run must prove)
Questions people ask
- Does this work with Traefik, Caddy, and HAProxy in the same setup?
- Yes — a per-target platform field selects the API shape; one config spans mixed edges. The support matrix raises teaching errors for platform-specific limitations rather than silent failures.
- What governance does this add to my operations?
- Every operation (read or write) is logged to ~/.proxy-aiops/audit.db with params redacted, result, status, duration, and risk tier. Write operations capture the before-state and record an undo token; writes also support --dry-run and double confirmation at the CLI.
- How does cert expiry scanning work on HAProxy?
- The sweep returns a teaching note rather than results because HAProxy serves certs from .pem files on disk, outside this tool's API surface. On Traefik and Caddy, certs are inventoried and live-probed on port 443 (or a configurable port) and bucketed by expiry window.
Related skills
Diagnose which mental domain is holding you back before choosing a cognitive intervention.
Measure whether a transformation changed your growth engine or just added a one-time bump.
Replace vague hunches with calibrated probability estimates you can track and improve over time.
Turn China 3C launch inputs into executable routes, messaging, channel actions, risk checks, and review decisions.
Prioritize growth directions with a 2×2 risk framework — pick one bet and commit.
More from zw008
Browse all skillsOperate VMware VMs, deployments, clusters, guest tasks, and alarms with plan and rollback support.
Inspect VMware health, inventory, alarms, events, and performance without changing infrastructure.
Query Aria Operations metrics, alerts, capacity forecasts, anomalies, and reports from CLI or MCP.
Manage AVI services and pools, and diagnose AKO ingress, sync, certificates, analytics, and health.
Manage Supervisor Namespaces and TKC cluster lifecycles in vSphere Kubernetes Service.
Manage NSX segments, gateways, routing, IP pools, health checks, and connectivity diagnostics.