Your DJI Osmo camera, on your Mac. Wireless downloads, no phone app, no account.
Download your footage over Wi-Fi, control the camera and see it live, or use it as a webcam over USB. A native macOS app that looks like a piece of gear.
smithplus.github.io/Osmotic · made by smithplus
DJI's own app sends footage wirelessly to a phone only; to get it onto a computer it's a cable or a card reader. Osmotic lets the Mac talk to the camera directly, at about 33 MB/s with a Pocket 3.
- Everything lands where you expect it:
~/Downloads/DJI, one folder per day (you can turn that off), each file dated with the moment it was shot, so Finder and your editor sort it right. - Nothing twice. A clip already on your Mac is skipped, never replaced; a half-downloaded one picks up where it stopped, even clips over 4 GB.
- Proxies for previews. Space bar opens a quick preview using the camera's light
.LRFproxy, not the full 4K file. - The extras: RAW
.DNGnext to photos and the backup.WAVnext to clips (on by default; turn them off in Settings). - Keyboard all the way: arrows, ⇧ to extend, space to preview, ⌘D and ⇧⌘D to download.
- Updates itself from GitHub Releases, only after checking the release's signature.
- English and Spanish, following your Mac's language. VoiceOver labels, Reduce Motion and a dark hardware look throughout.
- Download the latest
Osmotic-x.y.z.dmg, open it and drag Osmotic onto Applications. - Open Osmotic. The first time, macOS says it can't verify the app: this build isn't notarized by Apple yet (the project has no paid Apple Developer account). Go to System Settings › Privacy & Security, scroll down and click Open Anyway next to the message about Osmotic.
- Turn on your camera and click Connect. The first time, approve the pairing on the camera's screen.
Later versions install themselves (Osmotic › Check for Updates…).
Requirements: macOS 15 Sequoia or later, Apple silicon or Intel, Bluetooth and Wi-Fi.
| Permission | Why |
|---|---|
| Bluetooth | Find the camera and pair with it |
| Location | macOS only tells apps the name of your Wi-Fi network if they have it; Osmotic uses the name to rejoin your network afterwards. Your location is never read or stored. |
| Local Network | Talk to the camera at 192.168.2.1 |
| Downloads folder | Save to ~/Downloads/DJI |
| Removable volumes | Read the camera's card when it is plugged in over USB |
| Camera | Show the picture in the Webcam tab (asked only once a camera is plugged in) |
| Notifications | Tell you when a download finishes |
No account, no analytics; nothing leaves your Mac except update checks with GitHub. See SECURITY.md.
| Camera | Files | Live | Tested with Osmotic |
|---|---|---|---|
| Osmo Pocket 3 | ✅ | ✅ | Yes: connect, list, download, record, modes, live view |
| Osmo Pocket 4 / 4 Pro | ✅ | ✅ | Not yet; same protocol, verified in Osmosis |
| Osmo Action 4 / 5 Pro / 6 | ✅ | No | Not yet; verified in Osmosis |
| Osmo Nano | ✅ | No | Not yet; verified in Osmosis |
If you try one of the untested cameras, a report with the technical log (Window › Technical Log, ⌥⌘L) helps a lot.
sequenceDiagram
participant Mac as Mac (Osmotic)
participant Cam as Osmo camera
Mac->>Cam: Bluetooth LE: pair, wake
Cam-->>Mac: its Wi-Fi name and password
Mac->>Cam: joins the camera's Wi-Fi
Mac->>Cam: UDP datalink (DUML): enter playback, list the card
Cam-->>Mac: file list (CompositePack)
Mac->>Cam: HTTP: thumbnails, previews, resumable downloads
Mac->>Cam: leave playback
Note over Mac: back on your Wi-Fi
While connected, the Mac uses the camera's Wi-Fi, so it has no Internet over Wi-Fi; Ethernet, or an iPhone sharing its connection over a cable, keeps you online. The protocol notes are in docs/PROTOCOL.md and docs/CONTROL.md.
What happens if I download the same clip twice? Nothing: it's skipped. Osmotic never replaces a file in your folder; an unfinished one resumes from where it stopped.
Does it delete anything from the camera? No. It never deletes or changes files already on the camera.
Something doesn't work. Open Window › Technical Log (⌥⌘L) and attach the file to an issue. The log leaves out your Wi-Fi password and network name.
Is there a manual? Yes: the guide covers every screen, the keyboard shortcuts and what to try when something fails.
One repository, three things: the app, the site and the tooling.
| Path | What |
|---|---|
Sources/OsmoticCore |
the protocol, without UI (BLE, pairing, the UDP datalink, the file-list decoder, HTTP downloads, capture control, live-view reassembly) |
Sources/Osmotic |
the SwiftUI app (CoreBluetooth, CoreWLAN, AVFoundation) |
Tests |
the golden captures, the fake camera and the fake HTTP server |
site |
the landing page (static HTML, CSS and JS; published by GitHub Pages) |
scripts |
build, sign, release, screenshots, textures, icon, launch assets, SEO audit |
docs |
the guide, status, architecture, protocol, launch kit |
Xcode 26 (Swift 6.2 or later).
git clone https://github.com/smithplus/Osmotic.git && cd Osmotic
swift test # 94 tests: protocol, decoder, downloads, a simulated Pocket 3
scripts/package_app.sh # build/Osmotic.app
open build/Osmotic.appSources/OsmoticCore: the protocol, without UI: BLE frames, pairing, the UDP datalink, the file-list decoder, HTTP downloads, capture control and live-view reassembly.Sources/Osmotic: the SwiftUI app (CoreBluetooth, CoreWLAN, AVFoundation).Tests: the decoder against 14 real captures from the Osmosis project, a fake camera over UDP, a misbehaving HTTP server and fuzzing for everything that comes off the network.
Contributors and AI agents: start with CONTRIBUTING.md and CLAUDE.md (also AGENTS.md). Releases: scripts/release.sh X.Y.Z.
Osmotic is a native macOS port of Osmosis: the pairing flow, the camera's control protocol (DUML) and the file-list decoder are a Swift port of Konrad Iturbe's work, checked byte for byte against his captures. Thank you to everyone below.
Code this app is built from
- Osmosis by Konrad Iturbe: the protocol and file-list decoder this app is ported from (MIT).
- Kaze for DJI by Brian Merchant: capture control and live view, adapted (MIT).
- OpenPocketCine by erik-sutton95: live-view and control notes (Apache-2.0; re-implemented from its documentation).
Protocol research: the DJI OGs, dji-remote, osmo-download, DJI-Wifi-Connect, lib-osmo-ble, dji_protocol and reverse-engineering-dji.
Osmosis' testers, whose captures test this app too: Rhoenschrat, Juan Irache, GetHypoxic and Ave.
The same list is in the app: Settings › Credits.
Made by smithplus. If it saved you a cable, buy me a coffee. MIT. Osmotic is an independent project, not affiliated with or endorsed by DJI. "DJI" and "Osmo" are trademarks of their owners. The screenshots show demo data.



