A local-first creative AI operating system that unifies generation, editing, provenance, and media memory across music, images, video, documents, code, and data. The ultimate library of libraries and creative coordination hub, with built-in collaboration, automation, and full ownership. Private, secure, no cloud lock-in. Automate, collaborate, and build AI workflows on your terms with cross-media intelligence, and true data ownership. No cloud required.
UNCHAINED is the platform. The current music-focused application is now framed as UNCHAINED Music, the first major module in the wider ecosystem.
- Local-first execution: assets, metadata, and model orchestration run on the user's machine.
- Unified media library: image/audio/video/data assets live in one indexed and queryable system.
- Job-based workflows: generation/edit/remix/conversion tasks run as background jobs with logs and retry semantics.
- Plugin boundaries: capabilities are shipped as plugins, not hard-coded one-offs.
- Reproducibility: every output stores model, parameters, seed, tool version, and source lineage.
- UNCHAINED (Platform)
- Core runtime, media library, job engine, model orchestration, and plugin API.
- UNCHAINED Audio (Current module)
- Metadata-rich music library, provenance tooling, DJ studio, and audio-centric workflows.
- Future sibling modules
- UNCHAINED Image
- UNCHAINED Voice -- sub module of audio
- UNCHAINED DJ -- sub module of audio
- UNCHAINED Video
- UNCHAINED Data
- UNCHAINED Docs
- UNCHAINED Code
- UNCHAINED 3D
- UNCHAINE
- Library Core
- SQLite metadata DB + deterministic filesystem layout.
- Indexing, tags, relationships, and provenance tracking.
- Job System
- Queue-backed background execution.
- States: queued → running → succeeded/failed/cancelled.
- Streaming logs to UI.
- Model Manager
- Local model registry and health checks.
- Ollama as orchestration/reasoning layer.
- Plugin Runtime
- Plugin manifests define capabilities, required models, input/output contracts, and UI presence.
UNCHAINED/
├─ unchained-core
│ ├─ library
│ ├─ jobs
│ ├─ models
│ ├─ plugins
│ ├─ collab
│ └─ desktop-shell
├─ unchained-audio
│ ├─ music
│ ├─ voice
│ ├─ dj
│ ├─ analysis
│ ├─ effects
│ ├─ stems
│ ├─ samples
│ └─ learn
├─ unchained-image
│ ├─ editing
│ ├─ generation
│ ├─ tagging
│ ├─ filters
│ └─ learn
├─ unchained-video
│ ├─ editing
│ ├─ generation
│ ├─ effects
│ ├─ subtitles
│ ├─ transcoding
│ └─ learn
├─ unchained-docs
│ ├─ knowledge-graph
│ ├─ semantic-search
│ ├─ summarization
│ ├─ compare
│ ├─ annotation
│ └─ learn
├─ unchained-code
│ ├─ learn
│ ├─ snippets
│ ├─ ai-codegen
│ ├─ linting
│ ├─ testing
│ └─ dependency-graph
├─ unchained-3d
│ ├─ models
│ ├─ scenes
│ ├─ rendering
│ ├─ animation
│ └─ learn
├─ unchained-games
│ ├─ library
│ ├─ assets
│ ├─ mods
│ ├─ save-states
│ ├─ dev
│ ├─ engines
│ └─ learn
└─ unchained-data
├─ analytics
├─ visualization
├─ importers
├─ databases
│ ├─ schemas
│ ├─ requests
│ └─ apis
├─ pipelines
└─ learn
- Foundation: shared media library, job system, Ollama integration, first image tool.
- Core creative suite: image editing, TTS, data visualization, plugin framework hardening.
- Advanced media: music expansion, video tooling, singing/voice cloning.
- Power features: workflow chaining, collections, embedding search, external integrations.
The existing implementation remains the active alpha and now represents the first ecosystem module.
- Local music import and metadata aggregation (MusicBrainz/Discogs/Spotify/Bandcamp/iTunes XML).
- Field-level attribution, confidence scoring, metadata apply/revert/diff endpoints.
- Multi-artwork support, track relationship modeling, and DJ Studio tooling.
- Desktop integration: notifications, tray actions, updater pilot.
- Testing Guide
- Testing Checklist
- Roadmap
- UI Architecture
- DJ Studio Features
- DJ Effect System
- Analytics Backend
- Known Issues
- Contributors
git clone https://github.com/PtiCalin/UNCHAINED.git
cd UNCHAINED
powershell -ExecutionPolicy Bypass -File scripts\bootstrap-desktop.ps1
powershell -ExecutionPolicy Bypass -File scripts\first-run.ps1Build desktop installer:
powershell -ExecutionPolicy Bypass -File scripts\build-desktop.ps1- Setup Python env and deps:
powershell -ExecutionPolicy Bypass -File scripts\setup-dev.ps1- Run API:
powershell -ExecutionPolicy Bypass -File scripts\run-backend.ps1- Health check: open
http://127.0.0.1:8000/health
powershell -ExecutionPolicy Bypass -File scripts\import-demo.ps1 -FilePath "C:\\path\\to\\song.mp3"- Backend: FastAPI (
backend/app), SQLite DB (library/db/library.sqlite), metadata extraction via Mutagen. - Library Storage:
library/audio,library/covers,library/metadata. - Config:
config/settings.json,.env.
Frontend is React + Tailwind + Tauri (desktop). See ARCHITECTURE.md and UI_ARCHITECTURE.md.
┌──────────────┐ SSE (events) ┌──────────────────┐
│ FastAPI │ ─────────────────────► │ React/Tauri UI │
│ Routers │ ◄───── REST / JSON ─── │ AppShell │
│ /tracks │ │ Global Search │
│ /sources/... │ ────► SQLite │ Toasts/Tray │
└─────┬────────┘ ▲ └─────────┬────────┘
│ │ │
Metadata Services Library DB System Tray & Updater
│ │ │
External APIs (MB, Discogs, Spotify, SC, Bandcamp)
- Import / scan produces raw track rows.
/sources/metadata/qualityaggregates candidate rows from external services.- User applies candidate ⇒ fields updated + attribution stored per field.
- Reversion recalculates confidence; diff endpoint compares current vs candidates.
System tray emits events → UI listens and triggers navigation or modals. Updater pilot checks remote manifest; toast host surfaces statuses.
scripts/setup-dev.ps1: create venv, install backend dependenciesscripts/bootstrap-desktop.ps1: end-to-end environment bootstrap (Python, deps, Node)scripts/run-backend.ps1: start FastAPI athttp://127.0.0.1:8000scripts/run-frontend.ps1: start Vite athttp://localhost:5173scripts/run-download-worker.ps1: process queued download jobsscripts/create-shortcuts.ps1: create Windows Desktop & Start Menu shortcuts for the built Tauri appscripts/build-desktop.ps1: build Tauri desktop installerscripts/first-run.ps1: launch backend + frontend togetherscripts/diagnose-env.ps1: print environment diagnostics (versions, key paths)
Prerequisites (auto-detected):
- Python 3.11+
- Node.js LTS (installed via winget if missing)
- Rust toolchain (for Tauri build)
One-line bootstrap + run:
powershell -ExecutionPolicy Bypass -File scripts\bootstrap-desktop.ps1; powershell -ExecutionPolicy Bypass -File scripts\first-run.ps1
Build installer:
powershell -ExecutionPolicy Bypass -File scripts\build-desktop.ps1
- Builds produce a Windows NSIS installer (
.exe). - Upload the installer from:
frontend\src-tauri\target\release\bundle\nsis\*.exe
- End users download the
.exe, run the installer, and it will create Start Menu + Desktop shortcuts. Portable (no installer) package:
powershell -ExecutionPolicy Bypass -File scripts\package-portable.ps1 -Output UNCHAINED-portable.zip
Distribute UNCHAINED-portable.zip. User extracts anywhere and double-clicks Launch-UNCHAINED.ps1 to:
- Create Python venv if absent and install backend requirements
- Start backend (FastAPI)
- Optionally recompute analytics (embeddings, clusters, stats)
- Launch built desktop executable if present, else start dev frontend
Recompute analytics manually (backend must be running):
powershell -ExecutionPolicy Bypass -File scripts\recompute-analytics.ps1 -Clusters 8
Self-extracting EXE (auto-unzip + launch):
Prerequisite: Install 7-Zip (ensures 7z.exe in PATH) and have SFX module at C:\Program Files\7-Zip\7z.sfx.
powershell -ExecutionPolicy Bypass -File scripts\build-sfx-portable.ps1 -SfxOutput UNCHAINED-portable.exe
Share UNCHAINED-portable.exe. On double-click, it extracts to %LOCALAPPDATA%\UNCHAINEDPortable and runs Launch-UNCHAINED.ps1 automatically.
Troubleshooting:
- Use
scripts\diagnose-env.ps1to inspect environment. - If
wingetis unavailable, manually install Node (https://nodejs.org) and Rust (https://rustup.rs). - Delete
frontend\node_modulesand re-run bootstrap if dependency issues occur. - For portable mode ensure you extracted the zip (do not run inside the compressed folder in Explorer).
- To build a fresh portable package after an update: run installer build (optional) then
package-portable.ps1.
Backend (config/.env):
API_HOST(default127.0.0.1)API_PORT(default8000)
Frontend (frontend/.env optional):
VITE_API_BASE(defaulthttp://127.0.0.1:8000)VITE_ENABLE_NOTIFICATIONS(optional; defaults to true)
See SCREENSHOTS.md for images and GIFs.
- Not a SaaS chatbot wrapper.
- Not a single-model playground.
- Not cloud-first surveillance software.
- Not a DAW/Photoshop replacement.
Issues and PRs are welcome.
- Contribution guide: CONTRIBUTING.md
- PR template: .github/PULL_REQUEST_TEMPLATE.md