The Alta verify endpoint requests an optional TLS client certificate. Chromium's network stack (net.fetch) reacts by aborting the handshake with ERR_SSL_CLIENT_AUTH_CERT_NEEDED, and the select-client-certificate event never fires to let us proceed — so cloud verification silently failed only in the desktop build, looking like the app was offline. Issue the request via Node's https module instead, matching the Python app.py reference (urlopen) and curl, which ignore the optional client- cert request and proceed normally. Same 2xx-means-verified semantics, 10s timeout, and return shape. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Alta Video Player (WebAVP)
WebAVP is a local player for Alta/Ava Security camera exports. It focuses on core review workflows: importing video exports, synchronizing multiple cameras on one timeline, zooming into footage, and validating export integrity.
The app can run in two modes:
Core Features
- Drag/drop individual video and metadata files, folders, or ZIP archives
- Import unencrypted ZIPs through vendored JSZip
- Import AES-encrypted ZIP exports with an in-app password prompt
- Synchronize multiple camera segments on a shared timeline
- Scrub, zoom, pan, change playback speed, and frame-step footage
- Reorder, hide/show, expand, and manually lay out camera tiles
- Use region zoom and scroll zoom tools
- Verify signed exports offline and optionally confirm certificates with Alta's cloud verification endpoint
- Preserve sessions across refreshes with IndexedDB
Standalone desktop app (Electron)
npm install
npm start
The Electron shell loads the existing UI through the custom webavp://app/ protocol, so local assets are served from the packaged app instead of brittle file:// paths. Certificate verification is bridged through Electron IPC (window.webavpNative.verifyCertificateOnline) and performed in the main process.
Packaging scripts are included:
npm run dist
electron-builder is configured for Linux AppImage/deb, macOS dmg, and Windows nsis. Cross-platform packaging still needs to be run on the target OS/build host.
Web/Python mode
python3 app.py
# http://0.0.0.0:5152
The Python stdlib server serves /, /static/*, and /api/verify-cert. There are no Python package dependencies.
Checks
npm run check
xvfb-run -a npm run smoke
check runs Electron main/preload syntax checks and py_compile for the Python server. smoke starts Electron, waits for webavp://app/index.html to finish loading, then exits automatically. On a desktop session, npm run smoke is enough; on headless Linux, use xvfb-run -a npm run smoke.