Install
openclaw skills install @zw008/ai-guardianUse this skill whenever the user needs to observe or govern on-endpoint local LLMs running on Ollama, llama.cpp (llama-server), LM Studio, or a local single-node vLLM — inventory installed/running models with an allow/deny verdict (shadow-AI detection), inspect VRAM residency, model license/params/capabilities and server version, view the model policy, detect model provenance/digest drift (re-pulled or tampered weights; strong for Ollama/llama.cpp, id-only and honestly weaker for LM Studio/vLLM), scan a prompt for secrets / PII / source-code / jailbreak with a weighted risk band, route a prompt THROUGH a guard that scans + policy-gates + records + runs-if-allowed (guarded_generate / observe_chat), query the observed-usage log, and roll up anomalies (shadow models, digest drift, high-risk + blocked prompts). Always use this skill for "what local models are installed", "find shadow / unsanctioned AI models", "which model is loaded in VRAM", "scan this prompt for secrets/PII before sending", "stop secrets leaking into a local model", "block a prompt with an API key", "detect a jailbreak / prompt injection", "set a model allowlist / denylist", "detect a tampered / re-pulled model", "audit local LLM usage", "guard my llama.cpp / LM Studio / local vLLM endpoint", or "the complement to IGEL AI Armor". Do NOT use for GPU inference CLUSTERS (multi-node / fleet-scale vLLM / Ray serving) — this is for single-endpoint LOCAL LLMs; point cluster/serving work to inference-aiops. Also not for hypervisors, storage, backup, Kubernetes, or network devices. Passive inventory/state auditing plus opt-in route-through content governance, with a bundled governance harness (audit, policy, token budget, undo, risk-tiers). A transparent capture proxy is v0.2 roadmap.
openclaw skills install @zw008/ai-guardianDisclaimer: Community-maintained open-source project, not affiliated with, endorsed by, or sponsored by Ollama, IGEL, or any AI-security vendor. Product and trademark names belong to their owners. Source at github.com/AIops-tools/AI-Guardian under the MIT license.
Governed observability + governance for on-endpoint local LLMs (Ollama) —
21 MCP tools, every one wrapped with the bundled @governed_tool harness: a
local unified audit log under ~/.ai-guardian/, token/runaway budget guard,
undo-token recording, and descriptive risk tiers. It is the
complement to IGEL AI Armor: AI Armor governs whether a local model may run;
ai-guardian records what it did and gates what leaves in the prompt.
Ollama keeps no queryable prompt history (context is client-supplied each
request), so ai-guardian observes on two fronts: passive inventory / state
auditing over /api/tags, /api/ps, /api/show, /api/version; and opt-in
route-through content governance — a caller sends a prompt through
guarded_generate / observe_chat, which scans + policy-gates + records it and
only then calls Ollama.
Standalone: the governance harness is bundled in the package (
ai_guardian.governance) — no external skill-family dependency. A transparent capture proxy for other clients' traffic is v0.2 roadmap, and IGEL AI Armor interop is doc-level positioning.
| Group | Tools | Count | Read/Write |
|---|---|---|---|
| Inventory / state | list_models, running_models, model_details, server_status, vram_usage | 5 | read |
| Policy / provenance | policy_view, model_provenance | 2 | read |
| Content governance (read) | scan_prompt, usage_events, anomaly_report | 3 | read |
| Model lifecycle | pull_model (medium), remove_model (high), unload_model (medium) | 3 | write |
| Policy writes | set_model_allowlist, set_model_denylist, pin_model_digest (all medium) | 3 | write |
| Route-through guard | guarded_generate, observe_chat (medium) | 2 | write |
| Undo | undo_list, undo_apply | 2 | undo |
scan_prompt is pure (no Ollama call). guarded_generate / observe_chat block
when the prompt's risk band >= block_threshold (default high) or the model
is disallowed; blocked calls never reach Ollama and are recorded as blocked.
uv tool install ai-guardian-aiops
ai-guardian doctor # works zero-config against a local Ollama
ai-guardian init # optional: endpoint(s) + optional token + model allowlist
list_models / anomaly_report): unsanctioned models show allowed:falsescan_prompt): secrets / PII / source-code / jailbreak → a weighted risk band, no model callguarded_generate / observe_chat): scan + policy-gate + record, then run only if allowedmodel_provenance): current digest vs its pin → driftset_model_allowlist / set_model_denylist) and pin trusted digests (pin_model_digest)running_models / vram_usage) and audit observed usage (usage_events)Do NOT use when the target is a GPU inference cluster (multi-node serving) — that is a different tool in the AIops-tools line. Also not for hypervisors, storage appliances, backup products, container clusters, or network devices.
| If the user wants… | Use |
|---|---|
| On-endpoint local LLM (Ollama): scan prompts, shadow-AI, provenance, policy | ai-guardian (this skill) |
| GPU inference cluster serving/ops | another AIops-tools skill for cluster serving |
| Hypervisor / storage / backup / container / network ops | the matching AIops-tools skill |
ai-guardian doctor → confirm the Ollama endpoint is reachable before you
conclude a fleet has "no models" when it really has no connectivityai-guardian overview → endpoint status, model count, and what is loaded
right nowai-guardian model list (MCP: list_models) → every installed model with its
allow/deny verdict; anything allowed:false is shadow AIai-guardian guard anomalies (MCP: anomaly_report) → a one-shot rollup of
shadow models + digest drift + high-risk / blocked prompts, so you can tell a
single stray pull from a patternai-guardian model running / vram_usage → is the shadow model merely
installed, or actually loaded and consuming VRAM right now?set_model_allowlist(["llama3.*", "qwen*"])
→ future unsanctioned models are refused at pull_model. Reversible: the
prior list is captured as the undo descriptorai-guardian model remove <model> --dry-run, then re-run
without --dry-run → high risk, double confirmation, needs
AI_GUARDIAN_AUDIT_APPROVED_BY; the undo descriptor records a re-pullai-guardian undo list → undo apply <id> restores the
prior list exactly. If a removal was wrong, replaying the undo re-pulls
the model — but the weights come from the registry, so confirm the digest
afterwards with workflow 3 rather than assuming it is bit-identical.ai-guardian guard scan "…text…" (MCP: scan_prompt) → a pure call, no
model involved: deterministic findings (secrets / PII / code / jailbreak) plus
a weighted risk band. Use it to pre-check content offline before it ever
reaches a modelai-guardian guard policy (MCP: policy_view) → confirm which models are
permitted and what the current thresholds areguarded_generate(model, prompt, block_threshold="high") → the guard scans,
records to the usage log, and blocks before Ollama if the risk band is
>= high or the model is disallowedai-guardian guard usage (MCP: usage_events(allowed=False)) → review what
was caught. The raw prompt is never stored — only its length and redacted
findings, so reviewing the log cannot itself leak the secretai-guardian guard anomalies → confirm the rate of blocked prompts is falling
after you educate the user or fix the calling integrationusage_events is suspiciously empty
while running_models shows activity, you are looking at un-routed traffic,
not a clean fleet. A transparent capture proxy is a v0.2 roadmap item; until
then, treat guard coverage as coverage of what was routed, and say so.ai-guardian model list / model_details <model> → read the current digest
for the models you sanctionpin_model_digest(model, digest) → pin the trusted digest once, while you
still trust it. Pinning after a suspected compromise pins the compromiseai-guardian guard provenance (MCP:
model_provenance) → any model whose current digest differs from its pin
reports status: DRIFT — re-pulled or tampered weightsusage_events around the drift timestamp → was the drifted model used, and
for what, before you noticed?DRIFT is a statement about the digest, not about intent
— a legitimate upgrade drifts identically to tampering. Investigate before
removing: check whether a pull_model appears in the audit trail at
~/.ai-guardian/audit.db. If it does not, treat it as untrusted and remove
under workflow 1. Re-pin only once you have re-established what the digest
should be.ai-guardian overview → the endpoint's current state at a glanceai-guardian model list → the full inventory with allow/deny verdictsai-guardian guard provenance → every pinned model still matching its digestvram_usage + running_models → what is resident and whether the endpoint
has headroom for the model you are about to roll outunload_model <model> → free VRAM from an idle model without removing it
(reversible in practice — it reloads on next use)ai-guardian model pull <model> → the pull is checked against the allowlist,
so an unsanctioned rollout is refused rather than merely loggedai-guardian guard anomalies → a clean rollup is the exit criterion for the
reviewpull_model is refused, the model is not on the
allowlist — widen the policy deliberately with set_model_allowlist
(audited, reversible) rather than working around the guard. If the pull fails
on VRAM, unload_model an idle model first; the audit trail records the
failed attempt with status=error and no undo token.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 host and account you run it under (point it at a runtime the account
cannot administer, or hand the agent only the scan/observe tools). There is no
read-only switch, deny-rules file, or approval gate — content governance (the
model allow/deny policy and the guarded_generate block threshold) is a
separate, product-level control that stays.
~/.ai-guardian/audit.db (relocatable via AI_GUARDIAN_AIOPS_HOME): params, result, status, duration, and the risk tier. Observed local-LLM usage lives in a separate ~/.ai-guardian/usage.db.AI_GUARDIAN_AUDIT_APPROVED_BY / AI_GUARDIAN_AUDIT_RATIONALE are optional annotations recorded on the audit row (who/why); they are never required and never block.AI_GUARDIAN_RUNAWAY_MAX=0.remove_model supports --dry-run + double confirmation at the CLI and records an undo (re-pull); allowlist/denylist writes record an undo → the prior list.references/capabilities.md — full 21-tool + endpoint referencereferences/cli-reference.md — CLI command referencereferences/setup-guide.md — onboarding, optional token, and connectivity