No description
  • Svelte 37.8%
  • TypeScript 31.1%
  • Rust 25%
  • Kotlin 1.4%
  • CSS 1.4%
  • Other 3.2%
Find a file
juliandigitalproducts b24b0b4e0e
Some checks are pending
test / frontend (push) Waiting to run
Point README and site downloads to Forgejo, version release file names
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.
2026-11-13 13:35:10 +01:00
.forgejo/workflows ci: run Android builds on the android runner (Mac or Windows), Rust on mac 2026-11-12 22:32:36 +01:00
.github/workflows release 1.0.0 2026-11-12 22:01:32 +01:00
docs release 1.0.0 2026-11-12 22:01:32 +01:00
models release 1.0.0 2026-11-12 22:01:32 +01:00
public release 1.0.0 2026-11-12 22:01:32 +01:00
scripts Point README and site downloads to Forgejo, version release file names 2026-11-13 13:35:10 +01:00
src release 1.0.0 2026-11-12 22:01:32 +01:00
src-tauri release 1.0.0 2026-11-12 22:01:32 +01:00
test-fixtures release 1.0.0 2026-11-12 22:01:32 +01:00
web/site Point README and site downloads to Forgejo, version release file names 2026-11-13 13:35:10 +01:00
.gitignore release 1.0.0 2026-11-12 22:01:32 +01:00
CHANGELOG.md release 1.0.0 2026-11-12 22:01:32 +01:00
index.html release 1.0.0 2026-11-12 22:01:32 +01:00
LICENSE release 1.0.0 2026-11-12 22:01:32 +01:00
package-lock.json release 1.0.0 2026-11-12 22:01:32 +01:00
package.json release 1.0.0 2026-11-12 22:01:32 +01:00
README.md Point README and site downloads to Forgejo, version release file names 2026-11-13 13:35:10 +01:00
svelte.config.js release 1.0.0 2026-11-12 22:01:32 +01:00
THIRD_PARTY_NOTICES.md release 1.0.0 2026-11-12 22:01:32 +01:00
tsconfig.json release 1.0.0 2026-11-12 22:01:32 +01:00
vite.config.ts release 1.0.0 2026-11-12 22:01:32 +01:00

All-in-One Media Manager

Open-source, privacy-first media manager for photos and videos – with an on-device AI studio.

AIOMM logo

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.

Donate with PayPal

QR code: donate with PayPal

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)

AIOMM desktop in dark mode

Desktop — light mode (AI studio, upscaler, background removal, local-model advisor)

AIOMM desktop in light mode

Mobile — dark mode

AIOMM on a phone in dark mode

Mobile — light mode

AIOMM on a phone in 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 / .litertlm file 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.

The in-app imprint contains placeholders: whoever distributes a build must fill them in. See LICENSE (MIT) and THIRD_PARTY_NOTICES.md.