Open source macOS video library. Beautiful. Minimal. Native.
Offline Cinema is a native macOS application for managing and watching your local video library. Inspired by Apple Books, it provides a clean, minimal interface that feels right at home on macOS.
This project is fully open source. You can clone it, build it, modify it, and use it however you like.
- Drag and drop videos to build your library
- Track progress with automatic resume
- Organize with custom collections
- Full playback with keyboard controls and Picture-in-Picture
| Feature | Description |
|---|---|
| Smart Filters | All, Watching, Finished – automatically organized |
| Collections | Create custom collections with icons and colors |
| Progress Tracking | Automatically saves your position and watch state |
| Picture-in-Picture | Watch in a floating window while you work |
| Keyboard Shortcuts | Space, arrows, F for fullscreen |
| Video Formats |
|---|
| MP4, MOV, MKV, AVI, M4V, WebM, WMV, FLV, 3GP, OGV |
- macOS 14.0+
./build-app.shThis will:
- Build the app in release mode
- Create the
OfflineCinema.appbundle - Launch the app automatically
If you need to rebuild from scratch:
swift package clean && rm -rf .build OfflineCinema.app && ./build-app.shAlternatively, open OfflineCinema.xcodeproj in Xcode and build from there.
The build script automatically launches the app. To run it manually:
open OfflineCinema.appcp -r OfflineCinema.app /Applications/| Key | Action |
|---|---|
Space |
Play / Pause |
← |
Skip back 10s |
→ |
Skip forward 30s |
↑ / ↓ |
Volume |
F |
Fullscreen |
Esc |
Exit player |
⌘O |
Import video |
offline_cinema/
├── OfflineCinema/
│ ├── Models/ # Video, Collection, WatchProgress
│ ├── Services/ # VideoLibrary, Persistence, Thumbnails
│ ├── Views/ # SwiftUI views
│ └── Assets.xcassets/ # App icons and colors
├── build-app.sh # Build script
└── Package.swift # Swift Package Manager config
Your library data is stored in:
~/Library/Application Support/OfflineCinema/
Videos are not copied – only references (bookmarks) are stored.




