AIOMetadata

AIOMetadata

Docker app from LubricantJam's Repository

Overview

AIOMetadata is a Stremio metadata addon. Redis is required for caching; SQLite (default) or PostgreSQL for storage. Most options (API keys, providers, catalogs, passwords) are set in the /configure web UI and stored in the database—not as container variables.

AIOMETADATA AIOMetadata: The Ultimate Stremio Metadata Addon

AIOMetadata is a next-generation, power-user-focused metadata addon for Stremio. It aggregates and enriches movie, series, and anime metadata from multiple sources (TMDB, TVDB, MyAnimeList, AniList, IMDb, TVmaze, Fanart.tv, MDBList, and more), giving you full control over catalog sources, artwork, and search.


🚀 Features

  • Multi-Source Metadata: Choose your preferred provider for each type (movie, series, anime) — TMDB, TVDB, MAL, AniList, IMDb, TVmaze, etc.
  • Rich Artwork: High-quality posters, backgrounds, and logos from TMDB, TVDB, Fanart.tv, AniList, and more, with language-aware selection and fallback.
  • Anime Power: Deep anime support with MAL, AniList, Kitsu, AniDB, and TVDB/IMDb mapping, including studio, genre, decade, and schedule catalogs.
  • Custom Catalogs: Add, reorder, and delete catalogs (including MDBList, streaming, and custom lists) in a sortable UI.
  • Streaming Catalogs: Integrate streaming provider catalogs (Netflix, Disney+, etc.) with region and monetization filters.
  • Dynamic Search: Enable/disable search engines per type (movie, series, anime) and use AI-powered search (Gemini) if desired.
  • User Config & Passwords: Secure, per-user configuration with password and optional addon password protection. Trusted UUIDs for seamless re-login.
  • Global & Self-Healing Caching: Redis-backed, ETag-aware, and self-healing cache for fast, reliable metadata and catalog responses.
  • Advanced ID Mapping: Robust mapping between all major ID systems (MAL, TMDB, TVDB, IMDb, AniList, AniDB, Kitsu, TVmaze).
  • Modern UI: Intuitive React/Next.js configuration interface with drag-and-drop, tooltips, and instant feedback.

🛠️ Installation

1. Hosted Instance

Visit your hosted instance's /configure page.
Configure your catalogs, providers, and preferences.
Save your config and install the generated Stremio addon URL.

2. Self-Hosting (Docker Compose)

services:
  aiometadata:
    image: ghcr.io/cedya77/aiometadata:latest
    container_name: aiometadata
    restart: unless-stopped
    ports:
      - "3232:3232"  # Remove this if using Traefik
    # expose:  # Uncomment if using Traefik
    #   - 3232
    init: true
    env_file:
      - .env
    # labels:  # Optional: Remove if not using Traefik
    #   - "traefik.enable=true"
    #   - "traefik.http.routers.aiometadata.rule=Host(`${AIOMETADATA_HOSTNAME?}`)"
    #   - "traefik.http.routers.aiometadata.entrypoints=websecure"
    #   - "traefik.http.routers.aiometadata.tls.certresolver=letsencrypt"
    #   - "traefik.http.routers.aiometadata.middlewares=authelia@docker"
    #   - "traefik.http.services.aiometadata.loadbalancer.server.port=3232"
    #   - "traefik.http.routers.aiometadata.service=aiometadata"
    volumes:
      - ${DOCKER_DATA_DIR}/aiometadata/data:/app/addon/data
    depends_on:
      aiometadata_redis:
        condition: service_healthy
    tty: true
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3232/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

  aiometadata_redis:
    image: redis:latest
    container_name: aiometadata_redis
    restart: unless-stopped
    volumes:
      - ${DOCKER_DATA_DIR}/aiometadata/cache:/data
    command: redis-server --appendonly yes --save 3600 1
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

  #aiometadata_postgres:
  #  image: postgres:latest
  #  container_name: aiometadata_postgres
  #  restart: unless-stopped
  #  environment:
  #    - POSTGRES_DB=aiometadata
  #    - POSTGRES_USER=postgres
  #    - POSTGRES_PASSWORD=password
  #  volumes:
  #    - ${DOCKER_DATA_DIR}/aiometadata/postgres:/var/lib/postgresql/data
  #  healthcheck:
  #    test: ["CMD-SHELL", "pg_isready -U postgres -d aiometadata"]
  #    interval: 10s
  #    timeout: 5s
  #    retries: 5

Create a .env file with your API keys and settings as shown in .env.example

Then run:

docker compose up -d

3. Optional add-ons

