Disclaimer
This content describes a method for running a local large language model (LLM) on a Mac Studio in conjunction with DaVinci Resolve Studio version 21.1 or later. It is provided for informational purposes only and does not constitute a guarantee of suitability, performance, or fitness for any particular purpose. Nothing herein should be construed as a recommendation to purchase any specific hardware, including an M5 Ultra Mac Studio or any other model.
The author assumes no responsibility or liability for any decisions made based on this information, including any purchase of hardware, or for any resulting costs, performance shortfalls, or other consequences. Users are solely responsible for independently evaluating their own requirements and determining the adequacy of any hardware or software configuration for their intended use.
First off, it is important to call out a few specifics of my scripting and the use of Qwen3.8-27B through Inco AI's Splash engine.
- Resolve 21.1’s MCP server is Studio-only and is configured inside the app (File > Setup AI Assistants), officially for Claude, Claude Code, and ChatGPT Codex.
- It does not register as an MCP server in Claude Desktop / Cursor / Resolve.
- It does not replace Resolve’s Neural Engine (Magic Mask, IntelliTrack, Super Scale).
- Qwen3.8-27B (even Xhigh) is strong for its size but still trails the best cloud frontier models on complex reasoning, long-horizon planning, and nuanced creative judgment.
- For very intricate editorial decisions or highly creative transform sequences, you may still want to fall back to a frontier model occasionally.
- Native Resolve 21.1 MCP is more limited; the community server helps but is still a third-party layer that can break with Resolve updates.
NOTE: Because of the times you may find that you need more complex edits than Qwen3.8-27B can provide, I made sure to make the startup script a hybrid script. You can indicate with the flag of "cloud" if/when you wish to use a Claude subscription for editing.
Background and research
I recently purchased and received an M5 Ultra Mac Studio (base model: 96 GB unified memory, 30 CPU / 64 GPU cores, 1 TB SSD). My previous M1 Max with 64 GB was no longer keeping up with my workload, so I decided the new M5 Ultra base model should provide the performance I need for roughly as long as the M1 Max had served me.
With the additional performance—and the launch of native AI MCP support in DaVinci Resolve Studio 21.1 (currently 21.1.1)—I began experimenting with local models. I know I could subscribe to a cloud Claude account (which others have tested) and require less local memory, but I have sufficient RAM to run a local model and reduce reliance on an internet connection.
After research, I determined that the Qwen3.8-27B model (4-bit MLX quantization) fits comfortably in the system’s RAM while leaving enough headroom for DaVinci Resolve Studio to run well. Larger models are possible but would constrain Resolve’s available memory or require a higher-RAM configuration. For example, a 128 GB M5 Max would not provide enough headroom for both a larger model such as Qwen3.8-Flash-Next and Resolve, and jumping to a higher-RAM Ultra configuration exceeded my comfort level for operational spend.
Several inference engines are available. After evaluating options, Inco AI’s Splash engine appears to be the best match for my purposes. It has improved significantly during development and is currently at version 1.3.2 (at the time of my posting).
I perform a large number of Dynamic Zoom and Ken Burns-style pan transforms. Community MCP servers currently offer stronger support for these operations than the native Resolve MCP, so I am using one of them.
The two most useful community options at present are:
- samuelgursky/davinci-resolve-mcp — most popular; strong compound tools and good transform + keyframe support
- lordhoell/davinci-resolve-mcp — very complete (440+ tools), excellent Fusion and keyframe coverage
I chose the Samuel Gursky MCP. While Qwen3.8-27B can be used with Hermes and other MCP-aware setups, I selected Claude Code CLI. This should align most closely with existing tutorials that use cloud Claude for similar workflows.
Below is the installation script I developed with the assistance of generative AI, along with a companion launch script.
NOTE: In order to greatly improve TTFT, I've the SSD cache is set for 32GB and made it persistent (reloads the cache in the even of a system restart). Make sure to factor this in your space requirements.
Install Script
This version installs:
- Splash 1.3.2 + Qwen3.8-27B (Xhigh)
- Claude Code CLI
- The recommended community Resolve MCP server (samuelgursky)
- Configures Claude Code to use both the local Splash model and the community Resolve MCP
Save as `~/setup-splash-resolve.sh` and run:
#!/bin/bash
set -e
echo "=== Full setup: Splash 1.3.2 + Claude Code CLI + Community Resolve MCP ==="
echo "Optimized for 96 GB M5 Ultra + Dynamic Zoom / Ken Burns work"
echo
# --------------------------------------------------
# 1. Splash 1.3.2
# --------------------------------------------------
echo "→ Installing/upgrading Splash..."
brew update
brew install incoai/tap/splash || brew upgrade incoai/tap/splash
splash --version
echo
# --------------------------------------------------
# 2. Claude Code CLI
# --------------------------------------------------
echo "→ Installing Claude Code CLI..."
export PATH="$HOME/.local/bin:$PATH"
if command -v claude >/dev/null 2>&1; then
echo " Already installed: $(claude --version 2>/dev/null || echo present)"
else
echo " Running official native installer..."
curl -fsSL https://claude.ai/install.sh | bash
fi
export PATH="$HOME/.local/bin:$PATH"
if ! command -v claude >/dev/null 2>&1; then
echo "ERROR: Claude Code not found after install."
echo "Try: brew install --cask claude-code"
exit 1
fi
echo " Claude Code ready: $(claude --version)"
echo
# --------------------------------------------------
# 3. Community DaVinci Resolve MCP (for transforms/keyframes)
# --------------------------------------------------
echo "→ Installing community DaVinci Resolve MCP server..."
echo " (samuelgursky/davinci-resolve-mcp – best for transforms & keyframes)"
# Requires Node.js for the npx installer
if ! command -v node >/dev/null 2>&1; then
echo " Node.js not found – installing via Homebrew..."
brew install node
fi
# Run the official setup (installs + configures for Claude Code)
npx -y davinci-resolve-mcp setup
echo " Community Resolve MCP installed and registered with Claude Code."
echo
# --------------------------------------------------
# 4. Model + cache settings
# --------------------------------------------------
MODEL="mlx-community/Qwen3.8-27B-4bit"
CACHE_DIR="$HOME/Library/Caches/Splash/prefix-cache"
mkdir -p "$CACHE_DIR"
# --------------------------------------------------
# 5. Launch Splash with full performance features
# --------------------------------------------------
echo "→ Starting Splash (SSD KV cache + persistence, Xhigh)..."
pkill -f "splash serve" 2>/dev/null || true
sleep 1
nohup splash serve \
--model "$MODEL" \
--max-cache-disk 32G \
--persistent-cache \
--cache-dir "$CACHE_DIR" \
--state-format bf16 \
--idle-release off \
--port 8000 \
> ~/splash-server.log 2>&1 &
echo " Splash started. Log: ~/splash-server.log"
# Wait for readiness
echo " Waiting for server..."
for i in {1..60}; do
if curl -s http://127.0.0.1:8000/v1/models >/dev/null 2>&1; then
echo " ✓ Splash ready on http://127.0.0.1:8000"
break
fi
sleep 2
done
echo
# --------------------------------------------------
# 6. Point Claude Code at local Splash
# --------------------------------------------------
echo "→ Configuring Claude Code to use local Splash..."
export ANTHROPIC_BASE_URL="http://127.0.0.1:8000"
export ANTHROPIC_API_KEY="splash"
export OPENAI_BASE_URL="http://127.0.0.1:8000/v1"
export OPENAI_API_KEY="splash"
if ! grep -q "ANTHROPIC_BASE_URL.*8000" ~/.zshrc 2>/dev/null; then
cat >> ~/.zshrc << 'EOF'
# Local Splash (Qwen3.8-27B) for Claude Code
export ANTHROPIC_BASE_URL="http://127.0.0.1:8000"
export ANTHROPIC_API_KEY="splash"
export OPENAI_BASE_URL="http://127.0.0.1:8000/v1"
export OPENAI_API_KEY="splash"
EOF
echo " Added environment variables to ~/.zshrc"
fi
echo
echo "=== Setup complete ==="
echo
echo "IMPORTANT – before using Resolve MCP:"
echo "1. Open DaVinci Resolve Studio 21.1"
echo "2. Preferences → General → set 'External scripting using' to Local"
echo "3. (Optional) File → Setup AI Assistants for the native MCP as well"
echo
echo "Then open a NEW terminal and run:"
echo "splash claude"
echo
echo "You can now ask Claude Code to perform dynamic zooms, Ken Burns pans,"
echo "keyframed transforms, media organization, renders, and related tasks."
echo
echo "To stop Splash: pkill -f 'splash serve'"
echo "Logs: ~/splash-server.log"
After running the script
- Open DaVinci Resolve Studio 21.1.
- Go to Preferences → General and set External scripting using to Local.
- Run the launch script I have outlined below, note the use of the flag "cloud" if you wish to use your Claude cloud subscription.
- You should see the community Resolve MCP tools available.
Launch Script
This optional script will launch splash, open DaVinci Resolve Studio and then launch Claude Code CLI. If you use the optional flag "cloud", it will instead use the Claude cloud subscription.
Save as ~/start-resolve-ai.sh.
#!/bin/bash
# start-resolve-ai.sh
# Hybrid launcher for DaVinci Resolve + local AI (default) or cloud Claude
#
# Usage:
# ~/start-resolve-ai.sh → Local Splash + Qwen3.8-27B
# ~/start-resolve-ai.sh cloud → Real Claude (cloud)
set -e
MODE=${1:-local} # default = local
MODEL="mlx-community/Qwen3.8-27B-4bit"
CACHE_DIR="$HOME/Library/Caches/Splash/prefix-cache"
PORT=8000
LOG="$HOME/splash-server.log"
export PATH="$HOME/.local/bin:/opt/homebrew/bin:$PATH"
echo "=== DaVinci Resolve AI Launcher ==="
echo
# --------------------------------------------------
# CLOUD MODE
# --------------------------------------------------
if [ "$MODE" = "cloud" ]; then
echo "Mode: CLOUD (real Claude)"
echo
# Clear any local overrides so Claude Code uses the real Anthropic endpoint
unset ANTHROPIC_BASE_URL
unset ANTHROPIC_API_KEY
unset OPENAI_BASE_URL
unset OPENAI_API_KEY
echo "→ Opening DaVinci Resolve..."
open -a "DaVinci Resolve" 2>/dev/null || open -a "DaVinci Resolve Studio" 2>/dev/null || {
echo "⚠ Could not find DaVinci Resolve. Open it manually."
}
sleep 2
echo "✓ Using official Anthropic Claude"
echo " (Make sure you are logged in or have an API key configured)"
echo
echo "Launching Claude Code..."
echo "------------------------------------------------"
exec claude
fi
# --------------------------------------------------
# LOCAL MODE (default)
# --------------------------------------------------
echo "Mode: LOCAL (Splash + Qwen3.8-27B Xhigh)"
echo
# 1. Start Splash if needed
if curl -s "http://127.0.0.1:$PORT/v1/models" >/dev/null 2>&1; then
echo "✓ Splash is already running on port $PORT"
else
echo "→ Starting Splash server..."
mkdir -p "$CACHE_DIR"
pkill -f "splash serve" 2>/dev/null || true
sleep 1
nohup splash serve \
--model "$MODEL" \
--max-cache-disk 32G \
--persistent-cache \
--cache-dir "$CACHE_DIR" \
--state-format bf16 \
--idle-release off \
--port $PORT \
> "$LOG" 2>&1 &
echo " Waiting for Splash to become ready..."
for i in {1..45}; do
if curl -s "http://127.0.0.1:$PORT/v1/models" >/dev/null 2>&1; then
echo "✓ Splash is ready"
break
fi
sleep 1
if [ $i -eq 45 ]; then
echo "⚠ Splash did not become ready in time."
echo " Check the log: $LOG"
exit 1
fi
done
fi
# 2. Open DaVinci Resolve
echo "→ Opening DaVinci Resolve..."
open -a "DaVinci Resolve" 2>/dev/null || open -a "DaVinci Resolve Studio" 2>/dev/null || {
echo "⚠ Could not find DaVinci Resolve. Please open it manually."
}
sleep 3
# 3. Launch Claude Code via Splash helper
echo
echo "✓ Local stack ready"
echo " • Splash → http://127.0.0.1:$PORT"
echo " • Model → Qwen3.8-27B (Xhigh)"
echo " • Cache → Persistent SSD"
echo
echo "Launching Claude Code (splash claude)..."
echo "------------------------------------------------"
echo
exec splash claude
Make it executable:
Bash
chmod +x ~/start-resolve-ai.sh
How to use it
| Command |
What it does |
| ~/start-resolve-ai.sh |
Local mode (Splash + Qwen3.8-27B) — default |
| ~/start-resolve-ai.sh cloud |
Cloud mode (real Claude) |
Optional Stop Script
Save it as ~/stop-resolve-ai.sh and make it executable:
Bash
chmod +x ~/stop-resolve-ai.sh
Stop Script
Bash
#!/bin/bash
# stop-resolve-ai.sh
# Cleanly shut down the Splash server
echo "=== Stopping Local AI stack ==="
if pgrep -f "splash serve" >/dev/null 2>&1; then
echo "→ Stopping Splash server..."
pkill -f "splash serve"
sleep 1
# Force kill if it didn't exit cleanly
if pgrep -f "splash serve" >/dev/null 2>&1; then
echo " Process still running – forcing shutdown..."
pkill -9 -f "splash serve"
sleep 1
fi
if pgrep -f "splash serve" >/dev/null 2>&1; then
echo "⚠ Splash could not be stopped. Check manually with: pgrep -fl splash"
else
echo "✓ Splash has been stopped"
fi
else
echo "✓ Splash is not currently running"
fi
echo "Done."
Usage
Bash
~/stop-resolve-ai.sh
This will cleanly terminate the Splash server. It does not close DaVinci Resolve or Claude Code — those stay open so you can finish any work.
Happy to answer questions or share any follow-up results once I’ve put more hours on the setup.
If you encounter any errors with my scripts, please let me know so that I can correct those. I've copied and pasted, but it's possible I may have some errors.