Skip to content

Latest commit

 

History

217 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

OpenZCine

CI License: Apache 2.0

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

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.

Join the TestFlight beta  ·  Join the Android beta  ·  Visit openzcine.app  ·  Explore the roadmap

Made for the shot

OpenZCine turns an iPhone, iPad, or Android phone into a production monitor and remote for Nikon Z cinema cameras, with current development and testing centered on the Nikon ZR. The iOS TestFlight and Android Google Play betas are both public today.

  • 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.
  • 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 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.

See it in action

Live monitoring and camera control

OpenZCine camera controls with ISO, shutter, iris, white balance, codec, and autofocus

Scopes and on-set assists

OpenZCine histogram and RGB parade scopes over a live camera view

Playback review and Camera-to-Cloud

OpenZCine clip playback with monitoring assists

OpenZCine uploading a reviewed clip to Frame.io

Available in the open beta

  • Resilient Wi-Fi discovery, pairing, saved-camera profiles, and automatic reconnect
  • Live-view monitoring, timecode, battery, storage, temperature, and camera warning readouts
  • Record control plus ISO, shutter, iris, white balance, focus, resolution, frame-rate, and codec controls
  • Professional scopes, exposure and focus assists, framing tools, and customizable monitor layouts
  • On-device clip browsing, playback review, LUT preview, LUT-baked export, and Frame.io delivery
  • Adaptive live-view thermal management during long sessions and recording
  • Native iPhone, iPad, and Android layouts, plus Apple Watch and Wear OS companions, with Bluetooth shutter integration under hardware validation
  • USB-C tethered transport foundation alongside the primary Wi-Fi workflow

Nikon ZR is the primary hardware target today. USB-C transport, both wearable companions, and wider phone/tablet coverage continue to be hardened with real-world testing.

Roadmap shaped in the open

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 OpenZCine should tackle next. Roadmap discussions describe direction, not promised dates or release commitments. Current engineering status is visible on the read-only OpenZCine Kaneo board, while 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 built in public with Claude Code and Codex so filmmakers and developers can inspect, improve, and adapt the tool they rely on.

Architecture

Production targets a shared Swift business/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 Swift core owns all protocol logic and stays portable (no SwiftUI, UIKit, or Android dependencies). Platform shells own sockets, permissions, lifecycle, rendering, and UI.

See docs/design/specs/2026-06-20-production-native-architecture-design.md for the full architecture decision and layering rationale.

App flows

User journeys and screen-level design live in docs/flows/ as git-tracked Excalidraw diagrams (.excalidraw, open at excalidraw.com or with an editor extension) paired with markdown node cards. Conventions: docs/flows/README.md.

Built in the open

OpenZCine is deliberately, transparently built with agentic coding tools. Engineering guidelines live in AGENTS.md, design specs and implementation plans in docs/design/.

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.

No vendor SDK

This project is not affiliated with Nikon. No Nikon SDK or proprietary documentation is included in, distributed with, or required by this project. The camera protocol is implemented from public sources — see docs/nikon-sdk.md.

Development

Tooling is managed 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 and build 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

Contributing

Contributions are welcome!

  • See CONTRIBUTING.md for development workflow, code standards, and how to report bugs vs. request features.
  • Report a Problem offers two public-issue paths: an anonymous in-app report with no GitHub account (optional privacy-filtered activity events and user-selected, metadata-stripped screenshots), or a signed-in GitHub issue with richer optional details. Both paths are public; feature requests stay in GitHub Discussions and require an account.
  • Before enabling that flow in a release, follow the secret-free GitHub App and Cloudflare provisioning steps in services/bug-relay/README.md.
  • We use GitHub Discussions (Ideas category) for feature requests.
  • Standardized labels help triage work — see .github/labels.yml.

Please also read our CODE_OF_CONDUCT.md. For security issues, see SECURITY.md.

License

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

"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

32 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages