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 by default with no firewall rules. Exposing 23406 / 23880 / 24215 / 23515 directly to the internet = the whole world can scan your cameras. Always go through a reverse proxy + HTTPS + a strong password.
  • Simplest: set up a VPN with Tailscale / Wireguard, and have the app access the internal IP within the VPN network — nothing exposed publicly, zero ops
  • Formal deployment: use a Cloudflare Tunnel / Caddy reverse proxy with auto-renewing HTTPS, hiding the server's real IP
  • Ports to open: 23406 (admin + API, TCP), 24215 (live-view signaling, TCP) + 23515 (live-view UDP); 23880 is optional
  • HTTPS required: browsers and Android 9+ don't allow plaintext HTTP to obtain camera permissions

For detailed steps for all three approaches (mesh VPN, reverse proxy, port forwarding), nginx / Caddy config templates, and a 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.
Client Apps - SkyView Docs