A local macOS application that manages, classifies, and provides intelligent search across your AU and VST3 audio plugin collection using autonomous AI agents and a local LLM via Ollama.
- Automatic Plugin Discovery -- Scans standard macOS plugin directories for AU and VST3 formats
- Metadata Extraction -- Reads developer names, plugin types, and display names directly from bundle Info.plist files, with cross-format propagation (AU metadata shared to VST3). Display names come from the developer's own naming, not filename heuristics.
- Static Classification -- 1000+ known plugins pre-classified with developer, category, character, and use case data
- Autonomous AI Enrichment -- Goal-oriented agents with LLM tool-calling that research plugins autonomously:
- Product Info Agent -- Finds developer, category, description, hardware emulation details from product pages and KVR
- Sonic Profile Agent -- Finds sonic character, use cases, pro tips, and limitations from real user discussions on forums
- Quality self-check -- Agents evaluate their own results and retry with different search strategies if data is thin
- SearXNG Search -- Self-hosted metasearch engine (Docker) aggregating Google, Bing, Brave, and DuckDuckGo without rate limits. Falls back to DuckDuckGo if not running.
- Web-First Chat -- Every chat query searches the web first for grounded facts, then cross-references against your scanned collection (✓) and DAW stock plugins (🎛️). Prevents LLM hallucination and surfaces real plugins you can actually access. Silent fallback to collection-only if web is unavailable.
- DAW Stock Plugin Awareness -- 210+ built-in stock plugin definitions across 8 major DAWs (Logic Pro, Ableton Live 12 Suite, Cubase 13 Pro, Pro Tools, Studio One 7, FL Studio, Reaper, GarageBand). Pick your DAW(s) in Settings and they're treated as available.
- RAG with hybrid retrieval -- SQL FTS + semantic vector search over your plugin DB, with markdown-rendered responses and persistent multi-conversation history
- Per-Plugin Enrichment -- Enrich individual plugins with optional user-provided URLs or PDF manuals
- Bulk Enrichment -- Batch-process all unclassified plugins with streaming progress
- Chat History -- SQLite-backed multi-conversation history with sidebar, search, and individual delete
- Browse, Review, Edit -- Grid-based plugin browser with filters, review queue, and full metadata editor including hidden tips and limitations fields
- macOS (primary target — scans
/Library/Audio/Plug-Ins/directories) - Python 3.10 - 3.13
- Ollama -- local LLM inference -- ollama.com
- Docker -- for SearXNG (optional but recommended) -- docker.com
- 16GB+ RAM recommended (32GB+ for larger models)
Daedalus is currently macOS-only in practice, but most of the codebase is cross-platform. Here's the honest breakdown:
| Component | macOS | Linux | Windows |
|---|---|---|---|
| Web app / chat / RAG | ✓ | ✓ | ✓ |
| Enrichment agents | ✓ | ✓ | ✓ |
| Ollama integration | ✓ | ✓ | ✓ |
| SearXNG (Docker) | ✓ | ✓ | ✓ |
| Plugin scanner | ✓ | ✗ | ✗ |
run.sh startup script |
✓ | ~ | ✗ |
The plugin scanner is the blocker. It reads macOS .component AU bundles and parses Info.plist files — neither exists on Windows/Linux. VST3 file discovery is cross-platform but metadata extraction currently relies on macOS bundle structure.
Linux users can probably get it working with: a custom scan_dirs pointing at your VST3 folders (metadata fields will be empty until you enrich), a bash shell, and skipping the AU parts. run.sh should mostly work.
Windows users would need a PowerShell/batch equivalent of run.sh plus a Windows-aware VST3 scanner that reads the plugin's moduleinfo.json or queries the bundle directly.
Contributions welcome — if you can get it running on Linux or Windows, please open a PR.
# 1. Clone the repo
git clone https://github.com/Mando-369/Daedalus-Plugin-Assistant.git
cd Daedalus-Plugin-Assistant
# 2. Run the app -- handles everything automatically
./run.shThat's it. run.sh automatically:
- Finds a compatible Python and sets up a virtual environment
- Installs all dependencies
- Starts Ollama (opens the app if installed)
- Starts SearXNG via Docker (creates the container on first run, restarts it on subsequent runs)
- Frees the server port if something is already using it
- Initializes the database
- Launches the server at http://127.0.0.1:8777
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# Start Ollama and pull models
ollama serve
ollama pull gemma4:26b
ollama pull nomic-embed-text
# Start SearXNG (optional, runs in a Docker container for clean isolation)
docker run -d --name searxng -p 8888:8080 \
-e SEARXNG_SECRET=$(openssl rand -hex 32) \
searxng/searxng
# Start the app
python -m uvicorn src.app:app --host 127.0.0.1 --port 8777SearXNG is a web service that proxies searches to Google, Bing, and others. Docker keeps it cleanly isolated -- no system pollution, no Python conflicts with the app, easy to remove (docker rm searxng), and simple to restart. It runs locally; no data leaves your machine beyond the search queries themselves.
Everything runs locally. Ollama runs on your machine, the database is local SQLite, embeddings are computed locally, and SearXNG is a self-hosted search proxy. ChromaDB telemetry is disabled -- no analytics or data collection of any kind.
Click Rescan Plugins to discover all installed AU and VST3 plugins. The scanner:
- Reads plugin directories on disk (configurable in Settings tab)
- Extracts developer, plugin type, and display names from bundle metadata (Info.plist)
- Cross-references AU metadata to VST3 versions of the same plugin
- Runs static classification against 1000+ known plugins
- Builds vector embeddings for semantic search
- Detects newly installed plugins and offers to auto-enrich them
Ask questions in natural language:
- "What compressor plugins do I have?"
- "I need a warm, vintage-sounding EQ for mastering"
- "Compare my optical compressors"
- "Which plugins emulate the LA-2A?"
Web-first architecture. Every chat query runs in three phases:
- Web search first — Daedalus searches the web (SearXNG, local) to get current real-world information about your question. This is the source of truth for technical facts.
- Cross-reference your stock — it checks which plugins mentioned in the web results you actually have: your scanned collection, plus the stock plugins bundled with your DAW(s).
- Synthesize — the LLM answers using web research for facts, and labels every plugin it recommends:
- ✓ — plugin is in your scanned collection (preferred)
- 🎛️ — plugin is bundled with your DAW (e.g. Logic's ChromaVerb)
- [NOT INSTALLED] — mentioned online but you don't own it
This way the LLM can't hallucinate technical details (grounded in real web sources), and it can suggest plugins outside your collection with honest labeling. Web sources are shown as clickable links under each response.
Fallback. If web search fails (offline, rate-limited), the chat silently falls back to searching your collection only.
DAW stock plugins. Go to Settings → Your DAW(s) and select the DAW(s) you use (Logic Pro, Ableton Live 12 Suite, Cubase 13 Pro, Pro Tools, Studio One 7, FL Studio, Reaper, GarageBand). Daedalus ships with ~210 stock plugin definitions across these DAWs so they show up as 🎛️ recommendations without you needing to scan them.
Conversations are saved automatically and accessible from the sidebar. Search past conversations or start a new one anytime. Use Search Online as a power-user escape hatch if you want to re-run a question with custom web context.
- Click any plugin to open the edit modal
- Click Enrich to run autonomous research agents
- Optionally expand "Provide additional context" and paste a URL or PDF path
- Agents autonomously search the web, fetch product pages, and fill empty metadata
- If results are thin, agents self-evaluate and retry with different search strategies
- Review the auto-filled fields and save
- Go to the Review tab
- Set options: delay between plugins (default 2s) and batch limit (auto-pause after N plugins)
- Click Enrich with Web Search
- Watch the progress bar as agents process each plugin in real-time
- Pause/Resume/Cancel anytime -- auto-pauses on rate limits or batch limits
- Dismiss individual plugins from the queue with the X button
⚠️ Review enriched data before trusting it. The enrichment agents use LLMs that can hallucinate technical details — wrong developers, fabricated technology claims, or confused hardware emulations. Always spot-check the descriptions and tags on enriched plugins, especially for plugins you'll rely on in recommendations. You can edit any field directly in the edit modal, or bulk-review via the Review tab.
- Click any plugin card to open the full metadata editor
- Edit all fields: developer, category, character, description, hidden tips, limitations, etc.
- Confidence dot turns green automatically when key fields are filled (via enrichment or manual edit)
- Check "My own plugin" for plugins you developed
Click the Settings tab to configure your LLM backend. A provider comparison table helps you choose:
| Provider | Cost | Privacy | EU/GDPR | Best For |
|---|---|---|---|---|
| Local Ollama | Free | 100% local | N/A | Best quality + privacy (16GB+ RAM) |
| Euria / Infomaniak | Free | Swiss-hosted | GDPR compliant | EU users, privacy-focused, no GPU needed |
| OpenRouter | Free tier | Cloud | Global | No GPU, no credit card, works everywhere |
| Google Gemini | Free tier | Cloud (Google) | Not free in EU | Large context, outside EU only |
| OpenAI | Pay-per-use | Cloud | Global | Most reliable, highest quality |
| DeepSeek | Very cheap | Cloud (China) | Global | Budget option, strong reasoning |
Default is Local Ollama. You can set separate models for chat and enrichment agents (e.g., fast local model for agents, powerful cloud model for chat). Test your connection from the Settings tab before saving.
Daedalus ships with gemma4:26b as the default. If you have less RAM, pick a smaller variant instead:
| System RAM | Recommended model | Size on disk | Notes |
|---|---|---|---|
| 8 GB | gemma4:e2b |
~2 GB | Edge model (2.3B effective params). Fast, less capable. |
| 16 GB | gemma4:e4b or gemma4:latest |
~7–9 GB | Edge model (4.5B effective). Comfortable headroom for browser/OS. |
| 24 GB | gemma4:26b |
17 GB | MoE (26B total, 3.8B active). Tight but usable. |
| 32 GB+ | gemma4:26b or gemma4:31b |
17–20 GB | Plenty of headroom. 31b is dense, higher quality. |
Change the model via the Settings tab in the UI, or edit OLLAMA_MODEL in config.py.
⚠️ Note: The 26B model is a Mixture-of-Experts — 26B total parameters but only ~3.8B active per inference — so it's faster and lighter than a typical dense 26B model. It still needs enough RAM to memory-map the 17GB file though, which is why 24GB+ is recommended.
The Settings tab also lets you configure scan directories -- add, remove, or reset the plugin folders that get scanned.
In Settings → Your DAW(s), select the DAW(s) you use. Daedalus ships with ~210 stock plugin definitions for 8 major DAWs:
| DAW | Stock plugins included |
|---|---|
| Logic Pro | 42 (ChromaVerb, Space Designer, Compressor variants, Alchemy, Sculpture, Drummer...) |
| Ableton Live 12 Suite | 35 (Glue Compressor, Hybrid Reverb, Operator, Wavetable, Drift, Meld...) |
| Cubase 13 Pro | 33 (Frequency 2, REVerence, HALion Sonic, Padshop, Retrologue...) |
| Pro Tools | 25 (Pro Compressor, D-Verb, BF-76, BF-2A, Structure...) |
| Studio One 7 | 25 (Pro EQ3, Fat Channel XT, OpenAir 2, Mai Tai...) |
| FL Studio | 24 (Fruity Parametric EQ 2, Maximus, Harmor, Sytrus, FLEX...) |
| Reaper | 18 (ReaEQ, ReaComp, ReaXcomp, ReaFir, ReaVerb...) |
| GarageBand | 8 (subset shared with Logic) |
When chat answers a question, stock plugins from your selected DAW(s) appear as 🎛️ recommendations alongside your scanned ✓ plugins.
In the Settings tab under Data Management you can export and import your plugin database:
- Export JSON -- machine-readable format that preserves data types exactly. Best for backup/restore between Daedalus instances since it round-trips perfectly.
- Export CSV -- opens in Excel, Numbers, or Google Sheets. Best for browsing your plugin list in a spreadsheet, filtering/sorting manually, or sharing with someone who doesn't use Daedalus.
- Import -- upload a previously exported
.jsonor.csvfile. Only updates plugins you already have scanned (matched by filename, format, and scope). Empty fields get filled from the import; existing data is never overwritten.
Key settings in config.py (runtime settings are managed via the Settings tab in the UI):
| Setting | Default | Description |
|---|---|---|
OLLAMA_MODEL |
gemma4:26b |
Default local LLM model |
OLLAMA_BASE_URL |
http://127.0.0.1:11434 |
Ollama API endpoint |
SEARXNG_URL |
http://127.0.0.1:8888 |
SearXNG instance URL |
WEB_PORT |
8777 |
Web server port |
PLUGIN_SCAN_DIRS |
Standard macOS paths | Directories to scan for AU, VST3 plugins |
EMBEDDING_MODEL |
nomic-embed-text |
Embedding model (always local via Ollama) |
RAG_MAX_CONTEXT_PLUGINS |
20 |
Max plugins included in LLM context |
OWN_PLUGIN_BRANDS |
{} |
Your own plugin brand names for detection |
Plugin directories on disk
(AU, VST3 bundles)
|
v
scan_plugins() + plist
(developer, plugin_type)
|
v
classify_all() (1000+ known plugins)
|
v
SQLite Database
(your local plugin data)
/ \
v v
Enrichment Agents RAG Chat Pipeline
| |
+─────────+─────────+ hybrid search (SQL + vector)
| | |
v v v
Product Info Agent Sonic Profile LLM Generation
(category, desc, Agent (character, (gemma4:26b)
emulation) tips, limits) |
| | v
v v Markdown Response
SearXNG ─────────> fetch_page + Chat History
(Google, Bing, (meta tags,
Brave, DDG) JSON-LD)
src/
app.py FastAPI web app + API + WebSocket endpoints
models.py SQLite schema + migrations (plugins, conversations, messages)
scanner.py Plugin directory scanner + plist metadata extraction
classifier.py Static classification database (1000+ plugins)
embeddings.py ChromaDB vector store wrapper
rag.py RAG pipeline (hybrid search + streaming LLM generation)
enrichment.py Legacy enrichment service
agents/
base.py Agent runner (LLM tool-calling loop + quality self-check)
tools.py Agent tools (web_search via SearXNG/DDG, fetch_page, read_pdf)
product_agent.py Product Info Agent (factual research)
sonic_agent.py Sonic Profile Agent (character + forum research)
orchestrator.py Enrichment orchestrator (runs agents, merges, applies to DB)
static/
css/style.css Dark theme stylesheet
js/app.js Frontend (chat, browse, edit, enrichment, conversations)
favicon.svg App icon
templates/
index.html Single-page app
data/
plugins.db SQLite database
chroma/ ChromaDB vector store
config.py Central configuration
run.sh One-command startup (Python, Ollama, SearXNG, server)
- Backend: Python, FastAPI, SQLite, ChromaDB
- LLM: Ollama (local inference), gemma4:26b (recommended for tool-calling)
- Embeddings: nomic-embed-text via Ollama
- Search: SearXNG (self-hosted, Docker) with DuckDuckGo fallback
- Frontend: Vanilla JavaScript, CSS (dark theme)
- Retrieval: Hybrid SQL FTS5 + cosine-similarity vector search
THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.
The authors and contributors accept no responsibility or liability for:
- Loss of data, files, or plugin configurations
- Damage to computer systems, audio software, or plugin installations
- Incorrect, incomplete, or misleading metadata generated by AI agents
- Issues arising from third-party services (Ollama, SearXNG, cloud LLM providers)
- Rate limiting, API costs, or account restrictions from external services
- Any consequences of wrong handling, misconfiguration, or misuse of this tool
AI-generated content: Plugin metadata, descriptions, and recommendations are produced by large language models and may contain inaccuracies. Always verify critical information independently. The AI may confuse similarly-named products or provide outdated information.
Web search: The enrichment agents search the public web via SearXNG or DuckDuckGo. Search results and fetched page content are subject to the terms of service of the respective websites and search engines.
Use at your own risk. Back up your data regularly. This is an open-source community project, not a commercial product.
Big thanks to Hagai Davidoff for the inspiration behind this project. His video on organizing and getting the most out of your plugin collection was the spark that led me to build Daedalus. Check out his own Studio Concierge Gemini Gem too.
GPL v3 -- see LICENSE






