Unifi Ops logo

Unifi Ops

Organization
serversathome
unifi-ops

Read and analyze the UniFi router/console: WAN and internet health, adopted access points and switches, connected clients, VLANs and networks, firmware status. Use this whenever the user asks about the router, the gateway, the internet connection, WiFi, an access point, a UniFi switch, what is connected to the network, who is using bandwidth, a VLAN, or the ISP, and whenever a problem might be upstream of a host rather than on it ("the internet is down", "wifi is slow", "is my WAN up", "did the router reboot"). This is READ-ONLY: it can report and explain and recommend, but it cannot change any UniFi setting, and it must never claim otherwise.

Overview

Publisherserversathome
Repositoryhomelabhero
Skill nameunifi-ops
Stars
104
Forks
4
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by serversathome on GitHub. Read the source before you install it.

Installation

Install the Unifi Ops AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/serversathome/homelabhero/tree/main/ops/.claude/skills/unifi-ops
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/serversathome/homelabhero.git /tmp/homelabhero
mkdir -p .claude/skills
cp -r /tmp/homelabhero/ops/.claude/skills/unifi-ops .claude/skills/unifi-ops
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Unifi Ops in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Unifi Ops on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Unifi Ops is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

UniFi router (read-only)

The UniFi console is registered like any other host, but it is reached over its local API instead of SSH, so hh run does not apply to it. Everything goes through one command:

hh unifi <op> [alias] [args]

The alias can be omitted when only one console is registered, which is the normal case. hh list shows it with platform unifi and auth apikey.

THIS IS READ-ONLY. DO NOT TRY TO CHANGE THE NETWORK.

Say it plainly to yourself before every UniFi task: you can look, you cannot touch. This is not a preference or a default that a good enough reason can override. It is the point of the integration.

  • There is no command here that changes anything. No restart, no reboot, no adopt, no firmware upgrade, no port or VLAN or SSID or firewall edit, no client block, no config write of any kind. The broker behind hh unifi issues HTTP GET and physically cannot issue anything else.
  • The API key is minted under a View Only UniFi admin, so the console refuses writes even if something got past the broker.
  • Do not try to route around this. Do not look for another path to the router: not SSH to the gateway, not the UniFi mobile app, not curl against the API yourself, not a script that "just" restarts one access point. If you catch yourself planning any of that, stop. The answer is to tell the user what to change, not to change it.
  • If the user asks you to change a UniFi setting, do not refuse flatly and do not quietly do nothing. Say that HomelabHero's UniFi access is read-only on purpose, then give the operator the exact steps to do it themselves in the UniFi app: which screen, which setting, which value, and what they should expect to see afterwards. Offer to re-read the state once they have done it and confirm it took effect. That is the whole workflow, and it is a good one.

Why it is built this way: the router is the one device whose failure takes away the access you would need to fix it. A bad firewall rule, a mistaken VLAN change, or an ill-timed reboot can cut off every host, the command center, and your own way in, all at once, with no way back except physically standing in front of the hardware. Nothing an agent could usefully automate here is worth that risk. So the router is treated as a source of truth to read and reason about, and changes stay with the person.

Read capabilities/unifi.md for the full read surface and the exact ops. It is not loaded up front.

What you can read

hh unifi summary          the one-screen picture: WAN, internet, LAN, WiFi,
                          device counts, pending firmware, client count
hh unifi health           WAN / internet / LAN / WiFi subsystem status
hh unifi devices          adopted gear: name, model, state, IP, firmware
hh unifi clients          connected clients: name, IP, MAC, type
hh unifi networks         configured networks and VLANs
hh unifi info             console and Network application version
hh unifi sites            sites on the console (usually just one)
hh unifi device <id>      full JSON for one device
hh unifi stats <id>       latest statistics for one device
hh unifi ping             connectivity check

Start with summary. It answers most questions on its own, and it tells you whether to go deeper into devices, clients, or health.

For anything the named ops do not cover, there is a raw GET escape hatch. It is still read-only, and {site} / {siteName} are substituted for you:

hh unifi get '/proxy/network/integration/v1/sites/{site}/firewall/policies'
hh unifi get '/proxy/network/api/s/{siteName}/stat/event?_limit=20'
hh unifi get '/proxy/network/api/s/{siteName}/rest/portforward'
hh unifi get '/proxy/network/api/s/{siteName}/rest/wlanconf'

Two APIs sit under /proxy/network/: the documented integration API at /integration/v1/..., and the older private API at /api/s/{siteName}/... which still holds things the new one has no equivalent for. Prefer the former; reach for the latter when it is the only source.

Reading the output

summary and health report four subsystems. What each one failing means:

  • WAN not ok: the internet link itself. Check wan_ip is present and plausible. No IP means the connection to the ISP is down, which is upstream of everything and not something in the homelab to fix.
  • Internet (www) not ok: the link is up but quality is poor. Latency and throughput numbers are in the same line; compare them against what the user pays for before calling it a fault.
  • LAN not ok: usually a switch offline or a port down. Cross-check with hh unifi devices for anything not ONLINE.
  • WiFi (wlan) not ok: an access point is offline or disconnected. Again, devices names which one.

An OFFLINE device in devices is the single most useful signal here. If a host is unreachable and the access point or switch it hangs off is offline, the network is the cause and there is no point troubleshooting the host.

How this fits the rest of the ladder

The escalation ladder in CLAUDE.md ends at the network layer, and this is the top of it. When several unrelated things are broken at once, check here early: one offline switch explains a dozen unreachable services, and it takes one command to rule in or out.

Pair it with netbird-ops for the mesh, cloudflare-ops for ingress, and network-diag for DNS resolution and per-host interfaces. UniFi tells you about the fabric and the gear; network-diag tells you about the overlay and the hosts on it.

Useful pairing in practice:

  1. hh unifi summary to see whether the fabric is healthy at all.
  2. hh unifi devices to find anything offline.
  3. hh unifi clients to confirm a specific machine is actually on the network, and on which network or VLAN.
  4. Then hh test <alias> and the network-diag skill for the hosts themselves.

Recording what you learn

The topology notes in infra/network.md are the place for anything durable you discover here: subnets and VLANs, which access point covers which area, the normal client count, what the internet numbers usually look like. Reading the live console is how you learn it; writing it down is how it stays learned. When an incident is resolved, the runbook entry belongs in runbooks/ as usual.

Frequently asked questions

What does the Unifi Ops AI skill do?

Read and analyze the UniFi router/console: WAN and internet health, adopted access points and switches, connected clients, VLANs and networks, firmware status. Use this whenever the user asks about the router, the gateway, the internet connection, WiFi, an access point, a UniFi switch, what is connected to the network, who is using bandwidth, a VLAN, or the ISP, and whenever a problem might be upstream of a host rather than on it ("the internet is down", "wifi is slow", "is my WAN up", "did the router reboot"). This is READ-ONLY: it can report and explain and recommend, but it cannot change...

Why use Unifi Ops on TypingMind?

Because you install it once and use it with any model. Unifi Ops is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Unifi Ops in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/serversathome/homelabhero/tree/main/ops/.claude/skills/unifi-ops. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Unifi Ops?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Unifi Ops?

As many as you like. As long as a model supports skills, you can use Unifi Ops with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Unifi Ops AI skill free?

It is published on GitHub by serversathome. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