2024년 12월, 로컬 AI를 직접 경험해 보고 싶어서 RAM 64GB 옵션의 M4 Pro Mac mini를 구매했습니다.
2026년 9월 현재 반도체 가격 상승세를 보면, 다시는 이 가격에 구하기 힘들지 않을까 싶습니다.😢

그동안 다양한 프로그램들(llama.cpp, oMLX, Unsloth Studio, mlx-dspark)과 모델을 직접 사용해 보며 정리한, 실사용에 가장 만족스러웠던 최적의 설정값을 공유하고 기록해 두고자 이 글을 작성하게 되었습니다.
mlx-dspark 설치
mlx-dspark는 DeepSeek에서 공개한 추측 디코딩(Speculative Decoding) 프레임워크인 DSpark를 Apple Silicon 전용 MLX 프레임워크와 결합해 최적화한 프로그램입니다.
MLX란?
Apple M1~M4 등 Apple Silicon 환경에서 머신러닝 연산을 효율적으로 처리하도록 돕는 프레임워크입니다. NVIDIA 환경의 CUDA처럼 GPU 자원을 적극적으로 활용할 수 있게 해줍니다.
mlx-dspark의 README.md (The Mac App)을 참고해 설치할 수 있습니다.
brew 명령어를 사용하므로 Homebrew가 미리 설치되어 있어야 합니다.
brew tap ARahim3/mlx-dspark https://github.com/ARahim3/mlx-dspark
brew trust arahim3/mlx-dspark
brew install --cask mlx-dspark
xattr -dr com.apple.quarantine /Applications/mlx-dspark.app
설치가 완료되면 mlx-dspark 앱이 생성됩니다.

mlx-dspark를 실행하면 아래 화면과 같이 초기 환경 설정을 자동으로 시작합니다.

잠시 후 모델 선택 화면이 나오면 Qwen3.6-35B-A3B-4bit를 선택합니다.
다른 모델을 선택해도 문제없지만, 목록 중 생성이 빠르면서도 답변 퀄리티가 가장 뛰어났던 모델이었기 때문에 권장합니다.

모델 다운로드 및 로드가 완료되면 아래와 같은 실행 화면이 표시됩니다.

Claude Code 설치 및 설정
터미널에서 아래 명령어를 실행하여 Claude Code를 설치합니다.
curl -fsSL https://claude.ai/install.sh | bash
설치가 완료되면 mlx-dspark claude --url http://127.0.0.1:8484 명령어를 통해 바로 Claude Code를 터미널에서 사용할 수 있습니다.
만약 Visual Studio Code 환경에서 연동하여 사용하고 싶다면 아래 추가 설정을 진행해 주세요.
1. Claude Code 설정 파일 수정
Base URL과 기본 모델을 지정하기 위해 ~/.claude/settings.json 파일에 아래 내용을 작성합니다.
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:8484",
"ANTHROPIC_AUTH_TOKEN": "If you have set an API Key, please fill it in.",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "Qwen3.6-35B-A3B-Dspark-v1",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "Qwen3.6-35B-A3B-Dspark-v1",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "Qwen3.6-35B-A3B-Dspark-v1",
"API_TIMEOUT_MS": "3000000",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
},
"permissions": {
"deny": [
"LSP"
]
},
"model": "opus",
"theme": "dark"
}~/.claude/settings.json
2. VS Code 환경 변수 설정
~/.claude/settings.json에 CLAUDE_CODE_AUTO_COMPACT_WINDOW나 CLAUDE_AUTOCOMPACT_PCT_OVERRIDE를 설정하더라도 VS Code 확장 프로그램에서는 정상 적용되지 않는 이슈가 있습니다. VS Code 연동 시 Context 크기와 Auto Compact 동작을 원활하게 제어하려면 아래 단계를 진행해야 합니다.
- VS Code에서 설정(Settings) → 확장(Extensions) → Claude Code → Environment Variables로 이동한 뒤 ‘settings.json에서 편집’을 클릭합니다.

claudeCode.environmentVariables배열에 아래와 같이 환경 변수를 추가합니다.
"claudeCode.environmentVariables": [
{
"name": "CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY",
"value": "1"
},
{
"name": "CLAUDE_CODE_AUTO_MODE_SERVER",
"value": "0"
},
{
"name": "CLAUDE_CODE_DISABLE_ADVISOR_TOOL",
"value": "1"
},
{
"name": "CLAUDE_CODE_AUTO_COMPACT_WINDOW",
"value": "128000"
},
{
"name": "DISABLE_AUTOUPDATER",
"value": "1"
},
{
"name": "DISABLE_FEEDBACK_COMMAND",
"value": "1"
},
{
"name": "DISABLE_ERROR_REPORTING",
"value": "1"
},
{
"name": "CLAUDE_CODE_MAX_CONTEXT_TOKENS",
"value": "100000"
},
{
"name": "CLAUDE_CODE_MAX_OUTPUT_TOKENS",
"value": "8192"
},
{
"name": "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE",
"value": "50"
},
{
"name": "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC",
"value": "1"
}
]
이제 VS Code 내에서 로컬 모델 기반의 Claude Code를 원활하게 사용할 수 있습니다.

가장 빠르게 동작할 때는 80 ~ 90 tok/s 수준의 생성 속도를 보여주며, 컨텍스트가 길어져 속도가 떨어지더라도 최소 30 tok/s 이상을 일정하게 유지합니다. 개인 프로젝트나 코드 작성 용도로 활용하기에 충분한 성능이라고 판단됩니다.

Performance Monitoring Script
http://localhost:8484/metrics를 통해 다양한 실시간 성능 지표 데이터를 얻을 수 있습니다.
PP(Prompt Processing)와 TG(Token Generation) 속도를 계산해 한눈에 확인하고 싶다면 아래 스크립트를 활용해 보세요.
#!/bin/sh
RESPONSE=$(curl -s http://localhost:8484/metrics)
if [ -z "$RESPONSE" ]; then
echo "Error: Failed to fetch data."
exit 1
fi
echo "$RESPONSE" | jq -r '
.prompt_tokens as $pt |
.completion_tokens as $ct |
.mean_tokens_per_sec as $m_tps |
.mean_decode_tokens_per_sec as $tg |
(.prefix_cache.cached_tokens // 0) as $pc |
# Calculate Cache Efficiency
(($pt + $pc) as$total_p | if $total_p > 0 then ($pc / $total_p * 100) else 0 end) as$cache_eff |
# Calculate Prompt Processing
(if $m_tps > 0 then ($ct / $m_tps) else 0 end) as$total_time |
(if $tg > 0 then ($ct / $tg) else 0 end) as$decode_time |
($total_time - $decode_time) as$prompt_time |
(if $prompt_time > 0 then ($pt / $prompt_time) else 0 end) as$pp |
# Definition of a function to round to two decimal places
def to_2f: . * 100 | round / 100;
# Print Results
"Cache Efficiency : \($cache_eff | to_2f)%\n" +
"Prompt Processing (excl. cached): \($pp | to_2f) tok/s\n" +
"Token Generation : \($tg | to_2f) tok/s"
'mlx-dspark-metrics.sh