Neminem 1518 Posted January 15 Posted January 15 (edited) Just tried this as well. A little info about my setup. 192.168.40.1 unRaid main server with a Nvidia 1080ti runs my Ollama docker. 192.168.40.2 unRaid test server runs Aperture and test Emby server. How do I link Ollama to Aperture ? Edited January 15 by Neminem
TheGru 143 Posted January 15 Author Posted January 15 3 hours ago, Neminem said: Just tried this as well. A little info about my setup. 192.168.40.1 unRaid main server with a Nvidia 1080ti runs my Ollama docker. 192.168.40.2 unRaid test server runs Aperture and test Emby server. How do I link Ollama to Aperture ? I’ll have to investigate the setup wizard. 1
TheGru 143 Posted January 15 Author Posted January 15 It's a route authorization issue. During first setup there is no logged in user, and the AI provider router is currently looking for one. I need to fix the route pattern.
TheGru 143 Posted January 15 Author Posted January 15 Aperture 0.4.3-llm Beta - Multi-Provider AI Support Hey everyone! I'm excited to share a beta build with a major overhaul to how Aperture handles AI/LLM integration. This release migrates to the Vercel AI SDK v5 with full multi-provider support. What's New Multi-Provider AI Support You can now choose from multiple AI providers for each function: OpenAI (recommended) Anthropic (Claude) Google AI (Gemini) Groq DeepSeek Ollama (self-hosted) OpenAI-Compatible endpoints (LM Studio, LocalAI, etc.) Each AI function (Embeddings, Chat, Text Generation) can use a different provider - mix and match as you like! Multi-Dimension Embedding Support Switching embedding models no longer wipes your existing embeddings! The system now stores embeddings in dimension-specific tables, so you can: Keep your OpenAI embeddings while testing Ollama Switch between models without losing data Clean up old embeddings when you're ready via the Maintenance tab Improved Setup Wizard AI setup now works on fresh installs (previously failed because no auth existed yet) All 3 AI functions are now required during setup Existing configurations auto-populate when re-running the wizard Added exit button for admins to return to settings Ollama Improvements Added installation instructions directly in the UI Full list of recommended models for each function Fixed compatibility with AI SDK v5 using ai-sdk-ollama@2.2.0 Bug Fixes Chat Assistant: Fixed embedding lookups that broke after multi-dimension migration Similarity Graph: Added info button (ⓘ) on nodes to navigate to detail pages while preserving drill-down Create Playlist: Fixed button layout issues on desktop Legacy Embeddings: Added cleanup option in Maintenance tab Setup Wizard: Now properly loads existing settings from database How to Test Pull the beta Docker image: docker pull ghcr.io/dgruhin/aperture:llm Or update your docker-compose: image: ghcr.io/dgruhin/aperture:llm Beta Notes This is a beta build - backup your database before upgrading The multi-dimension embedding migration runs automatically on first start If you encounter issues, check the Maintenance tab for legacy embedding cleanup options Feedback Welcome! Please report any issues or feedback in this thread or open an issue on github. Specifically interested in: Ollama/local model experiences Any issues with the setup wizard Performance with different providers Thanks for testing! Note: This will be merged into a stable 0.4.3 release once testing is complete. 2
TheGru 143 Posted January 15 Author Posted January 15 Quick quality of life fix and a bump to 0.4.4-llm for the beta How to Test Pull the beta Docker image: docker pull ghcr.io/dgruhin/aperture:llm Or update your docker-compose: image: ghcr.io/dgruhin/aperture:llm 1
Neminem 1518 Posted January 15 Posted January 15 Got it connected now Its working fast enough for me using Ollama with a Nvidia 1080ti really old 1
TheGru 143 Posted January 15 Author Posted January 15 4 minutes ago, Neminem said: Got it connected now Its working fast enough for me using Ollama with a Nvidia 1080ti really old Awesome! Glad it's working. I am going to merge this branch in to dev and then merge it to main and push a 0.4.4 release to the :latest tag once I am back from my wife's colonoscopy. The wifi here is terrible and I have no cell service in the building! 2
TheGru 143 Posted January 15 Author Posted January 15 Aperture v0.4.4 Release Notes Hey everyone! This release brings a major architectural upgrade to Aperture's AI infrastructure with multi-provider LLM support, plus important bug fixes and mobile UI improvements. If you were on the beta :llm tag please switch back to :latest Multi-Provider AI System (Vercel AI SDK v5) Aperture now supports multiple AI providers beyond OpenAI! Choose the best provider for each function based on cost, quality, or privacy needs. Supported Providers Cloud Providers: OpenAI — GPT-4o, GPT-4o Mini, GPT-4.1, text-embedding-3-large/small Anthropic — Claude Sonnet 4.5, Claude Haiku 3.5 Google — Gemini 2.0 Flash, Gemini 1.5 Pro Groq — Fast inference with Llama, Mixtral, and more DeepSeek — DeepSeek-V3, DeepSeek-R1 (reasoning model) Self-Hosted Options: Ollama — Run models locally (Llama 3.2, Mistral, Qwen, Nomic embeddings) LM Studio — Local model hosting OpenAI-Compatible — Any OpenAI-compatible endpoint Per-Function Provider Selection Choose different providers for different tasks: Embeddings — Use OpenAI embeddings for quality, or Ollama's Nomic models for free self-hosted Chat Assistant (Encore) — Use Claude for better conversations, GPT-4o for tool use, or Ollama for privacy Text Generation — Use GPT-4o Mini for cost efficiency, or DeepSeek for advanced reasoning Navigate to Admin → Settings → AI / LLM Setup to configure. Smart Capabilities Detection Aperture now validates model capabilities and warns you if: A model lacks tool calling support (required for Encore assistant) A model can't generate embeddings A model doesn't support structured output Dynamic Pricing & Cost Estimation Real-time pricing from Helicone API (refreshes weekly) Updated cost estimator supports all providers Accurate calculations for embeddings, chat, and text generation Shows both cloud and self-hosted options Improved Setup Wizard AI Configuration Step The setup wizard now uses the same multi-provider AI configuration: Card-based UI for each AI function (Embeddings, Chat, Text Generation) All functions required — ensures complete AI functionality from the start Provider auto-detection — shows available providers during setup Connection testing — validates API keys before proceeding Setup Wizard Enhancements Exit button for admins re-running the wizard (returns to Admin Settings) File Locations auto-detection now more reliable Better error handling with detailed messages Finish button navigation properly returns to login or admin settings Multi-Dimension Embedding Tables Breaking change for advanced users: Separate embedding tables per dimension (256, 384, 512, 768, 1024, 1536, 3072) Enables switching between embedding models without conflicts Automatic migration of existing embeddings to dimension-specific tables Old tables renamed to *_legacy for rollback safety Why this matters: You can now switch from text-embedding-3-small (1536d) to text-embedding-3-large (3072d) without re-running embeddings for your entire library. Bug Fixes AI & Assistant Fixes Embedding model format — Fixed assistant search using wrong model ID format (now uses provider:model) Dynamic table names — Assistant tools now use correct embedding table based on configured dimensions Setup form population — AI setup wizard now loads existing configuration instead of defaulting to empty Ollama compatibility — Updated to latest ollama-ai-provider for AI SDK v5 compatibility Test connection — Now falls back to saved API keys if not provided in test request Setup Wizard Fixes Finish button — Now properly navigates to login (first-run) or admin settings (re-run) Admin access — Admins can now re-enter setup wizard after initial completion User/job endpoints — Fixed 403 errors when admins tried to access setup endpoints Exit button location — Returns admin to their previous location in settings UI Fixes Mobile responsiveness — Better layouts for media detail pages and similarity graphs User card spacing — Fixed spacing between labels and toggles on mobile Create Playlist button — Proper sizing and no word wrap Graph info button — New ⓘ button on graph nodes to navigate to detail page without drilling down Legacy embeddings section — Fixed interface mismatch with API response CI/CD Docker tags — Removed SHA tagging to prevent GHCR storage bloat (only dev, latest, and version tags remain) Technical Details New Database Migrations Three new migrations run automatically on upgrade: 0075_ai_provider_config.sql — New ai_config system setting, migrates existing OpenAI configs 0076_fix_ai_config_api_keys.sql — Ensures proper API key migration for existing users 0077_update_embedding_model_names.sql — Updates embedding model IDs to new provider:model format 0078_multi_dimension_embeddings.sql — Creates dimension-specific embedding tables New API Endpoints AI Configuration: GET /api/settings/ai/providers — List available AI providers GET /api/settings/ai/models — Get models for a provider and function GET /api/settings/ai/:function — Get current config for embeddings/chat/textGeneration PATCH /api/settings/ai/:function — Update function configuration POST /api/settings/ai/test — Test provider connection with credentials GET /api/settings/ai/credentials/:provider — Get saved credentials for a provider Setup Wizard: GET /api/setup/ai/* — Unauthenticated versions of AI endpoints for first-run setup Uses requireSetupWritable() pattern (public during first-run, admin-only after) New Background Job refresh-ai-pricing — Fetches latest pricing from Helicone API weekly (AI System category) New Dependencies { "@ai-sdk/openai": "^1.0.7", "@ai-sdk/anthropic": "^1.0.8", "@ai-sdk/google": "^1.0.11", "@ai-sdk/groq": "^1.0.8", "@ai-sdk/deepseek": "^1.0.3", "ai-sdk-ollama": "^2.2.0" } Upgrade Instructions For OpenAI Users Your existing configuration will migrate automatically: OpenAI API key preserved Embedding model updated to openai:text-embedding-3-large (or small) Chat and text generation models set to openai:gpt-4o-mini No action required! For New Installations Run through the setup wizard Configure AI providers in the new AI Setup step Choose providers for each function (all three required) Test connections before proceeding For Advanced Users Backup your database before upgrading (automatic backups run daily) Migrations will run automatically Existing embeddings migrate to dimension-specific tables Review your AI configuration in Admin → Settings → AI / LLM Setup Consider switching to cost-effective providers (e.g., GPT-4o Mini for text generation) Use Cases Cost Optimization Embeddings: text-embedding-3-small ($0.02/M tokens) Chat: GPT-4o Mini ($0.15/$0.60 per M) Text Gen: GPT-4o Mini ($0.15/$0.60 per M) Estimated monthly cost for 1000 movies: ~$2-5 Self-Hosted Privacy Embeddings: Ollama (nomic-embed-text) Chat: Ollama (llama3.2) Text Gen: Ollama (mistral) Cost: $0 (runs locally) Balanced Approach Embeddings: OpenAI text-embedding-3-large (best quality) Chat: Claude Sonnet 4.5 (best conversation) Text Gen: DeepSeek-V3 (best reasoning, low cost) Breaking Changes AI Configuration Format The ai_config system setting now uses a structured format: { "embeddings": { "provider": "openai", "model": "text-embedding-3-large", ... }, "chat": { "provider": "anthropic", "model": "claude-sonnet-4-5", ... }, "textGeneration": { "provider": "openai", "model": "gpt-4o-mini", ... } } Old OpenAI-specific settings are migrated automatically. Embedding Model IDs Model IDs now include provider prefix: openai:text-embedding-3-large instead of just text-embedding-3-large. Database migration handles this automatically. What's Next? In future releases, you can expect: More AI provider integrations Custom model fine-tuning support Advanced embedding strategies (hybrid search, reranking) Per-user AI provider preferences How to Update Pull the LATEST Docker image: docker pull ghcr.io/dgruhin/aperture:latest Or update your docker-compose: image: ghcr.io/dgruhin/aperture:latest Credits Big thanks to the AI SDK team at Vercel for the excellent multi-provider abstraction layer, and to the community for testing and feedback on the mobile UI improvements! Enjoy the flexibility of choosing your AI providers! If you run into any issues or have questions, please open an issue on GitHub.
Neminem 1518 Posted January 15 Posted January 15 Is there any way to get rit off these duplicates? Or is this just the nature of the beast 1
TheGru 143 Posted January 15 Author Posted January 15 2 minutes ago, Neminem said: Is there any way to get rit off these duplicates? Or is this just the nature of the beast It’s just how Emby sees things. Nothing I can do about that one I have a movie library a movies 4k library and my AI recommendations library so I have Triplicates!
TheGru 143 Posted January 15 Author Posted January 15 Just now, TheGru said: It’s just how Emby sees things. Nothing I can do about that one I have a movie library a movies 4k library and my AI recommendations library so I have Triplicates! Although it’s odd your dupes don’t show posters or the metadata.
GoldSpacer 11 Posted January 15 Posted January 15 For search duplicates you can turn on the library option 'Exclude from global seach'. 1
TheGru 143 Posted January 15 Author Posted January 15 Just now, GoldSpacer said: For search duplicates you can turn on the library option 'Exclude from global seach'. Hmm maybe I can set that via API on the libraries it creates! I’ll look in to it. 1
Neminem 1518 Posted January 15 Posted January 15 1 minute ago, TheGru said: Although it’s odd your dupes don’t show posters or the metadata. Test server with all metadata beside media files. No metadata providers enabled That why
TheGru 143 Posted January 15 Author Posted January 15 Just now, TheGru said: Hmm maybe I can set that via API on the libraries it creates! I’ll look in to it. Would be nice if the Emby team could also add exclude duplicates from continue watching and exclude duplicates from Recently released on the home screen @Luke 2
TheGru 143 Posted January 15 Author Posted January 15 1 minute ago, Neminem said: Test server with all metadata beside media files. No metadata providers enabled That why Cool. I’ve been triaging so many custom environments I just assumed you had a special use case! 1
Neminem 1518 Posted January 15 Posted January 15 (edited) Yeah main server is master, that provides metadata to media. Then Test server picks that up I don't want them both doing this. And I like that the changes on main goes to test. Edited January 15 by Neminem
FlameRed 2 Posted January 15 Posted January 15 Ok, I have another silly question I admit. I have been looking at this for a few hours, but I must be overlooking the obvious. So my apologies in advance. I configured OMDb, MDBList, TMDb integration under settings and the API keys, tested connectivity, and enabled them. Then waited overnight. The AI Recommendations seem to all be for items already existing on the Emby server. I was thinking AI would pick up Recommendation from the OMDb, MDBList, TMDb sources that are NOT yet on Emby. Is it just a matter of waiting more than a day for it to pull recommendations from OMDb, MDBList, TMDb or is there something I need to do to trigger pulling the recommendations from OMDb, MDBList, TMDb? Or do I complete misunderstand what OMDb, MDBList, TMDb is used for?
ebr 16169 Posted January 15 Posted January 15 1 hour ago, TheGru said: Would be nice if the Emby team could also add exclude duplicates from continue watching and exclude duplicates from Recently released on the home screen @Luke Can't you exclude the library from continue watching in the "Home Screen" settings for the user?
TheGru 143 Posted January 15 Author Posted January 15 29 minutes ago, ebr said: Can't you exclude the library from continue watching in the "Home Screen" settings for the user? I don’t know, can you? Is that a setting that exists??
TheGru 143 Posted January 15 Author Posted January 15 58 minutes ago, FlameRed said: Ok, I have another silly question I admit. I have been looking at this for a few hours, but I must be overlooking the obvious. So my apologies in advance. I configured OMDb, MDBList, TMDb integration under settings and the API keys, tested connectivity, and enabled them. Then waited overnight. The AI Recommendations seem to all be for items already existing on the Emby server. I was thinking AI would pick up Recommendation from the OMDb, MDBList, TMDb sources that are NOT yet on Emby. Is it just a matter of waiting more than a day for it to pull recommendations from OMDb, MDBList, TMDb or is there something I need to do to trigger pulling the recommendations from OMDb, MDBList, TMDb? Or do I complete misunderstand what OMDb, MDBList, TMDb is used for? Aperture surfaces content in your Libraries you may enjoy. It does not recommend content you do not have, as it current can't help you "get" that content. The concept is to use your watch history, embeddings, and metadata to help you save time when trying to find something you could watch right then and there. The integrations with external APIs are used to enrich metadata for better matching results. 1
TheGru 143 Posted January 15 Author Posted January 15 44 minutes ago, ebr said: Can't you exclude the library from continue watching in the "Home Screen" settings for the user? There is no setting to do this on the iOS app or the Web directly, there is no Continue Watching setting at all other than to select which row position you want it in.
TheGru 143 Posted January 15 Author Posted January 15 Hey all, just a quick status update. I’m actively working on Ollama + other non-OpenAI provider support, but I’m currently bottlenecked on local testing because I don’t have a GPU strong enough to run real validation. If anyone wants to help push this forward: jump in and help test providers, toss a few bucks into Buy Me a Coffee, or donate/ship a GPU that can handle local models. Either way, I appreciate the support, it helps expand provider coverage faster.
TheGru 143 Posted January 15 Author Posted January 15 5 minutes ago, TheGru said: Hey all, just a quick status update. I’m actively working on Ollama + other non-OpenAI provider support, but I’m currently bottlenecked on local testing because I don’t have a GPU strong enough to run real validation. If anyone wants to help push this forward: jump in and help test providers, toss a few bucks into Buy Me a Coffee, or donate/ship a GPU that can handle local models. Either way, I appreciate the support, it helps expand provider coverage faster. as an example, I asked my local Ollama via Aperture Encore chat to Find me shows like Fallout It took Ollama 5 minutes on my setup to return a result, by which point Aperture had already timed out the api connection. While I can significantly increase the timeouts for testing, it's not a realistic solution to my local testing.
FlameRed 2 Posted January 15 Posted January 15 1 hour ago, TheGru said: Aperture surfaces content in your Libraries you may enjoy. It does not recommend content you do not have, as it current can't help you "get" that content. The concept is to use your watch history, embeddings, and metadata to help you save time when trying to find something you could watch right then and there. The integrations with external APIs are used to enrich metadata for better matching results. Got it. It is amazing that you developed this in just a couple of week. Unbelievable! Just a humble suggestion for some distant future release. For me, it would be so useful to have AI recommendations of new content that might be out there that I don't know even exists that might be something I like. Even just as a separate category that list them so I could consider and pull myself. But now I understand the intent better.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now