Skip to content
erik-sutton95Public

About

open source iOS and Android app for controlling and monitoring the Nikon Z cinema line.

Resources

Code of conduct

Contributing

Security policy

Stars

66 stars

Watchers

1 watching

Forks

Latest commit

 

History

1,133 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
OpenZCine app icon

OpenZCine

The open field monitor for Nikon Z.
Pro monitoring scopes, playback, full camera control, and Camera-to-Cloud export with LUT baking. Free and open source.

CI Docs License: Apache 2.0 Discussions

Join the TestFlight Get it on Google Play Download APK

Website · Docs · Roadmap · Report a bug


OpenZCine live monitor with recording status, scopes, framing guides, and camera readouts
Table of contents

Supported cameras

Camera Live view Camera control Notes
Nikon ZR ✅ ✅ Primary hardware target. Current development and testing center on it.
Nikon Z9 ✅ ✅
Nikon Z5II ✅ ✅
Nikon Z6, Z6II, Z6III, Zf, Z8, Z7, Z7II ❔ ❔ Not yet tested on the camera.

✅ working · ❔ untested.

Warning

The camera protocol is implemented from public sources and can be incomplete on bodies that have not been tested yet. Check that recording starts and stops on the camera body until you trust the link.

Features

  • Read the image like a colorist. Waveform, RGB parade, histogram, and vectorscope run live beside the image you are judging.
  • Catch exposure and focus before the take. Codec-aware false color, zebras, RED-inspired Traffic Lights, and industry-standard focus peaking work directly on the monitor feed.
  • Frame once for every delivery. Stack multiple aspect markers, custom frames, grids, crosshairs, level, and de-squeeze without losing sight of the shot.
  • Set the camera without touching the camera. Control ISO, shutter angle, iris, white balance, recording format, frame rate, autofocus behavior, and recording from the device on your rig.
  • Stay connected. Resilient Wi-Fi discovery, pairing, saved-camera profiles, and automatic reconnect, with a USB-C tethered transport alongside the primary Wi-Fi workflow.
  • Review before striking the set. Browse clips, scrub playback, check scopes and markers, and preview the selected look on-device.
  • Ship it with the look baked in. Apply built-in, RED, or custom .cube LUTs during export, then send through platform-native sharing or directly to Frame.io.
  • Keep genuine camera timecode. Monitor and multicam readouts preserve the camera-header frame counter as HH:MM:SS:FF when reported; no frame clock or rate is generated by the app.
  • Keep the monitor on your wrist. Apple Watch and Wear OS companions mirror the live feed with its LUT, camera status, timecode, and remote record control.

iPhone, iPad, and Android phones share the monitor, assists, camera control, playback, and export, with adaptive live-view thermal management during long sessions and recording. Nikon ZR is the primary hardware target today. USB-C transport, both wearable companions, Bluetooth shutter integration, and wider phone and tablet coverage continue to be hardened with real-world testing.

See it in action

OpenZCine camera controls with ISO, shutter, iris, white balance, codec, and autofocus
Camera control. ISO, shutter angle, iris, white balance, codec, and autofocus from the device on your rig.
OpenZCine histogram and RGB parade scopes over a live camera view
Scopes. Histogram and RGB parade over the live camera view, with the on-set assists alongside.
OpenZCine clip playback with monitoring assists
Playback. Review clips with the same scopes and assists as live view.
OpenZCine uploading a reviewed clip to Frame.io
Camera-to-Cloud. Send a reviewed clip, with its look baked in, straight to Frame.io.

Install

Platform How Notes
iPhone and iPad Join the TestFlight One universal app, with the Apple Watch companion.
Android Public beta on Google Play Android 10 or newer, arm64.
Android without Play Sideload APK (0.2.5 (4)) For field monitors and devices without the Play Store.

Note

A sideload APK and a Google Play install are signed differently and cannot update each other. Remove the Play or APK-mirror copy before installing the APK.

Pairing and live view need a real Nikon Z camera nearby. Guides for both apps are in the docs.

Roadmap

The roadmap lives in GitHub Discussions, where every proposed feature has its own thread. Browse the Ideas category to vote, add production context, or propose what to tackle next. Roadmap threads describe direction, not promised dates. Current engineering status is visible on the read-only OpenZCine Kaneo board, and engineering-phase detail lives in docs/ROADMAP.md.

Free. Open source. Yours

