A visionOS app for Apple Vision Pro that transforms your 2D images into immersive 3D spatial photos. Browse your media library from a Stash server or use the built-in demo mode.
- 2D to 3D Conversion - Uses Apple's RealityKit to convert standard images into spatial 3D photos viewable on Vision Pro
- Stash Server Integration - Connect to your Stash media server via GraphQL API to browse images and videos
- Advanced Filtering - Filter by galleries, tags, ratings, and O-count with saved filter presets
- Video Playback - Stream videos directly from your Stash server
- Demo Mode - Try the app with bundled sample images without server setup
- Apple Vision Pro or visionOS Simulator
- Xcode 15.0+
- visionOS 1.0+
- (Optional) Stash server for media library integration
-
Clone the repository:
git clone https://github.com/illixion/spatialstash.git cd spatialstash -
Open the project in Xcode:
open SpatialStash/SpatialStash.xcodeproj
-
Select your development team in Xcode (Project → Signing & Capabilities)
-
Build and run on visionOS Simulator or device (Cmd+R)
The app starts in demo mode with sample images. No configuration required.
To connect to your Stash server:
- Open the app and navigate to the Settings tab
- Change Media Source to "Stash Server"
- Enter your Stash server URL (e.g.,
http://192.168.1.100:9999) - Enter your API key if authentication is enabled
- Tap Apply & Test Connection
Browse your image gallery in a grid view. Tap any image to view it full-screen with spatial 3D conversion:
- Use the bottom ornament controls to navigate between images
- Tap the 3D button to generate a spatial 3D version of the current image
- The window automatically adjusts to match image aspect ratios
Browse and play videos from your Stash server with standard playback controls.
Create complex queries to filter your media (Stash server only):
- Search by title
- Filter by galleries and tags
- Filter by rating (1-5 stars) or O-count
- Sort by date, title, rating, or random
- Save filter combinations as presets for quick access
Configure your media source and server connection. View statistics about loaded content.
The app follows a SwiftUI architecture with:
AppModel- Central@Observablestate container- Protocol-based data sources (
ImageSource,VideoSource) for swappable implementations StashAPIClientactor for thread-safe GraphQL communication- RealityKit integration via
ImagePresentationComponentfor spatial photos
See LICENSE.txt for licensing information.
- Stash - Self-hosted media organizer
- Built with Apple's RealityKit and SwiftUI frameworks



