Roadmap
The single source of truth for what Iblis intends to build, in what order, and
why. Rendered live on https://iblis.meiuxmeiux.com/roadmap. Update through
tracked main commits — never duplicate this content into the site.
Granularity rule: each phase is a small set of bullets, each bullet is a verifiable outcome. If a bullet wouldn't fit in a single PR description, split it. Anything past v1.0 is intent, not commitment.
Current delivery snapshot — 2026-08-24
- Shell
0.2.0-alpha.44, ACE-Step engine pack0.1.4, and ACE-Step Training pack0.1.1are live and the installer/update/download feeds are synchronized. The v2 catalog also serves the Fixture Engine (beta): the shell's engine registry routes v1 and v2 protocols, targets queue entries at an exact engine, starts v2 engines on demand, and Create renders each engine's signed capabilities (cards, descriptor controls, provenance). Next: an acestep.cpp re-pin (engine pack 0.1.5), and an audio.cpp second-engine pack — sequence indocs/planning/2026-08-24-session-plan.md. - Phase 7's complete Training + community Styles loop is implemented and
shipped. Its sole acceptance gate is Jack's GUI-only E2E on the 8 GB RTX
5070: train -> upload/ingest -> Styles -> Create/generate, while recording
VRAM and timings for calibration. Independent beta polish can continue while
that hardware is unavailable; see
docs/roadmap-to-beta.md. - Phase 8's product-key/admin core is live: hardware-bound short-lived leases, enforcement, the WebAuthn operator panel, training CRUD/logs, and lease-only community uploads. The 2026-07-14 security audit is fully closed.
- Alpha.37 ships four built-in BPM/key providers and defaults new generations to first-party Iblis DSP analysis. Commercial qualification, legacy backfill, richer Library use, and Training-label reuse remain open.
- Jack's alpha.38 creation-actions duration check passed on Windows, but that release discarded the returned audio and made its required continuity listen impossible. Alpha.39 retains and plays both probe WAVs and repairs the skin and stuck-state problems found in Audio analysis. Extend still follows only after the audible probe passes on a delivered fix (alpha.39 or newer).
- The dated multi-engine, stems, LoRA, and orchestration plan is
docs/planning/2026-07-21-audio-platform/. Its first two engine-v2 slices are shipped in alpha.40: shared host code now calls a neutral engine-provider interface (all ACE dialect lives in an explicit compatibility driver) and the SDK carries strict contract-v2 descriptor/recipe/job/output parsers with hostile-fixture tests.
Phase 0 — Foundation
- Repo scaffold, charter, feature docs, Justfile.
- Apache vhost template +
just provision-vhost/just provision-ssl. - Placeholder site renders CHANGELOG and ROADMAP from this repo.
Done when: https://iblis.meiuxmeiux.com/ returns 200 with TLS, showing this file.
Phase 1 — Shell skeleton
- Electron + Vite + Svelte 5 app opens on Windows 11 with Mica backdrop.
- Custom titlebar; default dark theme via CSS variables only.
- Empty-state Home view: "Install the engine pack to get started."
electron-updaterwired to the GCSlatest.ymlfeed and versioned installer.
Done when: just build produces an installer that opens to the empty
state and self-updates on a staged-tag bump.
Phase 2 — Plugin host
- Signed catalog fetch (Ed25519). SHA-256 verified asset downloads.
- Versioned plugin folders, atomic
current.txtpointer, instant rollback. - Sidecar supervision: spawn, health-check, hot-swap, kill-on-quit.
Done when: a stub echo-server plugin installs, updates, rolls back,
and removes entirely through the UI — no CLI involved.
Phase 3 — Audio engine plugin (ACE-Step)
- CI can build CPU and CUDA variants; the current published alpha pack is the native CUDA/Blackwell path and does not advertise a CPU fallback.
manifest.jsondeclares LM + DiT + VAE + embed GGUFs.- Assets uploaded to
gs://iblis-dist/plugins/acestep-engine/<ver>/. - First-run wizard probes VRAM and recommends a compatible engine pack; generation profiles come from bounded live engine facts, not install labels.
Done (2026-07-12): the gate is closed. A real Windows 11 machine
(Arrow Lake-HX + RTX 5070 laptop) installed
Iblis-Setup-0.2.0-alpha.6.exe from the live site, pulled engine pack
0.1.3 from the signed catalog, and generated tracks end-to-end — no
BSOD. The host-stability fight and its fix (upstream re-pin +
GGML_OPENMP=OFF + native Blackwell CUDA) are recorded in
docs/feature/engine-stability.md.
Phase 4 — Library + waveform vis
The delivered foundation and engine-quality sequence are recorded in
docs/phase-4-plan.md.
Shipped foundation
- Atomic LibraryStore for tracks, folders, and prompts; flat folders, rename-in-place, drag-out, prompt remix, and path-safe deletion.
- Persistent app-wide playback, byte-correct WAV range serving, measured waveform peaks/silence bounds, track details, and provenance.
- A strictly serial generation queue with pause, reorder, cancellation, restart recovery, runtime-derived profiles, and blinded comparisons.
Current analysis state and open work
- Automatic BPM/key analysis, the durable scheduler/result store, provider settings, cancellation, retry, benchmark UI, and separate requested/detected evidence are shipped in alpha.37. Finish legacy backfill, row/search/filter use, Training label provenance, and the rights-cleared commercial provider decision.
- Frequency-coloured waveforms: a bounded raw-PCM spectral sidecar and low/mid/high SkinContract tokens; existing amplitude peaks are insufficient.
- Cover upload/regeneration and the first pluggable waveform visualizer.
Done when: a non-technical user can generate a track, see clearly labeled detected BPM/key, file it, rename it, change or generate a cover, remix it, and understand its provenance without docs.
Phase 5 — Stem split + image gen plugins
- Stem splitter plugin (Demucs port or equivalent native binary).
- Image-gen plugin (SDXL-Turbo or Flux-schnell, GGUF preferred).
- Both expose their results into the library's per-track sidecar files.
Done when: generate track → auto-cover via image-gen → split stems → all artifacts visible against the same track row.
Phase 6 — Skinning UI (in-app)
- Theme picker + "edit current skin" panel inside Settings.
- CSS variables only; skins are JSON-described overrides + optional CSS.
- Several first-party skins covering dark / light / "fun flavor" extremes.
Foundation landed (2026-06-05): the shell now speaks the SkinContract
token vocabulary (app.css reconciled off its ad-hoc vars onto the
tokenToCssVar set), ships the four first-party skins as token sets
(dark-3d, light-paper, infernal, cathedral — same palettes as the
website), and has a live Settings → Appearance picker that switches skins
instantly and persists the choice. Translucent Mica chrome is derived from the
palette via color-mix, so skins only define colors.
Editor landed (2026-06-05): Settings → Appearance now has the "edit
current skin" token grid — every SkinContract token, grouped by namespace,
searchable, with a colour picker for color.*/wave.* and a text field for
the rest. Edits apply live and are stored as per-skin overrides
(localStorage iblis.skin.overrides, validated against the contract) that
re-apply at parse-time next launch. Per-token reset (↺) and "Reset all" revert
to the skin's own values.
Export/import landed (2026-06-05): the editor now exports a skin's edits as
a shareable .iblis-skin file — a JSON SkinDescriptor (extends: <base> +
overridden tokens, the override map serialised) — and imports one back,
applying its recognised tokens onto the named base skin (unknown base → default;
unknown tokens ignored). Imports are unsigned sideloads today and warn as such.
portable.ts is DOM-free and unit-tested; the editor UI is split across
SkinEditor.svelte (overrides + export/import) and TokenGrid.svelte (the
grid).
Skins-as-signed-plugins landed (2026-06-05): a kind:"skin" plugin ships a
skin.json descriptor (+ optional extras.css) through the signed catalog
with no executable, so the Phase-2 installer/lifecycle handles it unchanged
and never spawns a process. Main validates each installed skin's descriptor off
disk (parseSkinDescriptor) and serves it over window.iblis.skins.list(); the
renderer injects a generated :root[data-skin]{…} block + extras.css so
installed skins join the picker (tagged "plugin"), apply live, and paint
flash-free via a localStorage descriptor cache. First proof plugin:
packages/plugins/skin-boodark-nord. Built-ins stay bundled as offline
defaults. (Go-live = just catalog-build then just catalog-publish; upload,
public-byte verification, and live catalog promotion are the explicit step.)
Done when (met): a user switches skins live, edits one, exports it as a
shareable .iblis-skin file, and installs a skin from the signed catalog. New
skins composed against the contract work on every plugin without that plugin
knowing the skin exists.
Phase 7 — Training + community styles (implemented 2026-07-14, awaiting Jack's E2E)
The full sequenced plan, decision log, and gates live in
docs/training/00-overview.md. Every slice
is implemented and shipped: the server side (T1), the resource lock and
Training section (T2, alpha.18), the wizard + local pipeline + published
training pack v0.1.1 (T3, alpha.19 + later catalog update), resumable upload
with auto pull-down (T4, alpha.20), the Styles overhaul with the community browser
(T5, alpha.21), and the Create style picker (T6, alpha.22). Per decision
D8 the human gates consolidated into one pass: Jack's end-to-end run on
real Windows hardware is the remaining acceptance, and it calibrates the
preflight estimates (G1) and proves the adapter loader (G2). Outcome
bullets:
- A top-level Training section trains Texture/Groove LoRAs from a folder of the user's own songs — stems, tagging, and training run locally through an opt-in signed training pack, with per-stage progress and a hard Training/Generation mutual-exclusion lock.
- Finished trainings upload (disclosed, consented) to the community library: site ingestion, validation, GCS storage, and a signed discovery index.
- The Styles area becomes a top-level section with a dedicated community trainings browser (search, categories, downloads, "Yours" flag).
- Create gains a style picker with badges, search, and a browse-more modal, honest about the engine's single-adapter limit.
Done when: Jack updates his installed app, trains on his own folder, watches it round-trip through the server, and generates with it — GUI only.
Phase 8 — Admin panel + product keys (core implemented and live 2026-07-15)
The full design lives in docs/admin/00-overview.md
(slices 01–03 cover the key protocol, the operator panel, and the shell
integration). Outcome bullets:
- Iblis keeps working without a key — files, library, playback, skins, and everything already downloaded stay free forever. Training, Generation, and the community Styles library require an active product key (30-day default, 90-day option), validated through short-lived server-signed entitlement leases so revocation and expiry actually bite.
- An operator panel at
admin.iblis.meiuxmeiux.com(WebAuthn passkeys; the first registered passkey is super admin) issues and revokes keys, tracks activations and abuse signals (install caps, IP/fingerprint velocity), reads user diagnostics, and CRUDs community trainings. - Every licensing event is observable end to end: structured shell logs plus a licensing section in diagnostics bundles, mirrored by a server-side per-key event timeline.
Acceptance remaining: the consolidated Windows E2E verifies the live key -> Training -> Styles -> Create loop on the ordinary installed GUI. The individual key activation, enforcement, revocation, panel, and server gates are already implemented and shipped.
v1.0.0 — MVP launch
All of Phases 0–6 green. Plus:
- The "Easy Mode" / "Sell-your-soul" installer flow (see
docs/feature/installer.md). PRIVACY.mdshipped in the installer.- Jack has generated 50+ tracks across 5+ genres and is satisfied.
Beyond v1.0 (intent, not commitment)
- Node-based builder (ComfyUI-style) as an optional plugin.
- File-explorer UI as an optional plugin.
- DAW drag-and-drop integration.
- Sample-pack pipeline.
- Auto-mastering chain.
- Share-link plugin (when/if cloud is opened up).
- Credit / cloud-boost system (deliberately last — see charter).
- Admin-portal extras beyond Phase 8's scope: GCS upload UI and the
dev-secret vault. See
docs/feature/admin-portal.md.