No subscriptions, no paywalls, no advertising, and no telemetry. OpenZCine is Apache-2.0 licensed and deliberately, transparently built in public with Claude Code and Codex, so filmmakers and developers can inspect, improve and adapt the tool they rely on. Engineering guidelines live in AGENTS.md.

For developers

Built with

Swift SwiftUI Metal Kotlin Jetpack Compose Vulkan

Architecture

A shared Swift business and protocol core with native platform shells:

Layer Path Purpose
Shared core Sources/OpenZCineCore/ PTP-IP protocol, camera state, Nikon property codes, discovery, pairing
iOS app ios/ SwiftUI shell, Bonjour discovery, live-view rendering, camera I/O
Android app Apps/Android/app/ Jetpack Compose phone shell and Android platform adapters
Android facade Sources/OpenZCineAndroidFacade/ Swift session and JNI boundary for Android
Wear OS Apps/Android/wear/, Apps/Android/wear-relay/ Wear UI and phone-mediated relay
Tests Tests/OpenZCineCoreTests/ Swift package tests: packet encoding, property parsing, discovery, layout
Prototype reference/flutter-prototype/ Archived Flutter reference, not part of production CI

The shared core owns protocol logic and stays portable (no SwiftUI, UIKit or Android dependencies). Platform shells own sockets, permissions, lifecycle, rendering and UI. See docs/ARCHITECTURE.md and the architecture decision.

Build from source

Tooling runs through just:

just setup                 # install meta-check tools (macOS / Homebrew)
just                       # list all recipes
just check                 # run repository quality checks
just format                # format Swift sources
just test                  # run Swift package tests
just native-check          # run Swift tests, then build and test the native iOS app
just android-build         # build the Android app and staged Swift runtime
just android-check         # build, test, compile device tests, and lint Android
just android-release-check # verify the signed phone/Wear release pair
just bug-relay-check       # test the standalone anonymous bug-report relay

The iOS Xcode project is checked in:

open ios/Runner.xcodeproj

Tip

Most of the app works without a camera: add ZC_DEMO_AUTOSTART=1 to the Runner scheme's environment for a demo live-view session (see CONTRIBUTING.md). Pairing and live view need a real Nikon Z camera.

Releases: TestFlight builds come from Xcode Cloud, with a GitHub Actions fallback (docs/testflight-ci.md). Play testing and the sideload APK are in docs/android-distribution.md.

Documentation

OpenZCine went through an extended private R&D phase before publication; the public repository starts from a clean slate with a squashed initial commit rather than carrying the experimental history along.

Contributing

Contributions are welcome.

  • Read CONTRIBUTING.md for the development workflow, code standards, and how to report bugs vs. request features.
  • Report a Problem (iOS and Android) is the problem report form shared with OpenPocketCine: it sends your description, an optional reply email, technical details only if you include them, and photos privately to OpenCapture through Sentry. Automatic error reports are a separate opt-in, off by default. Neither app calls the anonymous relay in services/bug-relay any more.
  • Ideas and questions go in GitHub Discussions (an account is required): Ideas and Q&A.
  • Standardized labels help triage work; see .github/labels.yml.
  • Please read the CODE_OF_CONDUCT.md. For security issues, see SECURITY.md.
Contributors

Support

I truly appreciate everyone who uses this project, files an issue, or sends a patch. Optional Buy Me a Coffee contributions help keep the lights on. If you would rather give to a charity, especially one that helps animals, that is just as welcome.

Credits

The R3D NE Monitor built-in look was contributed by Wang Yuehua and ships with permission, credited in the app's LUT picker beside the look itself. Nikon PTP/MTP property and operation codes were cross-checked against the libgphoto2 project's public protocol tables; no libgphoto2 source is included. Details for both are in THIRD-PARTY-NOTICES.md.

License

Apache 2.0. Third-party licenses are listed in THIRD-PARTY-NOTICES.md. The app's privacy policy lives at opencapture.org/openzcine/privacy.

This project is not affiliated with Nikon. No vendor SDK or proprietary Nikon documentation is included in, distributed with, or required by this project. The camera protocol is implemented from public sources; see docs/nikon-sdk.md. "Nikon", "Nikon Z", "ZR", and "Z Cinema" are trademarks of Nikon Corporation, used here for identification only.

About

open source iOS and Android app for controlling and monitoring the Nikon Z cinema line.

Resources

Code of conduct

Contributing

Security policy

Stars

66 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages