Elsinore

Native client for Frigate NVR

Applies to: iOS and iPadOS 26 / macOS 26.5 / Frigate 0.17+

Connect to your server

On this page

The first run asks for one address and one login, then proves the connection works before it moves on.

The onboarding flow

Six steps, two of which are skipped when they do not apply. A footer carries Back and Continue.

Welcome

The castle artwork, the name, and the line "Local first, private by design, fast." One button: Get Started.

Server

"Connect to your Frigate server, or to a Marcellus instance in front of it." Fill in the server URL, username, and password, then tap Test connection. Continue stays disabled until that test succeeds, because the successful test is also what commits your credentials.

Which address? If you run a Marcellus sidecar, enter its address and port. Otherwise enter the address you open Frigate's web interface at in a browser, including the port: usually Frigate's login-protected port, 8971, for example https://192.168.1.10:8971. The username and password are your Frigate login. If a browser on this device can't reach that address, the app can't either; see Remote access.

If the test fails, a Connection Doctor button appears under the result and opens the Connection Doctor as a sheet without losing what you typed. A Where do I find my server address? link opens this page.

On a local network iOS will also prompt for local-network access the first time. The step warns you so the system prompt is not a surprise.

The step explains that a Marcellus sidecar is optional and "adds event highlights, scrub previews and push alerts", with a link out to more about it.

Notifications

"Stay on top of alerts." Elsinore is silent by default. On iPhone and iPad this step mentions Live Activities on the Lock Screen; on Mac it says it notifies that Mac instead. Two buttons: Enable Notifications or Not Now.

If the system permission request does not actually land, the app rolls its own toggle back, so Settings never claims notifications are on when iOS has denied them.

Zones

Skipped entirely if your server exposes no zones. Otherwise: "What ground is what?" You confirm or correct the place class the sidecar guessed for each Frigate zone, using one picker per zone: Public, Grounds, Entrances or Restricted. The four places and what they mean are listed on the page itself, above the zones, and a summary below shows what your choices do to routing. Buttons: Looks right or Skip. If saving fails the button becomes Retry, with Continue anyway beneath it. If there are no zones yet the step says so plainly and offers Continue.

Places matter because the attention ladder routes by subject and place, not by camera.

Alerts

Skipped if zones were unavailable, and skipped if you declined notifications, because describing alert levels you will never receive is noise. Otherwise this is the same guided Alerts Setup wizard you can run later from Settings.

Done

"You're set", with a checklist of what actually happened: server connected, notifications on or off, how many zones you triaged, and the alerts summary if that step ran. Start Using Elsinore finishes.

Going back retraces the same skips in reverse, so Back never lands you on a step that was skipped.

Credentials and the Keychain

Elsinore uses Frigate's own login, not an API key. The app posts your username and password to Frigate's login endpoint and caches the session cookie it gets back.

Your credential is never sent anywhere except to the server you typed in.

Remote access

Overlay network (recommended). Install Tailscale or another WireGuard-based VPN on both the Frigate host and your device, then use the tailnet address (a 100.64.0.0/10 address, or a .ts.net MagicDNS name) as your server URL. This keeps camera traffic off the public internet and usually lets low-latency WebRTC live video work remotely.

Reverse proxy. A public reverse proxy with your own TLS certificate works too. Live video may fall back to higher-latency HLS, because WebRTC media travels on its own port and many proxies do not pass it through. See Live for what that fallback looks like.

Self-signed certificates do not work; the Connection Doctor says so explicitly when it sees one.

Connection Doctor

Settings › Server › Connection Doctor. It runs a ladder of checks in order and stops at the first hard failure, reporting each rung as it completes:

  1. Server address: does the URL parse, and will App Transport Security allow it.
  2. Network: does this device have a usable network at all.
  3. Name lookup: does the hostname resolve. Skipped for IP literals; .ts.net and .local names get their own advice.
  4. Server reachable: a request to Frigate's version endpoint.
  5. Login: an actual login attempt, distinguishing a wrong password from a cross-host redirect, a 404, and a 200 that returns no cookie.
  6. Frigate identity: is the thing answering actually Frigate, or some other service that happens to return 200.
  7. Sidecar: informational only; it never fails the run. Reports present, absent, or undetermined.

Each rung carries a plain-language explanation and advice, for example that Tailscale is not connected on this device. Report produces a plain-text transcript of PASS, WARN, FAIL, INFO, and SKIP lines, which is what to paste into a bug report.

When a sidecar with push support is present, a second Notifications ladder appears on the same page.

At the bottom, Copy live diagnostics copies a short record of when the camera page's live picture was switched on and off. Paste it into a bug report if live video does not start. Clear empties it.

Changing or removing a server

Settings › Server shows the same credentials form as onboarding.