The skywire visor requires a JSON-formatted config file to run,
produced by skywire cli config gen.
The skywire-autoconfig script included with the skywire package
handles config generation and config updating for the user who
installed the package, as well as restarting the skywire systemd
service.
Detailed command flag documentation lives at /docs/skywire/cli/config/ and /docs/skywire/visor/. The most important flags are noted below.
To run skywire, first generate a config:
skywire cli config gen -irx
- service protocol — the config uses dmsg only by default (
-d --dmsghttp); pass--httpfor HTTP-only, or--dualfor HTTP with dmsg fallback -i --ishvcreate a local hypervisor configuration (optional)-r --regenregenerate a config which may already exist, retaining the keys-x --retainhvretain any remote hypervisors set in the config (optional)
More options for configuration are displayed with skywire cli config gen --all.
NOTE: If you have installed skywire as a package or via the windows .msi
or mac installer, include the -p flag — and skywire cli config gen
must be run as root.
In order to expose the hypervisor UI, generate a config file with the -i / --ishv flag:
skywire cli config gen -i
After starting up the visor, the UI will be exposed by default on localhost:8000.
A terminal-based hypervisor that mirrors the web UI's read and write actions without requiring a browser:
skywire cli visor hv tui
Lists all visors connected to the running hypervisor and (when one is selected) shows transports, apps, route groups with full multi-hop paths, DMSG servers, and a row of hotkey-driven actions: start/stop apps, set min_hops/mux_routes, manage transports/routes, toggle resolving proxies, register skynet/forwarded ports, run dmsg connect-all, view services-health, reload or shutdown.
When a hypervisor has another hypervisor in its hypervisors config, the
parent hypervisor transparently sees and manages the child's connected visors —
write actions are routed through the child automatically.
Every visor can be controlled by one or more hypervisors. To allow a hypervisor to access a visor, the PubKey of the hypervisor needs to be specified in the configuration file. You can add a remote hypervisor to the config with:
skywire cli config update hv --add-pks <public-key>
OR:
skywire cli config gen --hvpks <public-key>
OR, on a running visor (connects out immediately and persists the PK — but the inbound CLI-bridge access the PK grants starts on the visor's next restart, when the RPC listeners and whitelist are rebuilt):
skywire cli visor hv add <public-key>
A listed hypervisor PK is also what authorizes full remote CLI control
of the visor (skywire cli --via dmsg://<pk> …) — the trust model,
the remote-diagnosis workflow, and the mobile-visor specifics are in
remote-visor-cli.md.
Skywire includes a network visualization and visor control interface that can run in two modes.
Visor-embedded mode (recommended when visor is running):
skywire cli tp viz --visor
This starts the UI as part of the visor, with direct access to local transport and route data.
Standalone mode (network visualization only):
skywire cli tp viz
This runs a standalone visualization server using transport discovery data.
The web UI (default localhost:8080) provides:
- Real-time network graph: Visual representation of visors and their connections in the Skywire network
- Transport information: View active transports with details on type (STCPR, SUDPH, DMSG), remote public keys, and connection status
- Geographic clustering: Visors are grouped by country and IP subnet for easier network topology understanding
- Click-to-copy: Easily copy public keys by clicking on nodes in the graph
- Visor control (visor mode): Direct interface for managing the local visor
Note: This is a separate UI from the hypervisor interface and caches transport data locally.