Two optional pieces of infrastructure have guides of their own, since neither is needed to run the addon:

  • Image Cache — serve artwork from disk instead of re-fetching it upstream.
  • Self-Hosted Jikan API — run your own anime metadata source. The public Jikan API shuts down on October 1, 2026, so anyone relying on anime catalogs needs this.

4. Sign-in with an identity provider (Optional)

Let people sign in with an existing account instead of a UUID and password, and reach their saved configurations from the list. See Sign-in with an identity provider.

⚙️ Configuration

  • Catalogs: Add, remove, and reorder catalogs (TMDB, TVDB, MAL, AniList, MDBList, streaming, etc.).
  • Providers: Set preferred metadata and artwork provider for each type.
  • Search: Enable/disable search engines per type; enable AI search with Gemini API key.
  • Integrations: Connect MDBList and more for personal lists.
  • Security: Set user and (optional) addon password for config protection.

All configuration is managed via the /configure UI and saved per-user (UUID) in the database.


🔌 API & Endpoints

  • /stremio/:userUUID/:compressedConfig/manifest.json — Stremio manifest (per-user config)
  • /api/config/save — Save user config (POST)
  • /api/config/load/:userUUID — Load user config (POST)
  • /api/config/update/:userUUID — Update user config (PUT)
  • /api/config/is-trusted/:uuid — Check if UUID is trusted (GET)
  • /api/cache/* — Cache health and admin endpoints
  • /poster/:type/:id — Poster proxy with fallback and RPDB support
  • /resize-image — Image resize proxy
  • /api/image/blur — Image blur proxy

🧩 Supported Providers

  • Movies/Series: TMDB, TVDB, IMDb, TVmaze
  • Anime: MyAnimeList (MAL), AniList, Kitsu, AniDB, TVDB, IMDb
  • Artwork: TMDB, TVDB, Fanart.tv, AniList, RPDB
  • Personal Lists: MDBList, MAL, AniList
  • Streaming: Netflix, Disney+, Amazon, and more (via TMDB watch providers)

🧑‍💻 Development

# Backend
npm run dev:server

# Frontend
npm run dev
  • Edit /addon for backend, /configure for frontend.
  • Uses Redis for caching, SQLite/PostgreSQL for config storage.

🤝 Contributing

We welcome community contributions! However, to keep review times manageable, we have specific guidelines. Please read the CONTRIBUTING.md guide before opening issues or pull requests.


📄 License

GPL-3.0 — see LICENSE.


🙏 Credits

Special thanks to MrCanelas, the original developer of the TMDB Addon for Stremio, whose work inspired and laid the groundwork for this project.


⚠️ Disclaimer

This addon aggregates metadata from third-party sources. Data accuracy and availability are not guaranteed.

Install AIOMetadata on Unraid in a few clicks.

Find AIOMetadata in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for AIOMetadata Review the template variables and paths Click Install

Requirements


        Redis is required. Point REDIS_URL at your Redis instance (e.g. redis://container-name:6379 on a custom network, or redis://your-server-ip:6379).
        Set HOST_NAME to the public URL Stremio will use (HTTPS via reverse proxy is typical).
        After the container is up, open /configure to set TMDB and other API keys, providers, and security options.
        Optional env overrides (TMDB_API, LOG_LEVEL, OAuth redirects, cache tuning, etc.) are documented here: https://github.com/cedya77/aiometadata/blob/dev/docs/ENVIRONMENT_VARIABLES.md — add them via "Add another Path, Port, Variable, Label or Device" if you need them.
    

Related apps

Details

Repository
ghcr.io/cedya77/aiometadata:latest
Last Updated2026-08-16
First Seen2026-03-28

Runtime arguments

Web UI
http://[IP]:[PORT:3232]
Network
bridge
Shell
bash
Privileged
false

Template configuration

Web UI PortPorttcp

Host port mapped to the addon (container listens on 3232).

Target
3232
Default
3232
Value
3232
Data FolderPathrw

Persistent addon data (SQLite DB when using default DATABASE_URI).

Target
/app/addon/data
Value
/mnt/user/appdata/aiometadata/data
Host NameVariable

Public URL where the addon is reachable (include https://). Used for manifest and resource URLs.

Target
HOST_NAME
Database URIVariable

SQLite default matches the Data Folder mount. Use postgresql://... for Postgres.

Target
DATABASE_URI
Default
sqlite://addon/data/db.sqlite
Value
sqlite://addon/data/db.sqlite
Redis URLVariable

Redis URL for caching. Change host if your Redis container is not named redis.

Target
REDIS_URL
Default
redis://redis:6379
Value
redis://redis:6379