Client Apps

SkyView offers three clients: the web admin (management + big screen), Android, and iOS. This chapter covers how to connect, remote-access essentials, and the differences between live view and playback.

Web admin

Open the server's IP:23406 in a browser. It's the most complete: camera management, Live, playback, events, the face library, sensitive zones, 115 Cloud, and settings are all here. Chrome / Edge / Safari / Firefox versions from the last 2 years are supported. Mobile browsers are responsive but not as smooth as the native apps.

Android app

For now, grab the standalone APK from the official Download page and install it directly. Once installed, the APK automatically checks for new versions via the license-server heartbeat, and you can upgrade in-app with one click when an update is found (no need to return to the website to download manually). It's not yet listed on Google Play or domestic app stores.

  1. 1

    Enter the server address on first launch

    On LAN, fill http://192.168.x.x:23406; for public access, fill https://your-domain.com (HTTPS required — plaintext HTTP is blocked by default on Android 9+)

  2. 2

    Log in with the admin account

    If you also want family to use it, create sub-accounts (view-only) in the web admin

  3. 3

    Wait for the camera list to load

    The first connection fetches all cameras, the face library, and settings; done within a few seconds

  4. 4

    Watch Live

    Defaults to the low-latency channel (within 500ms), auto-switching to the stable channel if it doesn't connect. Tap the frame for full screen, pinch with two fingers for PTZ zoom

iOS app

Search "SkyView" in the App Store to download. Features are identical to Android. Supported from iOS 16.1.

Remote access essentials

Read before exposing to the public internet

SkyView listens on 0.0.0.0 and ships no firewall rules. Exposing 23406 / 23880 / 24214 / 23515 straight to the internet means every scanner on the planet can find your cameras. To watch from outside, use public direct access (one TCP port, HTTPS and a login, with the certificate issued automatically from the web UI) or a mesh VPN — never forward the LAN ports as-is.
  • Easiest: Tailscale / WireGuard mesh — the app reaches the LAN address from inside the virtual network, nothing is exposed, nothing to maintain
  • Recommended: turn on public direct access — enter your domain to get a certificate, pick a public port, then forward that single TCP port on the router (with IPv6 you don't even need to forward), and live view stays sub-second from outside
  • Ports to open on the LAN: 23406/tcp (web + API + streaming) and 23515 (live video, UDP + TCP); 23880 is optional and 24214 is internal, no need to open it
  • HTTPS is mandatory: browsers and Android 9+ refuse camera permissions on plain HTTP

For step-by-step instructions on public direct access, mesh VPN and reverse proxy — plus automatic certificates, nginx / Caddy templates and the port cheat sheet — see Remote Access.

Live view vs. playback

Live defaults to the low-latency channel (< 500ms), auto-switching to the stable channel (2–4s) after a 5-second handshake failure. Playback always uses the stable channel (it doesn't need ultra-low latency, and speed / seek are more stable).

If Live keeps stalling, it's most likely that the low-latency channel's UDP egress is blocked by a firewall, so it auto-switches to the stable channel — latency becomes 3 seconds but it plays. The same applies when a public deployment hasn't opened the 23515 UDP port.