Pre-release · v0.6 · MIT License

AI assistant inside
Ableton Live

LLM-r is a self-contained VST3 plug-in. Load it in any track, type what you want, and review a safe Ableton operation plan before it touches your Live set.

LLM-r Plan Board interface
VST3 plug-in (primary surface — lives inside Ableton Live) | chat interface · settings panel · Ollama controls v LLM-r planner ──── Modelito ────▶ LLM (OpenAI / Anthropic / Ollama / …) | v Action plan (dry-run preview or execute) | v AbletonOSC / Device Bridge ───────▶ Ableton Live Alternatives: desktop GUI (PyQt6) · HTTP API · web UI
Features

A focused toolkit for Live session automation

A focused toolkit built around safety, extensibility, and a clean API.

NL

Natural-language planner

POST a free-text prompt to /api/plan; LLM-r returns a typed, validated action plan grounded in a strict capability schema.

OK

Safe execution

Dry-run mode previews every plan without sending actions. Destructive actions (track delete, stop-all) require an explicit approval flag.

UI

VST3 plug-in GUI

Self-contained chat interface living inside Ableton Live. Settings panel, Ollama management, persistent API keys — no server or terminal needed.

M

Macro system

Named action sequences (idea_sketch, performance_prep, ...) with full CRUD via the API and persistence across restarts.

LS

Live state introspection

Inspect live-state context, including clips and notes created through LLM-r plus recognized AbletonOSC replies.

SSE

SSE streaming

POST /api/stream streams LLM completions as server-sent events, ready to wire into any chat or agent frontend.

MI

MIDI note editing

Add notes with pitch, timing, duration, velocity, and mute state. Remove or clear notes by known pitch/time ranges with approval.

AU

Audio clip controls

Adjust existing audio clip gain, transpose, detune, warping, warp mode, RAM mode, and clip loop or marker properties.

DV

Device parameters

Query parameter values and names, set single or bulk parameter values, and delete devices by track/device index.

Works with any provider supported by Modelito

OpenAI Anthropic Google Ollama Groq Mistral ...and more
Quick Start

Up and running in minutes

Build the VST3 plug-in, load it in Live, and start chatting with your session. Or use the desktop GUI or HTTP API for headless workflows.

1

Build & install the plug-in

Run the two build scripts. Requires macOS and Xcode CLI tools.

2

Enable AbletonOSC

Install AbletonOSC as a MIDI Remote Script. For device loading, also enable the bundled LLMRDeviceBridge Remote Script.

3

Load LLM-r in Ableton

Add LLM-r as a VST3 instrument on any track. Open ⚙ Settings inside the plug-in and enter your LLM provider and API key.

4

Chat with your session

Type a request and press Plan. Review the plan, then click ▶ Execute — or keep Dry run on to preview first.

build VST3 plug-in
# build and install the plug-in
git clone https://github.com/krahd/LLM-r.git
cd LLM-r
bash scripts/build_vst3.sh
bash scripts/install_vst3.sh
or: HTTP API (headless)
# install and start the server
pip install -e ".[gui]"
llmr serve

# plan & execute
curl -s -X POST http://127.0.0.1:8787/api/plan \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Set tempo to 120"}'
Capabilities

Current Live automation tools

The full catalog is always available at GET /api/capabilities at runtime.

ToolDomainDestructiveKey args
set_temposongbpm: float
song_play / song_stopsong-
song_recordsongrecord: bool
song_set_time_signaturesongnumerator, denominator
song_set_global_quantizationsongquantization: int
create_midi_track / create_audio_tracktracksindex: int
track_deletetracksyestrack_index: int
track_duplicate / track_renametrackstrack_index, name
set_track_volume / track_set_pantrackstrack_index, value
set_track_mute / set_track_solo / arm_tracktrackstrack_index, bool
fire_scene / fire_clipsessionscene/track/clip index
stop_all_clipssessionyes-
scene_create / scene_delete / scene_renamesessiondelete: yesscene_index
clip_create / clip_deletesessiondelete: yestrack_index, clip_index
clip_duplicate_loop / clip_duplicate_toclipssource and target clip indexes
clip_rename / clip_set_colorclipstrack_index, clip_index, value
clip_set_loop_* / clip_set_*_markerclipstrack_index, clip_index, beats
midi_notes_get / midi_notes_addmiditrack_index, clip_index, notes
midi_notes_remove / midi_notes_clearmidiyestrack_index, clip_index, optional range
clip_set_gain / clip_set_pitch_*audiotrack_index, clip_index, value
clip_set_warping / clip_set_warp_modeaudiotrack_index, clip_index, value
device_loaddevicestrack_index, query, device_type, preset/path
device_get_* / device_set_*devicestrack_index, device_index, parameter index
device_deletedevicesyestrack_index, device_index
utility_undo / utility_redoutility-

Device browser loading uses LLMRDeviceBridge. Plugin-chain loading, warp marker CRUD, render/export, and destructive sample editing remain outside the current runtime contract.