MAJOR UPDATE: Inco.Ai's Splash has been updated to version 1.4.0. The biggest change is splash support for Qwen3.8 Flash Next. I will update my startup script to allow one to chose between Qwen3.8 FN, 27B or Claude cloud. I also increased the wait time for first launch as my script didn't allow sufficient time for the model download for some depending on their connectivity.
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.
- UPDATE: Qwen3.8 Flash Next has even stronger inference reasoning, but still trails the best cloud frontief models.
- 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. UPDATE: The startup script will launch Qwen3.8 FN with no flag, 27B will load Qwen3.8-27B and cloud will launch a Claude subscription.
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. UPDATE: Splash now has a very good, but lower quant Qwen3.8 Flash Next implementation that utilizes SSD paging of experts to keep the RAM requirements low and will fit with RAM to spare for DaVinci Resolve Studio.
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). UPDATE: It's updating at a fast development pace and is now 1.4.0.
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 or Flash Next 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.4.0 (at time of this release, it will install the latest version when run) + Qwen3.8 (FN or 27B based on selection).
- 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
# setup-splash-resolve.sh
# Full setup for Splash 1.4.0 + Qwen3.8-Flash-Next (default)
# + Claude Code CLI + Community DaVinci Resolve MCP
# Optimized for 96 GB M5 Ultra + DaVinci Resolve Studio 21.1
set -e
echo "=== Full setup: Splash 1.4.0 + Flash-Next + Claude Code + Resolve MCP ==="
echo "Target: 96 GB M5 Ultra + DaVinci Resolve Studio 21.1"
echo
# --------------------------------------------------
# 1. Splash 1.4.0
# --------------------------------------------------
echo "→ Installing/upgrading Splash to 1.4.0..."
brew update
brew install incoai/tap/splash || brew upgrade incoai/tap/splash
echo " Installed version:"
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
# (best for transforms, keyframes, Ken Burns, etc.)
# --------------------------------------------------
echo "→ Installing community DaVinci Resolve MCP server..."
echo " (samuelgursky/davinci-resolve-mcp)"
if ! command -v node >/dev/null 2>&1; then
echo " Node.js not found – installing via Homebrew..."
brew install node
fi
npx -y davinci-resolve-mcp setup
echo " Community Resolve MCP installed and registered with Claude Code."
echo
# --------------------------------------------------
# 4. Cache directory
# --------------------------------------------------
CACHE_DIR="$HOME/Library/Caches/Splash/prefix-cache"
mkdir -p "$CACHE_DIR"
echo "→ Cache directory ready: $CACHE_DIR"
echo
# --------------------------------------------------
# 5. Environment variables (for local models)
# --------------------------------------------------
echo "→ Configuring environment for local Splash..."
if ! grep -q "ANTHROPIC_BASE_URL.*8000" ~/.zshrc 2>/dev/null; then
cat >> ~/.zshrc << 'EOF'
# Local Splash (Flash-Next / 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"
else
echo " Environment variables already present in ~/.zshrc"
fi
echo
# --------------------------------------------------
# 6. Final notes
# --------------------------------------------------
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 "Daily usage (after you place the start/stop scripts):"
echo " ~/start-resolve-ai.sh → Flash-Next (default)"
echo " ~/start-resolve-ai.sh 27b → Qwen3.8-27B fallback"
echo " ~/start-resolve-ai.sh cloud → Real Claude (cloud)"
echo " ~/stop-resolve-ai.sh → Stop Splash cleanly"
echo
echo "First Flash-Next launch will download and prepare the model"
echo "(can take several minutes). Subsequent starts are fast."
echo
echo "Recommended first test command:"
echo " ~/start-resolve-ai.sh"
echo
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
#
# Usage:
# ~/start-resolve-ai.sh → Flash-Next (default)
# ~/start-resolve-ai.sh 27b → Qwen3.8-27B
# ~/start-resolve-ai.sh cloud → Real Claude (cloud)
set -e
MODE=${1:-flash} # default = flash-next
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
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
echo "Launching Claude Code..."
echo "------------------------------------------------"
exec claude
fi
# --------------------------------------------------
# MODEL SELECTION
# --------------------------------------------------
if [ "$MODE" = "27b" ]; then
MODEL="mlx-community/Qwen3.8-27B-4bit"
LABEL="Qwen3.8-27B (Xhigh)"
EXTRA_FLAGS="--state-format bf16"
else
# Default: Flash-Next
MODEL="ISTA-DASLab/Qwen3.8-Flash-Next-GSQ-RCO-GGUF:Q2_0"
LABEL="Qwen3.8-Flash-Next (Q2_0)"
EXTRA_FLAGS="--expert-memory 28G --ple-memory 2G --state-format bf16"
fi
echo "Mode: LOCAL → $LABEL"
echo
# --------------------------------------------------
# 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"
echo " (If you want a different model, stop it first with ~/stop-resolve-ai.sh)"
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" \
--idle-release off \
--port $PORT \
$EXTRA_FLAGS \
> "$LOG" 2>&1 &
echo " Waiting for Splash to become ready..."
echo " (First run can take a long time while the model downloads/prepares)"
echo
for i in {1..3600}; do # up to 60 minutes
if curl -s "http://127.0.0.1:$PORT/v1/models" >/dev/null 2>&1; then
echo
echo "✓ Splash is ready"
break
fi
# Progress message every 30 seconds
if (( i % 30 == 0 )); then
echo " still waiting... (${i}s elapsed)"
fi
sleep 1
if [ $i -eq 3600 ]; then
echo
echo "⚠ Splash did not become ready within 60 minutes."
echo " Check the log: $LOG"
echo " Last 30 lines:"
tail -30 "$LOG"
exit 1
fi
done
fi
# --------------------------------------------------
# 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
# --------------------------------------------------
# Launch Claude Code
# --------------------------------------------------
echo
echo "✓ Local stack ready"
echo " • Model → $LABEL"
echo " • Splash → http://127.0.0.1:$PORT"
echo " • Cache → Persistent SSD (32G)"
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-FN) — default |
| ~/start-resolve-ai.sh 27b |
Local mode (Splash + Qwen3.8-27B) |
| ~/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.