{"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, ports, ports-export, port-set, 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}, groups {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`, `firewall\ngroups`, `nat policies`, `acl`, `dns`, `traffic-lists`, `hotspot`, `vpn\nsite-to-site`, `vpn remote-access`, `vpn clients`, `vpn peers`, `vpn settings\npatch`, and `devices port-set` (JSONC for switch port config-as-code).\nConstruct the JSON payload, validate it, then apply. See `examples/` for\npayload 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","openclaw-skill","ratatui","rust","terminal","tui","ubiquiti","unifi"],"capabilities":["skill","source-hyperb1iss","skill-unifly","topic-agent-skills","topic-cli","topic-networking","topic-openclaw-skill","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.545","qualityRationale":"deterministic score 0.55 from registry signals: · indexed on github topic:agent-skills · 190 github stars · SKILL.md body (26,151 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-18T18:55:10.591Z","embedding":null,"createdAt":"2026-04-18T22:08:58.129Z","updatedAt":"2026-05-18T18:55:10.591Z","lastSeenAt":"2026-05-18T18:55:10.591Z","tsv":"'/dev/null':204 '/hyperb1iss/unifly.git':230 '/vpn/connections':1398 '0':1875 '1':206,1705,1889 '2':205,1732,1898 '200':1729 '25':1710 '28':49 '3':1774,1915 '4':1668,1788,1929 '5':1671,1835,1940 '6':1870,1953 '7':1966 'aa':1046 'accept':707,722,826,1584,1614 'access':623,860,1151,1177,1188,1196,1204,1212,1220,1230,1239,1315,1339,1544,1869,2089 'acl':65,523,846 'action':418,1404 'ad':2040 'ad-block':2039 'add':135 'addit':1984 'admin':313,330,596,927,936 'adopt':424 'agent':738,774,1657,1675,1887 'alarm':553 'alert':942 'alias':417 'alreadi':130 'alway':1724 'api':22,24,28,36,81,98,116,126,169,263,298,301,333,351,369,384,395,669,671,997,1015,1033,1036,1053,1061,1074,1154,1246,1308,1390,1441,1478,1746,1789,1800,1832,2002,2013 'api.ui.com':364 'api/s/default/set/setting/teleport':1054 'app':566 'appli':888,1676 'archiv':555,557 'archive-al':556 'arg':415 'argument':2005 'auth':402,1849,1900,2016 'authent':257 'author':451 'authorit':713 'autom':271,2029 'automat':1030 'avail':195 'back':787,981,1602,1855 'backup':74,331,580 'bash':200,692,894,911,961,1031,1103,1183,1272,1342,1413,1451,1503,1625,1656,1685 'bb':1047 'behind':37 'block':453,2041 'bodi':1590 'boundari':2003 'brew':219 'bulk':1606,1620,2036 'byte':107 'c':951 'cach':1028 'cafe':2045 'capabl':85,808 'captur':1883,1938 'cargo':225 'case':728,921 'case-insensit':920 'categori':567 'cc':1048 'chang':1645,1678 'channel':490 'check':1899 'choos':276 'cl':445 'cli':10,1712 'client':56,106,444,562,635,862,924,947,1021,1243,1254,1266,1275,1281,1287,1293,1299,1392,1546,1809,1825,2102 'cloud':35,75,247,348,360,378,465,679,1836,1843,1851 'cloud-setup':246,678 'cmd':1041 'cmd/stamgr':1037 'code':880,1872 'coher':40 'command':53,191,199,201,310,327,362,393,399,406,409,416,706,721,1794,1804,1856,1895,1908,1991 'command-to-api':392 'commit':1655 'compact':745,749 'compat':291,347 'complet':391,691 'complex':822,1942 'concept':2010 'confer':1637 'config':237,245,633,676,759,878,1233,1904,2022,2056 'config-as-cod':877 'configur':117,256,1262,2107 'confirm':1650,1778,1927,1964 'connect':641,1385,1393,1412,1416,1422,1428,1548,1928 'connector':354,1859 'connector-rout':353 'construct':881 'consult':404,702,816 'control':188,242,275,329,346,1102,1182,1271,1403,1487,1568,1605,1868 'cooki':29 'correct':2004 'countri':666 'cover':54,1792 'creat':481,491,499,507,513,520,526,533,541,547,581,594,618,626,638,648,897,903,1128,1205,1288,1330,1364,1943 'create/update':823 'creation':2060 'credenti':293 'crud':118,308,357,1087,1168,1259 'csrf':31,1023 'current':963,1086,1167,1258,1447 'cycl':430 'd':421,1040,1057 'data':104 'dd':1049 'decis':2017 'default':734,772,1706,1721 'delet':483,493,502,509,515,522,528,535,543,548,584,595,620,634,640,650,1146,1240,1300,1333,1376,1621,1970 'dest':977,993 'dest-zon':976,992 'destin':2076 'detail':699 'determinist':162 'dev':420 'devic':55,309,326,419,470,561,869,923,1689,1803,1827 'dhcp':2037 'diagnost':1886 'direct':1867 'disabl':570 'display':733 'distinct':807 'dns':66,530,847,2043 'download':583,632,1232 'download-config':631,1231 'dpi':72,328,564,565 'dsl':1610,1618 'dual':97,2001,2012 'dual-api':96,2000,2011 'e.g':105 'echo':209 'edit':167 'ee':1050 'either':1585 'elsewher':232 'elvish':696 'emit':778 'enabl':569,1058,1525,1580 'endpoint':173,385,1001,1311,1444,1801 'enough':267 'enrich':99,342,1810,1828 'entiti':705,825,1936,1960 'enumer':1320,1723 'environ':1733,2019 'error':1882,2025 'escap':82,998 'essenti':1703 'even':1981 'event':47,145,149,285,314,323,372,550,909,913,915,932,944,1820,2031 'eventcategori':919 'everi':704 'everyth':336 'exampl':890,2050 'examples/config.toml':253,2052 'examples/firewall-block-iot.json':905,2066 'examples/nat-masquerade.json':2070 'examples/nat-port-forward.json':2075 'examples/network-iot-vlan.json':899,2058 'examples/vpn-client-openvpn.json':2100 'examples/vpn-remote-access-wireguard.json':2085 'examples/vpn-site-to-site-ipsec.json':2092 'examples/vpn-wireguard-peer.json':2104 'examples/wifi-iot.json':2081 'exist':112,120,1893 'exit':1871 'explicit':983 'export':434,591 'expos':382,1099,1179,1268,1395,1488 'f':831,898,904,1129,1138,1206,1214,1289,1295,1365,1371,1535 'fall':786 'featur':284,1484,1864 'fetch':1958 'ff':1051 'fi':1807 'field':1564,1571,1582,1600,1829 'file':760,820,829,1952,1987,2051,2065 'filter':917,1609,1613,1617,1629,1635 'find':447 'firewal':59,153,494,838,840,842,901,928,935,955,970,986,1672,1694,2034,2067 'first':1924,1937 'fish':694 'flag':414,698,726,834,1992,1999 'fleet':76,361 'flow':2047 'follow':410 'forget':456 'form':2006 'format':716,725 'forward':2079 'four':261 'from-fil':818,827,1950,2063 'full':810 'fw':495 'gate':396,2014 'gateway':563 'get':158,423,448,467,474,480,488,498,506,512,519,525,532,540,546,589,606,609,617,625,637,643,647,658,661,720,979,1119,1197,1282,1358,1423,1469,1513,1541,1545,1547,1549,1551,1558,1573,1934,1962 'get/post/put/patch/delete':673 'git':227 'github.com':229 'github.com/hyperb1iss/unifly.git':228 'global':413 'global-flag':412 'gotcha':701,1704,1995 'group':510,843 'handoff':1639 'hatch':83,999 'health':578,611,1702,1919 'help':708 'higher':1731 'hint':1716 'hit':1719 'home':182,1688 'host':466 'hostnam':108 'hotspot':70,544,851,1611,1627,1633 'http':133,270,304,320 'human':732,798,1641,1648,1660 'hybrid':134,277,332,377,1812 'hyperb1iss/tap/unifly':221 'id':766,1329,1341,1623,1939 'incid':2048 'includ':338,1006,1798 'info':577 'infrastructur':16 'init':238,677 'inner':1599 'insecur':1759 'insensit':922 'inspect':1658,1930 'instal':212,217,220,226,234 'instead':832 'integr':21,101,122,297,300,356,1011,1616,1840,1854,1913 'integration-back':1853 'integration-on':1839 'interact':1786 'interfac':41 'inventori':407,1394,1443 'invit':598 'ip':461,464 'ipsec':1091,2093 'irrevers':1968 'isp':471 'issu':1400 'iter':1624 'jq':742,783,950 'json':735,737,744,748,753,777,883,937,949,1112,1121,1191,1199,1225,1278,1284,1348,1354,1360,1382,1419,1425,1461,1471,1509,1519,1921,1946 'json-compact':743,747 'jsonc':873 'key':25,127,264,299,334,352,370,1579,1747,1790,1833 'kick':455,1043 'kick-sta':1042 'l2tp':1171 'lead':87 'let':1646 'level':52 'limit':1708,1728 'line':192,752,768 'list':69,315,422,446,479,487,497,505,511,518,524,531,538,539,545,551,554,582,588,593,597,602,605,608,616,624,636,642,646,657,660,718,850,1110,1189,1276,1318,1346,1352,1417,1459,1507,1690,1696,1707,1933 'live':140,282,1815,1823 'local':241 'locat':427 'm':1038,1055 'mac':110,1045 'maco':223 'magic':653,1433,1455,1465,1492,1554 'magic-site-to-sit':652,1432,1454,1464,1553 'magic-site-to-site-vpn':1491 'magicsitetositevpn/configs':1442 'manag':5,12,34,186,251,350,1025,1847 'manual':255,1090 'masquerad':2072 'match':68 'matrix':397,2015 'maximum':290,345 'meaning':1874 'merg':100 'mfa/totp':2024 'mode':128,258,262,265,292,379,403,1791,1834,1850,1901 'modern':20 'monitor':141 'multi':179,1682,2054 'multi-profil':178,1681,2053 'multipl':187 'mutat':1781,1932,1955 'n':478 'name.contains':1636 'nat':63,516,844,2071,2077 'need':281,374,1819,1866 'neighbor':489 'net':477 'network':4,15,57,476,836,896,925,1669,2009 'non':1785,1879,1997 'non-interact':1784 'non-obvi':1996 'non-zero':1878 'o':724,730,736,746,757,763,776,948,1111,1120,1190,1198,1224,1277,1283,1347,1353,1359,1381,1418,1424,1460,1470,1508,1518,1920 'object':1601 'observ':1808 'obvious':1998 'offic':184,1693 'one':190,765 'openvpn':1093,1172,1263,1497,2101 'oper':1607,1969 'order':166,964,984 'os':125,274,307,1797 'output':715,723,761,780,1757 'p':181,183,1687,1692 'pair':968 'parent':1336 'pass':1725 'passthrough':171,672 'password':318,687,1751 'patch':501,663,867,1530,1583 'path':675,1012,1088,1169,1234,1260,2023 'pattern':800,802 'payload':884,892,1063,1569,1947,2061,2069,2074,2080,2084,2091,2099,2103,2108 'peer':645,864,1303,1310,1322,1345,1351,1357,1363,1369,1375,1379,1500,1502,1515,1517,1532,1534,1550,2106 'peer-to-p':1499,1514,1531 'peer-to-peer.json':1536 'peer.json':1366,1372 'pend':439 'per':767,1990 'per-command':1989 'pipe':740,781,940 'pipelin':771 'plain':762,764 'platform':2021 'plus':30,42,302,341,358 'polici':60,64,154,496,517,839,845,902,956,971,987,1695,2044,2068,2073 'port':429,431,433,436,630,871,876,1223,2078 'port-cycl':428 'port-set':435,870 'ports-export':432 'post':1039 'power':799 'poweroff':586,1972 'powershel':695 'prefer':218 'prefix':1738 'prerequisit':193 'print':1713 'process':739 'profil':180,665,683,1267,1683,1698,1755,2055 'prompt':1779 'propos':1643,1659 'provis':441 'purg':549,1612,1628,1634 'purpos':1078,1158,1250 'put':1056 'queri':77,472 'radius':664 'raw':80,170,670,996,1587 're':1957 're-fetch':1956 'reach':131 'read':962,1449 'read-on':1448 'real':44,143,907 'real-tim':43,142,906 'reboot':585,1971 'recip':811,2030 'record':343,1076,1098,1156,1248,1480,1561 'redact':1560,1576 'ref':484 'refer':714,1986,1993 'references/commands.md':703,1988 'references/concepts.md':405,2007 'references/workflows.md':817,2027 'refresh':1824 'reject':368 'relev':1741 'remot':622,859,1150,1161,1176,1187,1195,1203,1211,1219,1229,1238,1314,1338,1543,2088 'remote-access':621,858,1149,1175,1186,1194,1202,1210,1218,1228,1237,1313,1337,1542,2087 'remote-access.json':1207,1215 'remote-user-vpn':1160 'remov':425,463 'remove-ip':462 'reorder':155,157,159,503,529,957,972,988,2035 'requir':400,1334,1782,1910 'res':458 'reserv':312,457,2038 'resourc':1985 'respons':2049 'rest':23 'rest/networkconf':1075,1155,1247 'rest/setting':1479 'restart':426,644,1399,1429 'result':792,1718 'return':1559,1574 'revok':599 'roam':449 'round':164,959 'round-tripp':163,958 'rout':355,1009,1017,1852 'run':197,235,1661,1907,1916,1980 'runnabl':813,2028 'runtim':710 'rust':9 'safe':2033 'salad':835 'sanit':1567 'scope':1324 'screen':1667 'script':755,815 'sdwan':473 'see':252,889 'select':952 'send':1597 'server':604,1178,1317,1328,1340 'session':27,103,115,132,138,303,316,319,339,365,375,383,1020,1027,1060,1073,1153,1245,1306,1388,1439,1477,1588,1799,1862,1911 'session-on':1861 'set':160,437,460,587,590,659,662,682,686,866,872,995,1065,1474,1506,1512,1522,1523,1529,1572,1589 'set-ip':459 'set-password':685 'setup':248,680 'sever':953 'shape':1594 'shell':814 'show':681,1905 'shown':795 'singl':39,751,1327,1411 'single-lin':750 'site':33,250,349,468,560,592,613,615,654,656,854,856,1069,1071,1081,1095,1097,1107,1109,1116,1118,1125,1127,1134,1136,1143,1145,1434,1436,1456,1458,1466,1468,1493,1495,1538,1540,1555,1557,1753,1846,2095,2097 'site-to-sit':612,853,1068,1094,1106,1115,1124,1133,1142,1537,2094 'site-to-site.json':1130,1139 'site-vpn':1080 'skill' 'skill-unifly' 'skip':1777 'sourc':974,990 'source-hyperb1iss' 'source-zon':973,989 'specif':1914 'speedtest':442 'ssid':2083 'sta':1044 'stat':73,311,325,438,559,1802 'state':1965 'status':475,568,610 'status.eq':1630 'stderr':1884 'still':367,1865 'stream':48,146,388,910,938,1817,2032 'structur':779 'subcommand':574,668,690 'subnet':651,1380 'success':1877 'suggest':629,1222 'suggest-port':628,1221 'suit':94 'summari':1563,1975 'support':260,1837 'surfac':1973 'switch':469,875 'sys':576 'sysinfo':579 'system':575,926,1701,1918 'tabl':729,731,789 'tag':443 'talk':1844 'target':1684 'task':93,280 'taxonomi':2026 'teleport':1490,1524 'templat':893,2057 'theme':1770 'time':45,144,908 'timeout':1761 'today':1489 'toggl':1485 'token':1024 'tool':1892 'top':51 'top-level':50 'topic-agent-skills' 'topic-cli' 'topic-networking' 'topic-openclaw-skill' 'topic-ratatui' 'topic-rust' 'topic-terminal' 'topic-tui' 'topic-ubiquiti' 'topic-unifi' 'topo':572 'topolog':571 'totp':1763 'touch':1925 'traffic':67,537,849 'traffic-list':536,848 'tree':2018 'trippabl':165,960 'true':1059,1526 'truncat':1715 'tui':688,1638,1653,1663,1680,1773,1822 'tunnel':607,2098 'type':934,946 'ubiqu':13 'ui':1407 'unauthor':452 'unblock':454 'unifi':3,14,18,124,273,306,1007,1697,1737,1743,1745,1748,1750,1752,1754,1756,1758,1760,1762,1796,2008 'unifli':1,2,6,148,168,174,203,207,210,214,231,236,244,259,359,411,804,895,900,914,931,943,969,985,1002,1014,1032,1035,1052,1066,1104,1113,1122,1131,1140,1147,1184,1192,1200,1208,1216,1226,1235,1241,1273,1279,1285,1291,1297,1301,1343,1349,1355,1361,1367,1373,1377,1383,1414,1420,1426,1430,1452,1462,1472,1504,1510,1520,1527,1626,1632,1662,1679,1686,1691,1700,1740,1766,1769,1842,1897,1903,1917 'uniqu':84 'unknown':930 'unlock':296,803 'unus':1631 'updat':482,492,500,508,514,521,527,534,542,600,619,627,639,649,1137,1213,1294,1331,1370 'upgrad':440 'uplink':109 'url':1744 'use':684,727,775,1013,1408,1735,1787,1811,1949 'user':91,1162,1978 'usernam':317,1749 'username/pass':335 'v':202,1896 'v2':1008,1307,1389,1440 'v2/api/site':1397 'v2/api/site/default/traffic-flow-latest-statistics':1034 'valid':885 'var':1742,1767 'variabl':1734,2020 'verif':1642 'verifi':194,1665,1890 'version':208 'via':147,156,1608,2042 'visual':1649 'vlan':2059 'voucher':71,2046 'vpn':603,852,857,861,863,865,929,1062,1067,1082,1105,1114,1123,1132,1141,1148,1163,1185,1193,1201,1209,1217,1227,1236,1242,1253,1274,1280,1286,1292,1298,1302,1316,1344,1350,1356,1362,1368,1374,1378,1384,1391,1415,1421,1427,1431,1453,1463,1473,1483,1496,1505,1511,1521,1528,2090 'vpn-client':1252 'vpn-client.json':1290,1296 'w':486 'wan':601 'want':289 'warehous':1699 'warn':954 'watch':150,286,324,373,552,916,933,945,1821 'web':1406 'websocket':46,137,152,283,321,340,366,387,1816 'whose':1077,1157,1249 'wi':1806 'wi-fi':1805 'wifi':58,450,485,837,2082 'wireguard':1174,1265,1309,2086,2105 'without':1622 'work':1830 'workflow':1888 'worth':86 'wrap':177,1005,1072,1152,1244,1304,1386,1437,1475 'wrapper':1577,1593 'write':980,1944 'xarg':770 'y':1776 'yaml':756,758 'yes':1775,1983 'zero':1880 'zone':62,504,841,967,975,978,991,994 'zsh':693","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-18T18:55:10.591Z"}],"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":190,"topics":["agent-skills","cli","networking","openclaw-skill","ratatui","rust","terminal","tui","ubiquiti","unifi"],"license":"apache-2.0","html_url":"https://github.com/hyperb1iss/unifly","pushed_at":"2026-05-06T02:34:51Z","description":"🌐 Elegant UniFi network management CLI & TUI - for humans and agents","skill_md_sha":"6fb24359be52f1a24bf16074e5ee4ed94c281a94","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-18T18:55:10.591Z"}}