☄️ Photogram
A 3D time machine for places. An offline, interactive globe with open-data points of interest and sample photo pins — a demo of the spatial photo experience to come.
Install & availability
Available now (demo mode). Install from the Companion Hub App Store. The published image ships as a self-contained demo; see Current capabilities for what that means.
| Hub App Store | Search Photogram → Install |
| Container image | ghcr.io/companionintelligence/ci-photo-time-machine:latest (public) |
| Web UI port | 5173 |
| Architecture | linux/amd64 and linux/arm64 (multi-arch) |
| Stateless | No persistent volumes required |
The in-app title and HUD read “CI Time Machine · M2”, while the marketplace listing calls it Photogram. Same app — the names differ between the listing and the running UI.
Overview
Photogram (Companion Photo Time Machine) is a locally-hosted, offline procedural 3D globe that demonstrates the spatial-photo experience Companion Intelligence is building toward. In this build it renders a generated globe, drops open-data points of interest, and shows a handful of sample photo pins so you can explore the interface. It requires a browser with WebGL2.
This is a demo of the experience, not yet a personal photo library. The capture apps and the Gaussian-splat trainer that would turn your own photos into 3D scenes are separate components that are not deployed in this image.
Current capabilities
What Photogram does today, as shipped:
- Offline procedural 3D globe rendered client-side (needs WebGL2)
- Open-data POI pins fetched client-side from OpenStreetMap Overpass and Wikipedia
- 4 sample Lisbon photo pins to demonstrate the photo-on-globe interaction
External network egress in demo mode is limited to overpass-api.de and en.wikipedia.org.
This build has no photo upload or import UI, no timeline scrubber, and no Gaussian-splat rendering. It also cannot attach to your own Digital Memory Server yet — see the note below.
Companion Memory connection (build-time only)
Connecting Photogram to a Companion Memory / CI-Server instance is configured at build time via Vite environment variables such as VITE_CI_MEMORY_URL. The published image is built without these set, so it runs purely in demo mode and cannot fetch from a user’s CI-Server. To wire it up you would rebuild the image with the appropriate VITE_CI_* build args.
Planned / roadmap
Described in the product vision but not in this release:
- Importing and managing your own photo collections
- Reconstructing photos/video into 4D Gaussian Splats (requires the separate, undeployed splat-trainer)
- A capture-app pipeline feeding scenes into the globe
- A timeline scrubber to move through time
- Integration with Spatial Time Machine and Digital Memory
What is Gaussian Splatting?
3D Gaussian Splatting represents a scene as millions of tiny ellipsoidal “splats,” each with color, opacity, and position parameters. Trained from a photo set, the result is a photorealistic, freeform 3D representation navigable from any viewpoint. Photogram is being built toward this experience; the trainer is not part of the current demo image.
Use Cases
- Explore an offline 3D globe with open-data landmarks layered on
- Preview how photos pin to real-world locations using the sample Lisbon set
- Evaluate the spatial-photo interface ahead of the capture/reconstruction pipeline
Setup
Install from Hub
Search for Photogram in the Hub app store and install.
Open Photogram
Navigate to http://photogram.ci.localhost in a WebGL2-capable browser. The procedural globe loads with open-data POIs and the sample Lisbon pins.
Usage
Exploring the Globe
Orbit and zoom the procedural globe. Open-data points of interest are fetched live from Overpass and Wikipedia; the four sample Lisbon pins demonstrate the photo-on-globe interaction.
Troubleshooting
Globe doesn’t render The browser must support WebGL2. Verify hardware acceleration is enabled.
No POIs appear
POIs are fetched client-side from overpass-api.de and en.wikipedia.org. If the device has no internet egress to those hosts, only the procedural globe and sample pins are shown.
Looking for my own photos Photo import and Gaussian-splat reconstruction are not in this demo build — see Planned / roadmap.