The open field monitor for DJI Osmo.
Pro monitoring scopes, playback, camera control, and Camera-to-Cloud export with LUT
baking. Free and open source.
Join the TestFlight · Visit openpocketcine.app · Docs · Explore the roadmap
OpenPocketCine is a production monitor and remote for the DJI Osmo series. Live view is captured today for Osmo Pocket 4 / 4 Pro (HEVC) and, on iOS, Osmo Nano (AVC). Other Osmo bodies can show up in Bluetooth scan; Action and 360 live view is not captured yet.
iOS (iPhone and iPad) is the daily driver. Android lives in this repository as an early phone shell and is not on Google Play yet. The closed-beta waitlist is on openpocketcine.app.
- Read the image like a colorist. Waveform, RGB parade, histogram, and vectorscope run live on the iOS monitor.
- Catch exposure and focus before the take. False color, zebras, Traffic Lights, and focus peaking paint the iOS feed.
- Frame once for every delivery. Grids, aspect guides, and a center crosshair stay on the picture.
- Run the camera from the phone. Record, ISO, EV, zoom, and related writes on iOS, plus gimbal on Pocket. On Pocket 4 Pro, zoom in D-Log2 hops to D-Log automatically so you keep moving.
- Lock a face from the monitor. On iOS Pocket in AF-C, tap an on-device face box to start the camera's subject tracking.
- Review before striking the set. On iOS, browse clips and stills, scrub playback, check scopes, and preview the look.
- Ship it with the look baked in. On iOS, built-in or custom
.cubeLUTs, native share, and optional Frame.io Camera to Cloud when you add your own Adobe app keys.
Verify record start/stop on the camera body until you trust the link. Reverse-engineered control can be incomplete.
Face lock. On iOS Pocket in AF-C, tap a face on the feed to start the camera's subject tracking. Histogram, zebras, and a LUT stay on while you record.
Scopes. Read the image like a colorist. Waveform, RGB parade, histogram, and vectorscope run live beside the image you are judging, with Traffic Lights on the feed.
View assist. Catch it before the take. False color, zebras, Traffic Lights, peaking, grids, and crosshairs sit on the iOS assist rail — including in portrait.
Camera control. On iOS: record, ISO, EV, zoom, and related writes, plus gimbal on Pocket. On Pocket 4 Pro, zoom while you're in D-Log2 hops to D-Log automatically so you keep moving.
Media library. On iOS, browse clips and stills on the camera. Star the keepers and delete bad takes before you pack up.
Playback. On iOS and Android, the same scopes and assists as live view, armed from the playback rail (GPU LUT / peaking / zebra on Android playback is a follow-up; the chips already persist). Export with an optional baked LUT on iOS, preview high-frame-rate clips at conform speed, share natively, or upload to Frame.io when Camera to Cloud is configured.
- Bluetooth pairing, camera Wi-Fi join, saved-camera profiles, and reconnect
- Live-view monitoring, timecode, battery, storage, and camera status readouts
- Record, ISO, EV, zoom, and related camera writes on iOS, plus gimbal on Pocket (Android live control is a thinner set: record, ISO, shutter, white balance, tap-focus, gimbal stick)
- Scopes, exposure and focus assists, framing tools, and customizable DISP chrome on iOS
- Clip browsing, playback, LUT preview, LUT bake on export, and optional Frame.io on iOS
- Universal iPhone and iPad app (one adaptive monitor; pairing uses a wider two-column layout)
The native Android implementation lives in this repository as a phone shell with live pairing, HEVC live view, and GPU LUT / peaking / false colour / zebra on the feed. It is not on Google Play yet; the closed-beta waitlist is on openpocketcine.app. Clip export LUT bake and GPU scopes are iOS today.
Captured live view: Osmo Pocket 4 / 4 Pro, and Osmo Nano on iOS. Other Osmo models may appear in scan. Action and 360 live view is not captured yet.
The roadmap lives in GitHub Discussions,
where proposed features can have their own thread. Browse the
Ideas category
to vote, add production context, or propose what OpenPocketCine should tackle next. Roadmap
discussions describe direction, not promised dates or release commitments. Engineering-phase detail
lives in docs/ROADMAP.md.
No subscriptions, no paywalls, no advertising, and no telemetry. OpenPocketCine is Apache-2.0 licensed and built in public with the latest frontier models — Grok, Codex, and Claude — so filmmakers and developers can inspect, improve, and adapt the tool they rely on.
- Docs — protocol, iOS and Android apps, and how to
build. Preview locally with
just handbook. Keep them current in the same PR (standard). docs/ARCHITECTURE.md— shared Swift core and platform shellsdocs/PARITY.md— operator-visible iOS / Android contractdocs/PERFORMANCE.md— live-path SLOs (frame rate, ACK, HUD)docs/UX.md— FTUE, operator copy, help, failure statesdocs/RELEASE.md—main+ PRs +v*tags (no Git Flow)CONTRIBUTING.md— setup, GitHub workflow, and how to report bugsAGENTS.md— always-loaded index for coding agents
Production targets a shared Swift business/protocol core with native platform shells:
| Layer | Path | Purpose |
|---|---|---|
| Shared core | Sources/OpenPocketViewCore/ |
DUML framing, datalink, BLE adverts, commands, status |
| iOS app | ios/OpenPocketCine/ |
SwiftUI shell, CoreBluetooth, Hotspot Configuration, VideoToolbox |
| Android app | Apps/Android/app/ |
Jetpack Compose phone shell and Android platform adapters |
| Android facade | Sources/OpenPocketCineAndroidFacade/ |
Swift session and JNI boundary for Android |
| Tests | Tests/OpenPocketViewCoreTests/ |
Swift package tests — framing, transport, discovery, layout |
The shared Swift 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.
OpenPocketCine is deliberately, transparently built in public with the latest frontier models
such as Grok, Codex, and Claude. Engineering guidelines live in AGENTS.md.
OpenPocketCine 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.
I learned the BLE pairing and camera Wi-Fi connection path with the help of Osmosis by Konrad Iturbe — a generous open Android client for Osmo cameras. I'm grateful. OpenPocketCine is its own implementation; Osmosis was inspiration for that connection story, not a source I copied.
Please go look at Osmosis too. If you care about talking to Osmo cameras, Konrad's work is worth your time.
This project is not affiliated with DJI. No DJI SDK or proprietary documentation is included in, distributed with, or required by this project.
Tooling is managed through just:
just setup # install meta-check tools (macOS / Homebrew)
just # list all recipes
just handbook # docs at http://127.0.0.1:4321/ (live: https://openpocketcine.app/docs/)
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, and lint AndroidThe iOS Xcode project is generated:
cd ios && xcodegen generate && open OpenPocketCine.xcodeprojThe Simulator has no Bluetooth or camera Wi-Fi. Pairing and live view need a physical iPhone or Android phone.
iOS beta: TestFlight. Archives come from Xcode Cloud. One-time App Store Connect setup:
./scripts/setup-xcode-cloud.shContributions are welcome!
- See
CONTRIBUTING.mdfor development workflow, code standards, and how to report bugs vs. request features. - Bugs: GitHub's bug-report form. Never put camera Wi-Fi passwords or captures in an issue.
- We use GitHub Discussions (Ideas for features, Q&A for questions).
- Standardized labels help triage work — see
.github/labels.yml.
Please also read our CODE_OF_CONDUCT.md. For security issues, see SECURITY.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.
Apache 2.0. Third-party licenses are listed in
THIRD-PARTY-NOTICES.md. The app's privacy policy lives at
openpocketcine.app/privacy.
This project is not affiliated with or endorsed by SZ DJI Technology Co., Ltd. "DJI", "Osmo", "Osmo Pocket", "Osmo Action", "Osmo Nano", and "Mimo" are trademarks of SZ DJI Technology Co., Ltd., used here for identification only. No DJI SDK is used.