- Svelte 37.8%
- TypeScript 31.1%
- Rust 25%
- Kotlin 1.4%
- CSS 1.4%
- Other 3.2%
|
Some checks are pending
test / frontend (push) Waiting to run
Installers are named AIOMM-<platform>-<version>.<ext>, e.g. AIOMM-Android-universal-1.0.0.apk. README and the static site link releases and source code on git.juliandigitalproducts.de, GitHub is marked as coming soon. |
||
|---|---|---|
| .forgejo/workflows | ||
| .github/workflows | ||
| docs | ||
| models | ||
| public | ||
| scripts | ||
| src | ||
| src-tauri | ||
| test-fixtures | ||
| web/site | ||
| .gitignore | ||
| CHANGELOG.md | ||
| index.html | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| svelte.config.js | ||
| THIRD_PARTY_NOTICES.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
All-in-One Media Manager
Open-source, privacy-first media manager for photos and videos – with an on-device AI studio.
AIOMM finds duplicate photos and videos (even re-encoded ones), sorts media with local or remote AI, recognises people on-device, cuts intros, builds montages from a text prompt, repairs files – and now removes backgrounds, upscales photos, turns images into videos, edits photos with words and picks the best video thumbnail. Release builds: Android, macOS universal (Apple Silicon + Intel), Windows x64 and Windows ARM64, plus a browser version. 7 languages (de, en, es, fr, pt, zh, ar incl. RTL). Private by default: every permission starts switched off.
Website: allinonemediamanager.de – downloads, the browser version and documentation.
Support the project
AIOMM is free. If it saves you time, you can support the development – purely voluntary, it unlocks nothing.
Downloads
The newest installers are always at Releases → latest:
macOS universal .dmg (Apple Silicon + Intel), Windows x64 and ARM64 setup .exe, Android universal .apk.
File names carry the version, e.g. AIOMM-Android-universal-1.0.0.apk.
Source code: git.juliandigitalproducts.de/jdaniels/AllInOneMediaManager · GitHub (soon)
Screenshots
Desktop — dark mode (home, AI upscaler with live tile preview, background removal with before/after, AI image editor)
Desktop — light mode (AI studio, upscaler, background removal, local-model advisor)
Mobile — dark mode
Mobile — light mode
Screenshot photos: NASA, public domain.
Features
| Tool | How it works |
|---|---|
| Duplicates | BLAKE3 for byte-identical files; perceptual hashes (pHash/dHash/aHash, 64/256 bit, rotation-invariant option) for images; frame-signature matching with duration/size tolerances for videos; optional AI verification of borderline pairs |
| Sort media | Vision model describes each item (videos as one contact sheet), text model proposes a taxonomy with adjustable granularity and assigns categories by index (token-lean); folder templates like {category}/{year} |
| People | Face detection + 128-d descriptors on-device (face-api), centroid clustering, naming, merging; optional names from speech (Whisper-compatible STT + heuristics/LLM) linked to the face visible at that moment |
| Intro cutter | Dense per-second fingerprints; longest common run across a series; lossless or frame-exact cut; legal notice + rights confirmation |
| Auto montage | Prompt → keywords → local ranking → AI picks/orders clips → ffmpeg render (or real-time renderer on mobile) |
| File care | Decode test, magic-byte type check, truncated JPEGs, video stream errors, date repair (EXIF/mtime), GPS report, XMP sidecars |
| Remove background | U²-Net on-device (ONNX Runtime Web, WebGPU/WASM), optional mirrored double-check, soft edge, transparent/colour/blurred background; or ComfyUI, Replicate, fal.ai |
| AI upscaler | Real-ESRGAN ×2–×4 on-device in overlapping tiles with live preview, or classic, ComfyUI, Replicate, fal.ai |
| Image to video | Real-time Ken Burns camera move locally, or generative video (Stable Video Diffusion via ComfyUI, Replicate, fal.ai) |
| AI image editor | Edit with words using the AI of your choice (ComfyUI, OpenAI Images, Replicate, fal.ai), on-device quick actions, classic adjustments, undo, before/after |
| Video thumbnail | Rates candidate frames (sharpness, exposure, contrast, faces) or lets a vision model choose; saves JPG and optionally embeds the cover |
| More | Blurry/dark photo finder, batch rename, lossless metadata/GPS stripping, storage analysis, searchable library, undo journal |
AI modes
- Local AI – Ollama, LM Studio (GGUF/MLX), MLX servers (
mlx_lm,mlx-vlm), llama.cpp, vLLM, LocalAI, Jan, KoboldCpp, GPT4All, whisper.cpp. Auto-discovery probes typical ports on the device and – with permission – the LAN. A server on another port can be added by host, port and protocol; “Check connection” uses the same probe and the same reach permissions. - Simple mode – one switch on the home screen and in AI settings. After a confirmation it applies the balanced profile, the simple preset of every studio tool and clears per-tool overrides. You pick the model; roles follow from where each connection runs. Editing a setting by hand turns simple mode off.
- Remote AI – your own subscription/API key: OpenAI, Anthropic, Google Gemini, Mistral, OpenRouter, Groq, Azure or any OpenAI-compatible endpoint. Keys live in the OS keychain on macOS, Windows and iOS; on Android and Linux they are stored in All-in-One Media Manager's private app folder (readable only by All-in-One Media Manager, excluded from Android backups). In the web version they stay in this browser only (see below).
- Double-Power – local model does per-image vision, remote model only gets compact text for reasoning; configurable escalation. With lots of VRAM or two GPUs, two local AIs can share the work (least-busy routing, parallel requests, fallback).
- AI on the phone – in the Android app, models run directly on the device with Google MediaPipe (Qwen 2.5, Phi-4 mini, Gemma 3; Gemma 3n also reads images). Download a listed model or copy a local
.task/.litertlmfile into app storage. Image analysis still depends on a Gemma 3n file name. No server needed.
UltraFast – every tool where it makes sense has an algorithmic fast path with a recommended default: e.g. a coarse face pre-check so only photos with faces get the full model, one AI description per group of near-identical photos, banded duplicate search for huge libraries, model-free background removal and upscaling.
Check before saving – results of the tools that create files (background removal, upscaler, image to video, editor, montage, intro cut, thumbnails) are shown first with Keep / Discard; nothing is written before you decide (can be switched off).
Every AI-studio tool has three settings modes: Simple (four quality levels from fast to maximum), Advanced (every value) and Custom (own model, model id, ComfyUI workflow, raw parameters). A model advisor recommends local models for your RAM with 5-star ratings for speed and quality and installs them via Ollama.
Token efficiency: downscaled images, contact sheets, batching, index-based answers, compact JSON, content-addressed cache, per-job budgets and estimates before every run. Every request is written to a transparent transfer log with a redacted payload.
Building
Prerequisites: Node 20+, Rust stable, platform SDKs.
npm install
npm run tauri dev # desktop development
./scripts/build-macos.sh # universal .app + .dmg
LLVM_MINGW=~/llvm-mingw ./scripts/build-windows.sh # x64 + ARM64 NSIS installers (cross-compiled)
./scripts/build-android.sh # universal APK (arm64, armv7, x86, x86_64) – signing: docs/SIGNING.md
Release builds are Android, macOS universal, Windows x64 and Windows ARM64. Notes are in CHANGELOG.md.
Tests: npm test (i18n completeness), cargo test in src-tauri (hashing, duplicate
engine incl. an end-to-end re-encode test with ffmpeg, EXIF, protocol, intro detection …).
npm run dev alone previews the UI in a browser with a mocked backend.
Architecture
src/ Svelte 5 + Material Web (M3) UI
lib/settings/schema.ts settings registry: global ↔ tool bridge, explanations via i18n
lib/services/ web-view decoding, contact sheets, faces, real-time renderer
lib/i18n/*.json 7 languages (completeness enforced by tests)
src-tauri/src/ Rust core
scan.rs incremental indexing, signatures
media/ hashing, EXIF, magic bytes, ffmpeg, lossless JPEG stripping
tools/ duplicates, persons, intro, montage, maintenance, library, fileops
ai/ providers, discovery, keys, routing, prompts, web lookups
protocol.rs media:// with HTTP range + CORS for the web view
Privacy is enforced in the Rust core (settings::Permissions), not just in the UI.
Legal
The in-app imprint contains placeholders: whoever distributes a build must fill them in.
See LICENSE (MIT) and THIRD_PARTY_NOTICES.md.
