OpenPocketCine
The open field monitor for DJI Osmo.
Pro scopes, exposure assists, camera and gimbal control, playback and LUT export on your phone.
Free and open source.
Website · Docs · Roadmap · Report a bug
Table of contents
Supported cameras
| Camera | Live view | Camera control | Gimbal | Notes | |
|---|---|---|---|---|---|
![]() |
Osmo Pocket 4 Pro | ✅ | ✅ | ✅ | Primary test camera. 1×/3× optical, 6×/12× zoom. D-Log2 hops to D-Log when you zoom. |
![]() |
Osmo Pocket 4 | ✅ | ✅ | ✅ | 1×/2×/4× zoom. |
![]() |
Osmo Pocket 3 | ✅ | ✅ | ✅ | The wider format and firmware matrix still needs testing. |
![]() |
Osmo Nano | ✅ | ✅ | – | Fixed 1× lens, so zoom controls are hidden. |
![]() |
Osmo Action 6 | 🧪 | 🧪 | – | Built from a capture of the camera, not yet checked on one. Adds an APERTURE control. |
✅ works on iOS and Android · 🧪 built, not yet verified on the camera · – not on this camera. Other Osmo models can appear in Bluetooth scan; other Action models and 360 live view are not captured yet.
[!WARNING] Camera control is reverse-engineered and can be incomplete. 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 picture you are judging. Drag and resize them anywhere.
- Catch exposure and focus before the take. False color (CineStop scene stops, Video, IRE and Limits), zebras, Traffic Lights, focus peaking, an EV meter, ND suggestions and LEVEL roll and tilt meters.
- Frame once for every delivery. Grids, aspect guides and a center crosshair, in landscape and portrait.
- Run the camera from the phone. Record, ISO, shutter, white balance, EV, zoom and FORMAT. Tap a face on the feed to start the camera's subject tracking.
- Fly the gimbal. On-screen stick or a game controller, Direction Lock, Double-tap Level, and experimental Motion Control moves.
- Watch several cameras. Experimental Multiview puts up to four Osmo cameras on one screen, with per-camera looks and group recording.
- Review before striking the set. Browse clips and stills on the camera, star the keepers, delete bad takes, and play back with the same scopes and assists as live view.
- Ship it with the look baked in. Built-in or custom
.cubeLUTs, Convert log on export, native share, and optional Frame.io upload with your own Adobe app keys.
iPhone and iPad are the daily driver. Android has the monitor, assists, camera and gimbal control, Multiview and playback. iOS only today: LUT bake and Convert log on export, Frame.io upload, feed sharing to other devices, Apple Watch, AirPods head tracking, and per-camera Wi-Fi and Hotspot setups.
See it in action
Install
| Platform | How | Notes |
|---|---|---|
| iPhone and iPad | Join the TestFlight | One universal app. |
| Android | Public beta on Google Play | Android 10 or newer, arm64. |
| Android without Play | Sideload APK (0.1.5 (6)) | 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 camera nearby. See the iOS and Android guides and the latest release notes.
In the press
Also covered by Newsshooter, Gadget Pilipinas and Mark Exploring New Stuff.
Roadmap
The roadmap lives in GitHub Discussions.
Browse the Ideas category
to vote, add production context, or propose what to tackle next. Roadmap threads describe
direction, not promised dates. Engineering-phase detail lives in docs/ROADMAP.md.
Free. Open source. Yours
No subscriptions, no paywalls, no advertising, and no tracking. Crash reports are opt-in.
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. Engineering guidelines live in AGENTS.md.
For developers
Built with
Architecture
A shared Swift business and 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 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.
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 test # run Swift package tests
just native-check # run Swift tests and build the native iOS app
just android-check # build, test, and lint Android
just handbook # docs at http://127.0.0.1:4321/
The iOS Xcode project is generated:
cd ios && xcodegen generate && open OpenPocketCine.xcodeproj
[!TIP] The Simulator and emulators have no Bluetooth or camera Wi-Fi. Pairing and live view need a physical iPhone or Android phone and a camera.
Releases: TestFlight archives come from Xcode Cloud (docs/testflight-ci.md).
Play closed testing and the sideload APK are in docs/android-play-ci.md.
Documentation
- Docs: protocol, iOS and Android apps, and how to build. 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)AGENTS.md: always-loaded index for coding agents
OpenPocketCine went through an extended private R&D phase before publication; the public repository starts from a squashed initial commit rather than carrying the experimental history.
Contributing
Contributions are welcome.
- Read
CONTRIBUTING.mdfor the development workflow, code standards, and how to report bugs vs. request features. - Bugs go in GitHub's bug-report form. Never put camera Wi-Fi passwords or captures in an issue.
- Ideas and questions go in GitHub Discussions: Ideas and Q&A.
- Please read the
CODE_OF_CONDUCT.md. For security issues, seeSECURITY.md.
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
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. If you care about talking to Osmo cameras, Konrad's work is worth your time.
License
Apache 2.0. Third-party licenses are listed in
THIRD-PARTY-NOTICES.md. The app's privacy policy lives at
opencapture.org/openpocketcine/privacy.
This project is not affiliated with or endorsed by SZ DJI Technology Co., Ltd. No DJI SDK or proprietary documentation is included in, distributed with, or required by this project. "DJI", "Osmo", "Osmo Pocket", "Osmo Action", "Osmo Nano", and "Mimo" are trademarks of SZ DJI Technology Co., Ltd., used here for identification only.













