{"id":"f19a4df3-58ad-402a-960c-bf50ffcbab2d","shortId":"78RAP7","kind":"skill","title":"unifly","tagline":">-","description":"# unifly: UniFi Network Management\n\nunifly is a Rust CLI for managing Ubiquiti UniFi network infrastructure. It\nunifies the modern Integration API (REST, API key), the Session API (cookie\nplus CSRF), and Site Manager cloud APIs behind a single coherent interface,\nplus real-time WebSocket event streaming. 28 top-level commands cover devices,\nclients, networks, WiFi, firewall policies and zones, NAT policies, ACLs, DNS,\ntraffic matching lists, hotspot vouchers, DPI, stats, backups, cloud fleet\nqueries, and a raw API escape hatch.\n\nUnique capabilities worth leading with when the user's task suits them:\n\n- **Dual-API enrichment** merges Integration and Session data (e.g. client\n  bytes, hostnames, uplink MACs only exist in the Session API; configuration CRUD only\n  exists in Integration). On UniFi OS, API key mode can already reach session\n  HTTP; Hybrid adds the WebSocket session for live monitoring.\n- **Real-time event streaming** via `unifly events watch` over WebSocket.\n- **Firewall policy reordering** via `reorder --get` / `reorder --set` for\n  deterministic, round-trippable ordering edits.\n- **`unifly api` raw passthrough** for endpoints unifly does not wrap.\n- **Multi-profile** (`-p home`, `-p office`) for managing multiple controllers\n  from one command line.\n\n## Prerequisites\n\nVerify availability before running any command:\n\n```bash\ncommand -v unifly >/dev/null 2>&1 && unifly --version || echo \"unifly not installed\"\n```\n\nIf unifly is not installed, prefer `brew install hyperb1iss/tap/unifly` on\nmacOS or `cargo install --git https://github.com/hyperb1iss/unifly.git unifly`\nelsewhere. After install, run `unifly config init` for a local controller or\n`unifly config cloud-setup` for Site Manager. See `examples/config.toml` for\nmanual configuration.\n\n## Authentication Modes\n\nunifly supports four modes. **API key mode is enough for most HTTP\nautomation on UniFi OS controllers.** Choose **Hybrid** when the task needs\nlive WebSocket features (`events watch`) or you want maximum compatibility.\n\n| Mode          | Credentials             | What It Unlocks                                                                                              |\n| ------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------ |\n| `integration` | API key                 | Integration API plus session HTTP on UniFi OS: CRUD, device commands, stats, reservations, admin, event list |\n| `session`     | Username + password     | Session HTTP + WebSocket only: events watch, stats, device commands, DPI control, admin, backups             |\n| `hybrid`      | API key + username/pass | Everything above, including session WebSocket plus enriched records with maximum controller compatibility    |\n| `cloud`       | Site Manager API key    | Connector-routed Integration CRUD plus `unifly cloud` fleet commands against `api.ui.com`                    |\n\nSession WebSocket still rejects API keys, so `events watch` needs `session` or\n`hybrid`. Cloud mode does **not** expose Session API endpoints or WebSocket\nstreaming.\n\nFor the complete command-to-API gate matrix (which commands require which\nauth mode), consult `references/concepts.md`.\n\n## Command Inventory\n\nAll commands follow `unifly [global-flags] <command> <action> [args]`.\n\n| Command         | Aliases    | Actions                                                                                                                                                                                                                                                                                                                                                                                           |\n| --------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `devices`       | `dev`, `d` | list, get, adopt, remove, restart, locate, port-cycle, stats, pending, upgrade, provision, speedtest, tags                                                                                                                                                                                                                                                                                        |\n| `clients`       | `cl`       | list, find, get, roams, wifi, authorize, unauthorize, block, unblock, kick, forget, reservations (`res`), set-ip, remove-ip                                                                                                                                                                                                                                                                       |\n| `cloud`         |            | hosts [get], sites, switch, devices, isp [query], sdwan [get, status]                                                                                                                                                                                                                                                                                                                             |\n| `networks`      | `net`, `n` | list, get, create, update, delete, refs                                                                                                                                                                                                                                                                                                                                                           |\n| `wifi`          | `w`        | list, get, neighbors, channels, create, update, delete                                                                                                                                                                                                                                                                                                                                            |\n| `firewall`      | `fw`       | policies {list, get, create, update, patch, delete, reorder}, zones {list, get, create, update, delete}                                                                                                                                                                                                                                                                                           |\n| `nat`           |            | policies {list, get, create, update, delete}                                                                                                                                                                                                                                                                                                                                                      |\n| `acl`           |            | list, get, create, update, delete, reorder                                                                                                                                                                                                                                                                                                                                                        |\n| `dns`           |            | list, get, create, update, delete                                                                                                                                                                                                                                                                                                                                                                 |\n| `traffic-lists` |            | list, get, create, update, delete                                                                                                                                                                                                                                                                                                                                                                 |\n| `hotspot`       |            | list, get, create, delete, purge                                                                                                                                                                                                                                                                                                                                                                  |\n| `events`        |            | list, watch                                                                                                                                                                                                                                                                                                                                                                                       |\n| `alarms`        |            | list, archive, archive-all                                                                                                                                                                                                                                                                                                                                                                        |\n| `stats`         |            | site, device, client, gateway, dpi                                                                                                                                                                                                                                                                                                                                                                |\n| `dpi`           |            | apps, categories, status, enable, disable                                                                                                                                                                                                                                                                                                                                                         |\n| `topology`      | `topo`     | _(no subcommands)_                                                                                                                                                                                                                                                                                                                                                                                |\n| `system`        | `sys`      | info, health, sysinfo, backup {create, list, download, delete}, reboot, poweroff                                                                                                                                                                                                                                                                                                                  |\n| `settings`      |            | list, get, set, export                                                                                                                                                                                                                                                                                                                                                                            |\n| `sites`         |            | list, create, delete                                                                                                                                                                                                                                                                                                                                                                              |\n| `admin`         |            | list, invite, revoke, update                                                                                                                                                                                                                                                                                                                                                                      |\n| `wans`          |            | list                                                                                                                                                                                                                                                                                                                                                                                              |\n| `vpn`           |            | servers {list, get}, tunnels {list, get}, status, health, site-to-site {list, get, create, update, delete}, remote-access {list, get, create, update, suggest-port, download-config, delete}, clients {list, get, create, update, delete}, connections {list, get, restart}, peers {list, get, create, update, delete, subnets}, magic-site-to-site {list, get}, settings {list, get, set, patch} |\n| `radius`        |            | profiles                                                                                                                                                                                                                                                                                                                                                                                          |\n| `countries`     |            | _(no subcommands)_                                                                                                                                                                                                                                                                                                                                                                                |\n| `api`           |            | Raw API passthrough (GET/POST/PUT/PATCH/DELETE any path)                                                                                                                                                                                                                                                                                                                                          |\n| `config`        |            | init, cloud-setup, show, set, profiles, use, set-password                                                                                                                                                                                                                                                                                                                                         |\n| `tui`           |            | _(no subcommands)_                                                                                                                                                                                                                                                                                                                                                                                |\n| `completions`   |            | bash, zsh, fish, powershell, elvish                                                                                                                                                                                                                                                                                                                                                               |\n\nFor flag details and gotchas, consult `references/commands.md`. Every entity\ncommand accepts `--help` at runtime as the authoritative reference.\n\n## Output Formats\n\nAll list and get commands accept `--output` / `-o`:\n\n| Format         | Flag              | Use Case                              |\n| -------------- | ----------------- | ------------------------------------- |\n| `table`        | `-o table`        | Human display (default)               |\n| `json`         | `-o json`         | Agent processing, pipe to `jq`        |\n| `json-compact` | `-o json-compact` | Single-line JSON for scripting        |\n| `yaml`         | `-o yaml`         | Config file output                    |\n| `plain`        | `-o plain`        | One ID per line for `xargs` pipelines |\n\n**Default for agent use: `-o json`.** Emit structured output, pipe through\n`jq`, and only fall back to `table` when the result is being shown to a human.\n\n## Power Patterns\n\nThese patterns unlock unifly's most distinctive capabilities. For full\nrecipes with runnable shell scripts, consult `references/workflows.md`.\n\n### `--from-file` for complex create/update\n\nMost entities accept `--from-file <path.json>` (or `-F`) instead of flag\nsalad: `networks`, `wifi`, `firewall policies`, `firewall zones`, `nat policies`,\n`acl`, `dns`, `traffic-lists`, `hotspot`, `vpn site-to-site`, `vpn remote-access`,\n`vpn clients`, and `vpn peers`. Construct the JSON payload, validate it, then\napply. See `examples/` for payload templates.\n\n```bash\nunifly networks create -F examples/network-iot-vlan.json\nunifly firewall policies create -F examples/firewall-block-iot.json\n```\n\n### Real-time event streaming\n\n```bash\n# All events\nunifly events watch\n\n# Filter by EventCategory (case-insensitive): Device, Client, Network,\n# System, Admin, Firewall, Vpn, Unknown\nunifly events watch --types \"Firewall,Admin\"\n\n# JSON stream for piping into alerting\nunifly events watch --types Client -o json | jq -c 'select(.severity == \"warning\")'\n```\n\n### Firewall policy reorder (round-trippable)\n\n```bash\n# Read current order for a zone pair\nunifly firewall policies reorder --source-zone <zid> --dest-zone <zid> --get\n\n# Write back an explicit order\nunifly firewall policies reorder --source-zone <zid> --dest-zone <zid> \\\n  --set \"<id1>,<id2>,<id3>\"\n```\n\n### Raw API escape hatch\n\nFor endpoints unifly does not wrap (including UniFi v2 routes and Integration\npaths), use `unifly api`. It routes through the Session client, so CSRF token\nmanagement and session caching are automatic.\n\n```bash\nunifly api \"v2/api/site/default/traffic-flow-latest-statistics\"\nunifly api \"cmd/stamgr\" -m post -d '{\"cmd\":\"kick-sta\",\"mac\":\"aa:bb:cc:dd:ee:ff\"}'\nunifly api \"api/s/default/set/setting/teleport\" -m put -d '{\"enabled\":true}'\n```\n\n### Session API VPN payloads and settings\n\n`unifly vpn site-to-site` wraps Session API `rest/networkconf` records whose\n`purpose` is `site-vpn`. This is the current CRUD path for manual IPsec and\nOpenVPN site-to-site records exposed by the controller.\n\n```bash\nunifly vpn site-to-site list -o json\nunifly vpn site-to-site get <id> -o json\nunifly vpn site-to-site create -F site-to-site.json\nunifly vpn site-to-site update <id> -F site-to-site.json\nunifly vpn site-to-site delete <id>\n```\n\n`unifly vpn remote-access` wraps Session API `rest/networkconf` records whose\n`purpose` is `remote-user-vpn`. This is the current CRUD path for L2TP,\nOpenVPN, and WireGuard remote-access servers exposed by the controller.\n\n```bash\nunifly vpn remote-access list -o json\nunifly vpn remote-access get <id> -o json\nunifly vpn remote-access create -F remote-access.json\nunifly vpn remote-access update <id> -F remote-access.json\nunifly vpn remote-access suggest-port -o json\nunifly vpn remote-access download-config <id> --path .\nunifly vpn remote-access delete <id>\n```\n\n`unifly vpn clients` wraps Session API `rest/networkconf` records whose\n`purpose` is `vpn-client`. This is the current CRUD path for configured\nOpenVPN and WireGuard client profiles exposed by the controller.\n\n```bash\nunifly vpn clients list -o json\nunifly vpn clients get <id> -o json\nunifly vpn clients create -F vpn-client.json\nunifly vpn clients update <id> -F vpn-client.json\nunifly vpn clients delete <id>\n```\n\n`unifly vpn peers` wraps the Session v2 API WireGuard peer endpoints for\nremote-access VPN servers. `list` can enumerate all peers or scope to a\nsingle server ID; `create`, `update`, and `delete` require the parent\nremote-access server ID.\n\n```bash\nunifly vpn peers list -o json\nunifly vpn peers list <server-id> -o json\nunifly vpn peers get <server-id> <peer-id> -o json\nunifly vpn peers create <server-id> -F peer.json\nunifly vpn peers update <server-id> <peer-id> -F peer.json\nunifly vpn peers delete <server-id> <peer-id>\nunifly vpn peers subnets -o json\n```\n\n`unifly vpn connections` wraps the Session v2 API VPN client connection\ninventory exposed at `v2/api/site/<site>/vpn/connections`. `restart`\nissues the same controller action the web UI uses for a single connection.\n\n```bash\nunifly vpn connections list -o json\nunifly vpn connections get <id> -o json\nunifly vpn connections restart <id>\n```\n\n`unifly vpn magic-site-to-site` wraps the Session v2 API\n`magicsitetositevpn/configs` inventory endpoint. It is currently\nread-only.\n\n```bash\nunifly vpn magic-site-to-site list -o json\nunifly vpn magic-site-to-site get <id> -o json\n```\n\n`unifly vpn settings` wraps the Session API `rest/setting` records for the VPN\nfeature toggles the controller exposes today: `teleport`,\n`magic-site-to-site-vpn`, `openvpn`, and `peer-to-peer`.\n\n```bash\nunifly vpn settings list -o json\nunifly vpn settings get peer-to-peer -o json\nunifly vpn settings set teleport --enabled true\nunifly vpn settings patch peer-to-peer -F peer-to-peer.json\n```\n\n`site-to-site get`, `remote-access get`, `clients get`, `connections get`,\n`peers get`, and `magic-site-to-site get` return redacted records with\nsummary fields and the sanitized controller payload under `fields`.\n\n`settings get` returns a redacted wrapper with `key`, `enabled`, and `fields`.\n`patch` accepts either the raw session setting body or that wrapper shape and\nwill send the inner `fields` object back to the controller.\n\n### Bulk operations via filter DSL\n\n`hotspot purge --filter` accepts the Integration filter DSL for bulk deletion\nwithout ID iteration:\n\n```bash\nunifly hotspot purge --filter \"status.eq('UNUSED')\"\nunifly hotspot purge --filter \"name.contains('Conference')\"\n```\n\n### TUI handoff for human verification\n\nPropose a change, let a human visually confirm in the TUI before committing:\n\n```bash\n# Agent inspects, proposes. Human runs unifly tui and verifies on\n# screen 4 (Networks) or 5 (Firewall) before the agent applies the change.\nunifly tui\n```\n\n### Multi-profile targeting\n\n```bash\nunifly -p home devices list\nunifly -p office firewall policies list\nUNIFI_PROFILE=warehouse unifly system health\n```\n\n## Essential Gotchas\n\n1. **Default list limit is 25.** The CLI prints a truncation hint when\n   results hit the default. For enumeration, always pass `--all` or\n   `--limit 200` (or higher).\n2. **Environment variables use the `UNIFI_` prefix, not `UNIFLY_`.** Relevant\n   vars: `UNIFI_URL`, `UNIFI_API_KEY`, `UNIFI_USERNAME`, `UNIFI_PASSWORD`,\n   `UNIFI_SITE`, `UNIFI_PROFILE`, `UNIFI_OUTPUT`, `UNIFI_INSECURE`,\n   `UNIFI_TIMEOUT`, `UNIFI_TOTP`. The only `UNIFLY_*` var is `UNIFLY_THEME`\n   for the TUI.\n3. **`--yes` / `-y`** skips confirmation prompts for mutations. Required for\n   non-interactive use.\n4. **API key mode covers most commands** on UniFi OS, including Session API\n   endpoints (stats, device commands, Wi-Fi observability, client enrichment).\n   Use **Hybrid only when live WebSocket streaming is needed** (`events watch`,\n   TUI live refresh). Client and device enrichment fields work in API key mode.\n5. **Cloud support is Integration-only.** `unifly cloud ...` talks to\n   Site Manager and `auth_mode = \"cloud\"` routes Integration-backed commands\n   through the connector, but Session-only features still need direct\n   controller access.\n6. **Exit codes are meaningful.** `0` on success, non-zero on error. Capture\n   stderr for diagnostics.\n\n## Agent Workflow\n\n1. Verify the tool exists with `command -v unifly`.\n2. Check auth mode with `unifly config show` before running commands that\n   require Session or Integration specifically.\n3. Run `unifly system health -o json` as the first touch to confirm\n   connectivity.\n4. Inspect before mutating: `list` / `get` the entity first, capture IDs.\n5. For complex creates, write a JSON payload and use `--from-file`.\n6. After mutations, re-fetch the entity with `get` to confirm state.\n7. For irreversible operations (delete, reboot, poweroff), surface a\n   summary to the user before running even with `--yes`.\n\n## Additional Resources\n\n### Reference Files\n\n- **`references/commands.md`**: Per-command flag reference with gotchas\n  (non-obvious flags, dual-API boundaries, correct argument forms)\n- **`references/concepts.md`**: UniFi networking concepts, dual-API gate\n  matrix, auth decision tree, environment variables, platform config paths,\n  MFA/TOTP, error taxonomy\n- **`references/workflows.md`**: Runnable automation recipes (event\n  streaming, safe firewall reorder, bulk DHCP reservations, ad-blocking via\n  DNS policies, cafe voucher flow, incident response)\n\n### Example Files\n\n- **`examples/config.toml`**: Multi-profile config template\n- **`examples/network-iot-vlan.json`**: VLAN creation payload for `--from-file`\n- **`examples/firewall-block-iot.json`**: Firewall policy payload\n- **`examples/nat-masquerade.json`**: NAT masquerade policy payload\n- **`examples/nat-port-forward.json`**: Destination NAT (port forward) payload\n- **`examples/wifi-iot.json`**: WiFi SSID payload\n- **`examples/vpn-remote-access-wireguard.json`**: WireGuard remote-access VPN payload\n- **`examples/vpn-site-to-site-ipsec.json`**: IPsec site-to-site tunnel payload\n- **`examples/vpn-client-openvpn.json`**: OpenVPN client payload\n- **`examples/vpn-wireguard-peer.json`**: WireGuard peer configuration payload","tags":["unifly","hyperb1iss","agent-skills","cli","networking","ratatui","rust","terminal","tui","ubiquiti","unifi"],"capabilities":["skill","source-hyperb1iss","skill-unifly","topic-agent-skills","topic-cli","topic-networking","topic-ratatui","topic-rust","topic-terminal","topic-tui","topic-ubiquiti","topic-unifi"],"categories":["unifly"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/hyperb1iss/unifly/unifly","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add hyperb1iss/unifly","source_repo":"https://github.com/hyperb1iss/unifly","install_from":"skills.sh"}},"qualityScore":"0.540","qualityRationale":"deterministic score 0.54 from registry signals: · indexed on github topic:agent-skills · 181 github stars · SKILL.md body (26,051 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T12:54:10.035Z","embedding":null,"createdAt":"2026-04-18T22:08:58.129Z","updatedAt":"2026-05-02T12:54:10.035Z","lastSeenAt":"2026-05-02T12:54:10.035Z","tsv":"'/dev/null':204 '/hyperb1iss/unifly.git':230 '/vpn/connections':1368 '0':1845 '1':206,1675,1859 '2':205,1702,1868 '200':1699 '25':1680 '28':49 '3':1744,1885 '4':1638,1758,1899 '5':1641,1805,1910 '6':1840,1923 '7':1936 'aa':1016 'accept':694,709,813,1554,1584 'access':610,845,1121,1147,1158,1166,1174,1182,1190,1200,1209,1285,1309,1514,1839,2059 'acl':65,510,831 'action':418,1374 'ad':2010 'ad-block':2009 'add':135 'addit':1954 'admin':313,330,583,897,906 'adopt':424 'agent':725,761,1627,1645,1857 'alarm':540 'alert':912 'alias':417 'alreadi':130 'alway':1694 'api':22,24,28,36,81,98,116,126,169,263,298,301,333,351,369,384,395,656,658,967,985,1003,1006,1023,1031,1044,1124,1216,1278,1360,1411,1448,1716,1759,1770,1802,1972,1983 'api.ui.com':364 'api/s/default/set/setting/teleport':1024 'app':553 'appli':858,1646 'archiv':542,544 'archive-al':543 'arg':415 'argument':1975 'auth':402,1819,1870,1986 'authent':257 'author':444 'authorit':700 'autom':271,1999 'automat':1000 'avail':195 'back':774,951,1572,1825 'backup':74,331,567 'bash':200,679,864,881,931,1001,1073,1153,1242,1312,1383,1421,1473,1595,1626,1655 'bb':1017 'behind':37 'block':446,2011 'bodi':1560 'boundari':1973 'brew':219 'bulk':1576,1590,2006 'byte':107 'c':921 'cach':998 'cafe':2015 'capabl':85,795 'captur':1853,1908 'cargo':225 'case':715,891 'case-insensit':890 'categori':554 'cc':1018 'chang':1615,1648 'channel':483 'check':1869 'choos':276 'cl':438 'cli':10,1682 'client':56,106,437,549,622,847,894,917,991,1213,1224,1236,1245,1251,1257,1263,1269,1362,1516,1779,1795,2072 'cloud':35,75,247,348,360,378,458,666,1806,1813,1821 'cloud-setup':246,665 'cmd':1011 'cmd/stamgr':1007 'code':1842 'coher':40 'command':53,191,199,201,310,327,362,393,399,406,409,416,693,708,1764,1774,1826,1865,1878,1961 'command-to-api':392 'commit':1625 'compact':732,736 'compat':291,347 'complet':391,678 'complex':809,1912 'concept':1980 'confer':1607 'config':237,245,620,663,746,1203,1874,1992,2026 'configur':117,256,1232,2077 'confirm':1620,1748,1897,1934 'connect':628,1355,1363,1382,1386,1392,1398,1518,1898 'connector':354,1829 'connector-rout':353 'construct':851 'consult':404,689,803 'control':188,242,275,329,346,1072,1152,1241,1373,1457,1538,1575,1838 'cooki':29 'correct':1974 'countri':653 'cover':54,1762 'creat':474,484,492,500,507,513,520,528,534,568,581,605,613,625,635,867,873,1098,1175,1258,1300,1334,1913 'create/update':810 'creation':2030 'credenti':293 'crud':118,308,357,1057,1138,1229 'csrf':31,993 'current':933,1056,1137,1228,1417 'cycl':430 'd':421,1010,1027 'data':104 'dd':1019 'decis':1987 'default':721,759,1676,1691 'delet':476,486,495,502,509,515,522,530,535,571,582,607,621,627,637,1116,1210,1270,1303,1346,1591,1940 'dest':947,963 'dest-zon':946,962 'destin':2046 'detail':686 'determinist':162 'dev':420 'devic':55,309,326,419,463,548,893,1659,1773,1797 'dhcp':2007 'diagnost':1856 'direct':1837 'disabl':557 'display':720 'distinct':794 'dns':66,517,832,2013 'download':570,619,1202 'download-config':618,1201 'dpi':72,328,551,552 'dsl':1580,1588 'dual':97,1971,1982 'dual-api':96,1970,1981 'e.g':105 'echo':209 'edit':167 'ee':1020 'either':1555 'elsewher':232 'elvish':683 'emit':765 'enabl':556,1028,1495,1550 'endpoint':173,385,971,1281,1414,1771 'enough':267 'enrich':99,342,1780,1798 'entiti':692,812,1906,1930 'enumer':1290,1693 'environ':1703,1989 'error':1852,1995 'escap':82,968 'essenti':1673 'even':1951 'event':47,145,149,285,314,323,372,537,879,883,885,902,914,1790,2001 'eventcategori':889 'everi':691 'everyth':336 'exampl':860,2020 'examples/config.toml':253,2022 'examples/firewall-block-iot.json':875,2036 'examples/nat-masquerade.json':2040 'examples/nat-port-forward.json':2045 'examples/network-iot-vlan.json':869,2028 'examples/vpn-client-openvpn.json':2070 'examples/vpn-remote-access-wireguard.json':2055 'examples/vpn-site-to-site-ipsec.json':2062 'examples/vpn-wireguard-peer.json':2074 'examples/wifi-iot.json':2051 'exist':112,120,1863 'exit':1841 'explicit':953 'export':578 'expos':382,1069,1149,1238,1365,1458 'f':818,868,874,1099,1108,1176,1184,1259,1265,1335,1341,1505 'fall':773 'featur':284,1454,1834 'fetch':1928 'ff':1021 'fi':1777 'field':1534,1541,1552,1570,1799 'file':747,807,816,1922,1957,2021,2035 'filter':887,1579,1583,1587,1599,1605 'find':440 'firewal':59,153,487,825,827,871,898,905,925,940,956,1642,1664,2004,2037 'first':1894,1907 'fish':681 'flag':414,685,713,821,1962,1969 'fleet':76,361 'flow':2017 'follow':410 'forget':449 'form':1976 'format':703,712 'forward':2049 'four':261 'from-fil':805,814,1920,2033 'full':797 'fw':488 'gate':396,1984 'gateway':550 'get':158,423,441,460,467,473,481,491,499,506,512,519,527,533,576,593,596,604,612,624,630,634,645,648,707,949,1089,1167,1252,1328,1393,1439,1483,1511,1515,1517,1519,1521,1528,1543,1904,1932 'get/post/put/patch/delete':660 'git':227 'github.com':229 'github.com/hyperb1iss/unifly.git':228 'global':413 'global-flag':412 'gotcha':688,1674,1965 'handoff':1609 'hatch':83,969 'health':565,598,1672,1889 'help':695 'higher':1701 'hint':1686 'hit':1689 'home':182,1658 'host':459 'hostnam':108 'hotspot':70,531,836,1581,1597,1603 'http':133,270,304,320 'human':719,785,1611,1618,1630 'hybrid':134,277,332,377,1782 'hyperb1iss/tap/unifly':221 'id':753,1299,1311,1593,1909 'incid':2018 'includ':338,976,1768 'info':564 'infrastructur':16 'init':238,664 'inner':1569 'insecur':1729 'insensit':892 'inspect':1628,1900 'instal':212,217,220,226,234 'instead':819 'integr':21,101,122,297,300,356,981,1586,1810,1824,1883 'integration-back':1823 'integration-on':1809 'interact':1756 'interfac':41 'inventori':407,1364,1413 'invit':585 'ip':454,457 'ipsec':1061,2063 'irrevers':1938 'isp':464 'issu':1370 'iter':1594 'jq':729,770,920 'json':722,724,731,735,740,764,853,907,919,1082,1091,1161,1169,1195,1248,1254,1318,1324,1330,1352,1389,1395,1431,1441,1479,1489,1891,1916 'json-compact':730,734 'key':25,127,264,299,334,352,370,1549,1717,1760,1803 'kick':448,1013 'kick-sta':1012 'l2tp':1141 'lead':87 'let':1616 'level':52 'limit':1678,1698 'line':192,739,755 'list':69,315,422,439,472,480,490,498,505,511,518,525,526,532,538,541,569,575,580,584,589,592,595,603,611,623,629,633,644,647,705,835,1080,1159,1246,1288,1316,1322,1387,1429,1477,1660,1666,1677,1903 'live':140,282,1785,1793 'local':241 'locat':427 'm':1008,1025 'mac':110,1015 'maco':223 'magic':640,1403,1425,1435,1462,1524 'magic-site-to-sit':639,1402,1424,1434,1523 'magic-site-to-site-vpn':1461 'magicsitetositevpn/configs':1412 'manag':5,12,34,186,251,350,995,1817 'manual':255,1060 'masquerad':2042 'match':68 'matrix':397,1985 'maximum':290,345 'meaning':1844 'merg':100 'mfa/totp':1994 'mode':128,258,262,265,292,379,403,1761,1804,1820,1871 'modern':20 'monitor':141 'multi':179,1652,2024 'multi-profil':178,1651,2023 'multipl':187 'mutat':1751,1902,1925 'n':471 'name.contains':1606 'nat':63,503,829,2041,2047 'need':281,374,1789,1836 'neighbor':482 'net':470 'network':4,15,57,469,823,866,895,1639,1979 'non':1755,1849,1967 'non-interact':1754 'non-obvi':1966 'non-zero':1848 'o':711,717,723,733,744,750,763,918,1081,1090,1160,1168,1194,1247,1253,1317,1323,1329,1351,1388,1394,1430,1440,1478,1488,1890 'object':1571 'observ':1778 'obvious':1968 'offic':184,1663 'one':190,752 'openvpn':1063,1142,1233,1467,2071 'oper':1577,1939 'order':166,934,954 'os':125,274,307,1767 'output':702,710,748,767,1727 'p':181,183,1657,1662 'pair':938 'parent':1306 'pass':1695 'passthrough':171,659 'password':318,674,1721 'patch':494,650,1500,1553 'path':662,982,1058,1139,1204,1230,1993 'pattern':787,789 'payload':854,862,1033,1539,1917,2031,2039,2044,2050,2054,2061,2069,2073,2078 'peer':632,850,1273,1280,1292,1315,1321,1327,1333,1339,1345,1349,1470,1472,1485,1487,1502,1504,1520,2076 'peer-to-p':1469,1484,1501 'peer-to-peer.json':1506 'peer.json':1336,1342 'pend':432 'per':754,1960 'per-command':1959 'pipe':727,768,910 'pipelin':758 'plain':749,751 'platform':1991 'plus':30,42,302,341,358 'polici':60,64,154,489,504,826,830,872,926,941,957,1665,2014,2038,2043 'port':429,617,1193,2048 'port-cycl':428 'post':1009 'power':786 'poweroff':573,1942 'powershel':682 'prefer':218 'prefix':1708 'prerequisit':193 'print':1683 'process':726 'profil':180,652,670,1237,1653,1668,1725,2025 'prompt':1749 'propos':1613,1629 'provis':434 'purg':536,1582,1598,1604 'purpos':1048,1128,1220 'put':1026 'queri':77,465 'radius':651 'raw':80,170,657,966,1557 're':1927 're-fetch':1926 'reach':131 'read':932,1419 'read-on':1418 'real':44,143,877 'real-tim':43,142,876 'reboot':572,1941 'recip':798,2000 'record':343,1046,1068,1126,1218,1450,1531 'redact':1530,1546 'ref':477 'refer':701,1956,1963 'references/commands.md':690,1958 'references/concepts.md':405,1977 'references/workflows.md':804,1997 'refresh':1794 'reject':368 'relev':1711 'remot':609,844,1120,1131,1146,1157,1165,1173,1181,1189,1199,1208,1284,1308,1513,2058 'remote-access':608,843,1119,1145,1156,1164,1172,1180,1188,1198,1207,1283,1307,1512,2057 'remote-access.json':1177,1185 'remote-user-vpn':1130 'remov':425,456 'remove-ip':455 'reorder':155,157,159,496,516,927,942,958,2005 'requir':400,1304,1752,1880 'res':451 'reserv':312,450,2008 'resourc':1955 'respons':2019 'rest':23 'rest/networkconf':1045,1125,1217 'rest/setting':1449 'restart':426,631,1369,1399 'result':779,1688 'return':1529,1544 'revok':586 'roam':442 'round':164,929 'round-tripp':163,928 'rout':355,979,987,1822 'run':197,235,1631,1877,1886,1950 'runnabl':800,1998 'runtim':697 'rust':9 'safe':2003 'salad':822 'sanit':1537 'scope':1294 'screen':1637 'script':742,802 'sdwan':466 'see':252,859 'select':922 'send':1567 'server':591,1148,1287,1298,1310 'session':27,103,115,132,138,303,316,319,339,365,375,383,990,997,1030,1043,1123,1215,1276,1358,1409,1447,1558,1769,1832,1881 'session-on':1831 'set':160,453,574,577,646,649,669,673,965,1035,1444,1476,1482,1492,1493,1499,1542,1559 'set-ip':452 'set-password':672 'setup':248,667 'sever':923 'shape':1564 'shell':801 'show':668,1875 'shown':782 'singl':39,738,1297,1381 'single-lin':737 'site':33,250,349,461,547,579,600,602,641,643,839,841,1039,1041,1051,1065,1067,1077,1079,1086,1088,1095,1097,1104,1106,1113,1115,1404,1406,1426,1428,1436,1438,1463,1465,1508,1510,1525,1527,1723,1816,2065,2067 'site-to-sit':599,838,1038,1064,1076,1085,1094,1103,1112,1507,2064 'site-to-site.json':1100,1109 'site-vpn':1050 'skill' 'skill-unifly' 'skip':1747 'sourc':944,960 'source-hyperb1iss' 'source-zon':943,959 'specif':1884 'speedtest':435 'ssid':2053 'sta':1014 'stat':73,311,325,431,546,1772 'state':1935 'status':468,555,597 'status.eq':1600 'stderr':1854 'still':367,1835 'stream':48,146,388,880,908,1787,2002 'structur':766 'subcommand':561,655,677 'subnet':638,1350 'success':1847 'suggest':616,1192 'suggest-port':615,1191 'suit':94 'summari':1533,1945 'support':260,1807 'surfac':1943 'switch':462 'sys':563 'sysinfo':566 'system':562,896,1671,1888 'tabl':716,718,776 'tag':436 'talk':1814 'target':1654 'task':93,280 'taxonomi':1996 'teleport':1460,1494 'templat':863,2027 'theme':1740 'time':45,144,878 'timeout':1731 'today':1459 'toggl':1455 'token':994 'tool':1862 'top':51 'top-level':50 'topic-agent-skills' 'topic-cli' 'topic-networking' 'topic-ratatui' 'topic-rust' 'topic-terminal' 'topic-tui' 'topic-ubiquiti' 'topic-unifi' 'topo':559 'topolog':558 'totp':1733 'touch':1895 'traffic':67,524,834 'traffic-list':523,833 'tree':1988 'trippabl':165,930 'true':1029,1496 'truncat':1685 'tui':675,1608,1623,1633,1650,1743,1792 'tunnel':594,2068 'type':904,916 'ubiqu':13 'ui':1377 'unauthor':445 'unblock':447 'unifi':3,14,18,124,273,306,977,1667,1707,1713,1715,1718,1720,1722,1724,1726,1728,1730,1732,1766,1978 'unifli':1,2,6,148,168,174,203,207,210,214,231,236,244,259,359,411,791,865,870,884,901,913,939,955,972,984,1002,1005,1022,1036,1074,1083,1092,1101,1110,1117,1154,1162,1170,1178,1186,1196,1205,1211,1243,1249,1255,1261,1267,1271,1313,1319,1325,1331,1337,1343,1347,1353,1384,1390,1396,1400,1422,1432,1442,1474,1480,1490,1497,1596,1602,1632,1649,1656,1661,1670,1710,1736,1739,1812,1867,1873,1887 'uniqu':84 'unknown':900 'unlock':296,790 'unus':1601 'updat':475,485,493,501,508,514,521,529,587,606,614,626,636,1107,1183,1264,1301,1340 'upgrad':433 'uplink':109 'url':1714 'use':671,714,762,983,1378,1705,1757,1781,1919 'user':91,1132,1948 'usernam':317,1719 'username/pass':335 'v':202,1866 'v2':978,1277,1359,1410 'v2/api/site':1367 'v2/api/site/default/traffic-flow-latest-statistics':1004 'valid':855 'var':1712,1737 'variabl':1704,1990 'verif':1612 'verifi':194,1635,1860 'version':208 'via':147,156,1578,2012 'visual':1619 'vlan':2029 'voucher':71,2016 'vpn':590,837,842,846,849,899,1032,1037,1052,1075,1084,1093,1102,1111,1118,1133,1155,1163,1171,1179,1187,1197,1206,1212,1223,1244,1250,1256,1262,1268,1272,1286,1314,1320,1326,1332,1338,1344,1348,1354,1361,1385,1391,1397,1401,1423,1433,1443,1453,1466,1475,1481,1491,1498,2060 'vpn-client':1222 'vpn-client.json':1260,1266 'w':479 'wan':588 'want':289 'warehous':1669 'warn':924 'watch':150,286,324,373,539,886,903,915,1791 'web':1376 'websocket':46,137,152,283,321,340,366,387,1786 'whose':1047,1127,1219 'wi':1776 'wi-fi':1775 'wifi':58,443,478,824,2052 'wireguard':1144,1235,1279,2056,2075 'without':1592 'work':1800 'workflow':1858 'worth':86 'wrap':177,975,1042,1122,1214,1274,1356,1407,1445 'wrapper':1547,1563 'write':950,1914 'xarg':757 'y':1746 'yaml':743,745 'yes':1745,1953 'zero':1850 'zone':62,497,828,937,945,948,961,964 'zsh':680","prices":[{"id":"bfc3ad3d-2e88-4424-ad59-a8f4e86362d7","listingId":"f19a4df3-58ad-402a-960c-bf50ffcbab2d","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"hyperb1iss","category":"unifly","install_from":"skills.sh"},"createdAt":"2026-04-18T22:08:58.129Z"}],"sources":[{"listingId":"f19a4df3-58ad-402a-960c-bf50ffcbab2d","source":"github","sourceId":"hyperb1iss/unifly/unifly","sourceUrl":"https://github.com/hyperb1iss/unifly/tree/main/skills/unifly","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:58.129Z","lastSeenAt":"2026-05-02T12:54:10.035Z"}],"details":{"listingId":"f19a4df3-58ad-402a-960c-bf50ffcbab2d","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"hyperb1iss","slug":"unifly","github":{"repo":"hyperb1iss/unifly","stars":181,"topics":["agent-skills","cli","networking","ratatui","rust","terminal","tui","ubiquiti","unifi"],"license":"apache-2.0","html_url":"https://github.com/hyperb1iss/unifly","pushed_at":"2026-04-14T19:05:48Z","description":"🌐 Elegant UniFi network management CLI & TUI - for humans and agents","skill_md_sha":"51ade42f2552116b401bc4217786aa819494ec1f","skill_md_path":"skills/unifly/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/hyperb1iss/unifly/tree/main/skills/unifly"},"layout":"multi","source":"github","category":"unifly","frontmatter":{"name":"unifly","description":">-"},"skills_sh_url":"https://skills.sh/hyperb1iss/unifly/unifly"},"updatedAt":"2026-05-02T12:54:10.035Z"}}