
Photo-Shot
A mobile-first, installable (PWA) AI image studio: edit and upscale photos across many image models, or copy EXIF metadata between images - all from one small self-hosted app. Free and open source (AGPLv3).

One studio, many models
- Multi-provider editing: one UI in front of fal.ai (12 models), WaveSpeed (10) and OpenRouter (7) - Nano Banana 2 / Pro, Seedream v4.5 and v5, GPT Image 2, Grok Imagine, Reve 2.1, Qwen Image 3 Pro and more.
- Model-aware controls: each model exposes only its real aspect ratios, resolutions (2K/3K/4K, 8K on some), multi-image limits and extras such as output quality and format, web search or OpenRouter FLEX - with a live per-image price estimate.
- Text-to-image, image-to-image and re-edit: up to 5 reference images, prompt templates, and a one-tap "edit this result again" loop. GPS and time can carry over from a reference image to the generated result.
- Cost tracking: lifetime, monthly and daily spend with a per-provider and per-model breakdown.
- Upscaling: Crystal Upscaler at 1-200x with an adjustable creativity setting, or SeedVR2 at 1-10x and fixed targets from 720p to 2160p.
- History across devices: generated images are kept on your server for 90 days, with individual and bulk delete.
EXIF metadata copier
Copy full EXIF, GPS only, GPS + time, or a custom field set from a source JPEG onto a target image - with optional pre-clear and PNG-to-JPEG conversion. Useful when an edited or AI-generated image should keep the original photo's location and timestamp.
Private by architecture
The browser never calls the AI providers directly. A small server-side reverse proxy (nginx) injects the provider API keys, so the keys live only on your server and never reach the browser. Every API request must carry the unlock password, which nginx verifies - without it, neither the models nor the keys are reachable.
Deployment is a single docker compose up: nginx serves the static PWA bundle and the API proxy, with an optional Cloudflare tunnel. Built with React 19, TypeScript 7, Vite 8 and Tailwind CSS 4 (local build, no CDN), plus vite-plugin-pwa for the installable, offline-capable app shell with HEIC conversion and pull-to-refresh. It expects an existing Traefik setup on an external proxy network.
Get Photo-Shot
Free software under the AGPLv3 - self-host it with Docker in minutes.