Skip to main content

Grow your library, choose a pack, start AI B2B

Live update: Experimental learning recipes now connect scored practice scripts to simultaneous live playback, bass swaps and high-pass sweeps. Verified phrase sync and musical-quality validation remain incomplete. Earlier sequential-only descriptions below record the prior milestone.

The short path

  1. Open Import / export, choose your computer's music folder, and filter by artist, title or subfolder. Select the next 25 candidates or choose individual recordings. Import & analyze uploads selected audio and creates full analysis jobs.
  2. Open Music packs. Name a pack, select imported tracks across search pages, and save. Each pack has a stable ID and up to 300 track IDs; audio is not duplicated.
  3. Press Mix this pack, then Start AI B2B. The session copies those selected IDs into its pool. Press Listen to master to enable browser sound. DJ A is teal; DJ B is amber. The canvas, current/next cards and action timeline follow engine state.
  4. Take control cancels automation and preserves the current music. Manual deck and mixer controls are collapsed until needed.

The first live controller alternates between deck positions across the two sides using deterministic sequential fades. Independent live AI personalities, phase-locked overlapping blends, samples and FX are still future work. The existing offline B2B actors are a separate path.

Discovered versus imported

The registered Windows source inventory contains 6,005 paths (about 65 GiB); at this revision only 22 assets had been imported. The source is paused and not mounted inside Kubernetes. An inventory or dataset reference does not make its audio playable.

The folder picker bridges that gap by uploading from the browser, without a network mount. It reads filenames locally first. Candidate selection skips titles already in your catalog and files above 150 MiB. Title matching is a hint, not recording identity; alternate versions can be selected manually. Supported formats: WAV, FLAC, MP3, AIFF, M4A. Select Tracks or Samples before importing. Uploads run sequentially, report errors, retain failed selections and can stop after the current file. Keep the page open during upload. RabbitMQ analysis continues after upload even if you leave the page.

Packs

Packs are private MongoDB music_packs records in the workspace scope. They contain id, name, and explicit track_ids. The API validates every member against the current library and rejects samples, duplicates and more than 300 tracks. Empty packs can be saved; mixing needs at least two tracks. Saving an edited pack does not alter a running session's pool. Analyze selected tracks queues full analysis for pack members.

Endpoints: GET/POST /api/v1/library/packs, GET/PUT /api/v1/library/packs/{id}. Editing replaces membership; concurrent edits use last-write-wins.

Practice settings are separate from model spending

Learning studio has a daily experiment setting. 0 means no daily cap and is the default. One experiment runs per eligible Apalis pass, checked approximately every minute and waits when the live booth is active. Use a 2–20 track pack or the default benchmark pool. Each exact pair/recipe/input revision is tested once. Exhaustion means new tracks, recipes or revisions are needed; identical renders are not useful new learning data.

Rendering itself does not call an LLM. It consumes CPU and artifact storage. Periodic model reviews and automatic artifact cleanup are described below. The original daily_budget_reached after 12 experiments was a compute cap, not Kimi spending.

Kimi allowance and monitoring

The booth owner's Adviser settings controls 1–1,000 requests per session (default 120) and 5–300 seconds minimum spacing (default 10). Settings persist in MongoDB and apply immediately without resetting the usage counter. Strategy still normally runs once per established track, with explicit or context-driven replanning. The live request deadline is 45 seconds; audio/control execution is independent. Exhaustion retains local guidance and deterministic playback.

AI usage lists the latest 1,000 workspace records: model, purpose, session, status, latency and provider-reported input/output/total tokens. Unknown final usage is not treated as zero billing. No dollar estimates are fabricated.

The dedicated prochain-aidj Langfuse project receives trace/generation metadata, compact JSON input and validated public decisions for Rig model calls, including live advice and offline B2B decisions. Credentials live in Kubernetes Secret aidj-langfuse; the API uses BOOTH_LANGFUSE_KEYS_FILE. Credential fields and private reasoning are excluded. Compact context includes track titles, measurements and bounded review notes; music files and system prompts are not exported. Metadata-only traces from the first deployment have no recoverable original input. Live and offline session IDs group calls. Dollar costs require suitable model pricing in Langfuse; Moonshot billing is authoritative.

Started records are saved before provider calls. Completed/failed records retain usage when available. Cancellation, timeout or restart can leave an unfinished record with unknown final tokens. Langfuse delivery failures remain visible locally; there is no automatic exporter retry yet. Telemetry does not retroactively recover past calls.

Occasional Kimi review and human spot checks

The practice worker may call Kimi once per six completed experiments. Toggle Kimi batch reviews in Practice settings. These calls review provided technical measurements and existing recipes, not audio listening. Valid output prioritizes an existing recipe for upcoming untested combinations and is retained as an unapproved hypothesis. It never overwrites technical scores, human ratings or live execution approval. Failed reviews do not stop deterministic practice.

Worth listening to surfaces up to three unreviewed examples: a low technical score, a strong technical score, and a middle result. These are simple sampling heuristics, not a trained uncertainty model. Occasional human ratings in Transition memory can correct the direction; reviewing every experiment is unnecessary.

Artifact cleanup

Each idle worker invocation checks storage before starting. Only generated session-practice-<hash>/mix.wav files are eligible. Unreviewed, non-best audio older than seven days is removed; under storage pressure (practice audio above 5 GiB or less than 2 GiB free), eligible audio older than 24 hours is removed first. Human-reviewed and best examples are protected. Original library audio, scripts, hashes, scores, feedback and telemetry are retained. If protected/recent data leaves less than 2 GiB free, practice reports waiting_for_storage rather than filling the disk. Cleanup results are visible in Learning studio. Cleaned audio can no longer be auditioned, but telemetry remains viewable.

This supersedes the initial no-retention implementation and the initial purely deterministic practice loop. The daily experiment cap remains disabled by default; resource checks, exclusive execution and live-booth priority remain enabled.

Kimi batch reviews also receive a pinned, training-only empirical overlap prior from the joint corpus (21,788 screened training examples, median 66 beats). Held-out median-predictor error is about 39.2–44.0 beats, so this is weak aggregate context, not a precise mix-point predictor or a quality score. Current executable practice recipes remain 16/32 beats; the prior does not authorize unsupported lengths or styles.

Learning jobs and Apalis

Open /library/learning-jobs for the job inventory, paginated experiment history, Kimi hypotheses and storage cleanup results. Pause after the current experiment or resume learning; Kimi reviews have a separate toggle. Analysis jobs retain their own retry/cancel page. Playing live makes practice wait automatically.

Apalis 0.7.4 schedules a finite learning pass approximately every minute with concurrency one. MongoDB persists recipes, settings, experiments, model reviews and an owner-checked execution lease; RabbitMQ confirms deliveries. A normally completed or failed pass releases its lease. A crashed process leaves the lease to expire after eight minutes; exact experiment identities prevent rerendering completed work. Interrupted artifacts remain preserved for inspection rather than being silently overwritten. Missed scheduler ticks are not backfilled. Redis is not required.

This first integration has one Apalis worker: cleanup, rendering, scoring, evidence capture and occasional Kimi review are stages within its pass. The job inventory labels this explicitly. It does not claim separate pausable queues or a trained technique model. Airflow was assessed but not installed. See Apalis documentation and cron scheduling.