Skip to content

How Producer Pal Runs Inside Ableton Live ​

Ableton's new Extensions SDK is not the only modern way to run JavaScript inside Live. Producer Pal has been running a full JavaScript server inside Live, with real-time control of your Live Set, via Max for Live. That's also why it can do things an extension can't do yet.

Two engines, two halves of the job ​

Max for Live has shipped with Live for over a decade. Inside it are two very different JavaScript engines, and each has something the other lacks:

  • The Live API engine. This is the part that can actually touch your Live Set: start and stop playback, launch clips and scenes, read and write nearly any property of any track, clip, or device, and refer to each object by a stable ID that follows it even as you move things around. It's real-time and far deeper than the Extensions SDK, though not every operation is possible (see More Than a Wrapper for the edge cases). What it can't do is run a modern server, install libraries, or talk to an AI on the internet.

  • A modern Node.js runtime. This is full-fat Node.js running inside Live: real web servers, the entire npm library ecosystem, network access, the works. This is the "real JavaScript" people think only an extension can offer. What it can't do, on its own, is reach into your Live Set; it has no direct access to the Live API.

Neither is enough on its own.

The bridge ​

Producer Pal's core is a bridge that makes these two engines work as one, inside a single Max for Live device:

How Producer Pal connects an AI to Ableton LiveAn AI connects over the Model Context Protocol to the Producer Pal device, which contains a Node.js server bridged to the Live API, which controls your Ableton Live Set.AI: Claude, Gemini, ChatGPT, local models…Model Context ProtocolProducer Pal deviceNode.js servernpm · networkbridgeLive APIfull control⇄⇄Your Ableton Live Set

The AI connects to the Node.js server. When it asks to, say, "add a four-bar bassline and play it back," the server hands that work across the bridge to the Live API engine, which carries it out in your Live Set in real time, then reports back.

Getting the two engines to talk to each other reliably is the fiddly part, and it's why you don't see this approach often. For how the bridge actually moves data (JSON sent over Max patch cables, chunked to survive a length limit), see The Bridge: JSON Over Patch Cables.

One device, nothing to wire up ​

Everything lives in a single Max for Live device. Drop it onto a track and the whole bridge comes up with it: server, Live API access, and all. No separate processes to launch, no second component to install and connect, no juggling an extension and a helper device.

Released under the GPL-3.0 License.