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.
Website · Docs · Roadmap · Report a bug
Table of contents
| 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.
- 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
.cubeLUTs 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:FFwhen 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.
| 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.
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.
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.
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.
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 relayThe iOS Xcode project is checked in:
open ios/Runner.xcodeprojTip
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.
- Docs: the OpenZCine handbook.
docs/ARCHITECTURE.md: shared Swift core and platform shellsdocs/connect-presentation.md: shared progress, setup choices and consentdocs/ROADMAP.md: engineering phases and statusdocs/nikon-sdk.md: the public sources behind the camera protocoldocs/flows/: user journeys and screen-level design as git-tracked Excalidraw diagrams (.excalidraw, open at excalidraw.com or with an editor extension) paired with markdown node cards. Conventions:docs/flows/README.mddocs/design/: design specs and implementation plansAGENTS.md: always-loaded index for coding agents
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.
Contributions are welcome.
- Read
CONTRIBUTING.mdfor 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-relayany 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, seeSECURITY.md.
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.
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.
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.



