맥 스튜디오를 활용하여 OpenClaw Gateway를 중심으로 Telegram/Slack 채널을 운영하고, 기본 모델은 Ollama 로컬 모델로 쓰며, 필요할 때만 OpenAI 또는 Gemini를 fallback으로 붙이는 구성을 목표로 상세하게 설치 방법을 작성해 보았습니다.
기본 운영방침은 무료 LLM 을 운영한다이고, 부득이 꼭 필요한 경우 유료토큰을 활용한 확장을 도모한다입니다.
개념 요약
구성의 핵심은 채널 서비스와 모델 엔진을 분리하는 것이다.
Telegram/Slack 메시지는 OpenClaw Gateway가 받고, 실제 응답 생성은 Ollama의 로컬 (무료)모델이 맡으며, 로컬 모델이 부족한 경우에만 유료모델의 OpenAI 또는 Gemini를 fallback으로 호출한다.
준비 사항
• 맥 스튜디오 M4 Max 64GB / SSD 1TB, 관리자 계정 로그인 완료.
• 인터넷 연결, 터미널 사용 가능 상태.
• Telegram Bot Token, Slack 앱 토큰/서명 키 등 채널 정보 준비.
• OpenAI API Key 또는 Gemini API Key 중 최소 1개 준비.
• macOS에서 Homebrew 사용 가능 상태.
• 슬랙은 https://api.slack.com/apps 에서 앱을 From scratch 유형으로 생성하여 진행합니다.
핵심은 봇생성, 워크스페이스 생성, 권한부여(중요) 과정을 거치고 생성된 앱토큰과, 채널토큰을 확보하면됩니다.
상세한 구성 방법은 별도로 검색하시면 잘 정리된 문서가 많으니 참고하시면 좋을 것 같습니다.
• 텔레그램은 비교적 봇 생성과 설정 방법이 간단해서 따로 토큰확보과정을 검색하신 후 미리 준비하시면 좋을 것 같습니다.
• 저는 추가로 웹서치 기능을 별도로 추가했습니다. 보안상 브라우저를 직접 컨트럴해서 검색하는 방법이 아니고, 웹사이트를 API형태로 읽어 정보를 취득하는 방식입니다. 무료 환경에서 최신정보를 최대한 확보하기위해 꼭 필요한 기능으로 생각되는 부분입니다. 그래서 저는 웹서치 API (brave search API) 에 계정을 등록하고 트래픽을 무료범위내에서 사용한다는 조건으로 구성합니다. 처음 가입시 신용카드 1달러 결제로 진위여부만 확인하는 방식입니다.
https://api-dashboard.search.brave.com/
권장 모델 구성
맥 스튜디오 M4 Max 64GB는 14B급을 기본 주력으로, 32B급을 고급 작업용으로 쓰기 좋은 스펙이다.
일반 정보 탐색은 14B instruct 계열, 코딩은 14B coder 계열, 긴 추론이나 더 복잡한 작업은 32B급 모델로 분리하는 구성이 균형이 좋다.

전체 설치 순서
1. macOS 기본 업데이트 및 Homebrew 설치.
2. Ollama 설치 및 모델 다운로드.
3. OpenClaw 설치 및 설정 파일 준비.
4. 환경변수 파일 작성, API 키 등록.
5. Gateway 실행 및 Telegram/Slack 연결 확인.
6. 서비스 자동 시작(LaunchAgent) 점검.
7. 기본 모델, coder 모델, fallback 동작 테스트.
1) macOS 기본 준비
먼저 터미널을 열고 시스템 버전과 기본 도구 상태를 확인한다.
sw_vers
uname -m
xcode-select -p || xcode-select --install
Homebrew가 없다면 설치한다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
설치 후 셸 환경을 반영한다.
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
brew --version
2) 작업 폴더 준비
OpenClaw와 환경변수, 로그 관리를 위해 전용 폴더를 만든다.
mkdir -p ~/workspace/openclaw
mkdir -p ~/workspace/openclaw/logs
mkdir -p ~/.openclaw
cd ~/workspace/openclaw
pwd
3) Ollama 설치
Ollama는 맥에서 로컬 LLM을 가장 간단하게 운영할 수 있는 방법 중 하나다.
brew install ollama
ollama --version
Ollama 서버를 실행한다.
ollama serve
처음에는 이 터미널을 켜 둔 채로 두고, 새 터미널 탭을 열어 다음 작업을 진행한다.
별도 탭에서 서버 상태를 확인한다.
curl http://127.0.0.1:11434/api/tags
4) 로컬 모델 다운로드
처음에는 아래 3개 구성이 가장 실용적이다.
• 일반 채팅용 14B
• 코딩용 14B
• 고급 추론용 32B
예시 명령은 아래처럼 진행한다. 실제 Ollama 라이브러리 모델명은 시점에 따라 달라질 수 있으므로 ollama search 또는 공식 라이브러리 이름을 확인해 맞춘다.
ollama pull qwen2.5:14b-instruct
ollama pull qwen2.5-coder:14b
ollama pull qwen2.5:32b
모델 목록을 확인한다.
ollama list
간단히 직접 테스트한다.
ollama run qwen2.5:14b-instruct "대한민국의 수도는 어디야?"
ollama run qwen2.5-coder:14b "SwiftUI에서 버튼 예제를 보여줘"
5) OpenClaw 설치
OpenClaw 설치 방식은 버전에 따라 차이가 있을 수 있으므로, 현재 배포 경로 기준으로 설치한다.
일반적으로는 npm 또는 공식 설치 스크립트를 이용하는 경우가 많다.
먼저 Node 환경을 준비한다.
brew install node
node -v
npm -v
그 다음 OpenClaw CLI를 설치한다. 설치 방식이 버전에 따라 다를 수 있으므로, 공식 문서에서 안내하는 명령을 우선 적용한다.
예시:
npm install -g openclaw
openclaw --version
만약 위 방식이 설치되지 않으면, 사용 중인 배포 문서에 적힌 설치 명령으로 대체한다.
6) 환경변수 파일 작성
API 키를 JSON에 직접 박아 넣기보다는 환경변수로 분리하는 편이 안전하다.
cat > ~/.openclaw/.env <<'ENVEOF'
OPENAI_API_KEY=여기에_openai_api_key
GEMINI_API_KEY=여기에_gemini_api_key
ENVEOF
chmod 600 ~/.openclaw/.env
현재 셸에서 먼저 불러온다.
set -a
source ~/.openclaw/.env
set +a
확인한다.
echo "$OPENAI_API_KEY" | wc -c
echo "$GEMINI_API_KEY" | wc -c
문자열이 0보다 크면 읽힌 것이다. 키 전체를 화면에 출력하지 않는 것이 좋다.
7) 기본 설정 파일 만들기
OpenClaw의 실제 설정 키 이름은 버전에 따라 조금 다를 수 있지만, 아래 구조처럼 provider, models, agents, channels를 분리하면 관리가 쉽다.
cat > ~/.openclaw/openclaw.json <<'JSONEOF'
{
"gateway": {
"mode": "local",
"port": 18789
},
"channels": {
"telegram": {
"enabled": true
},
"slack": {
"enabled": true
}
},
"providers": {
"ollama": {
"type": "ollama",
"baseUrl": "http://127.0.0.1:11434"
},
"openai": {
"type": "openai",
"apiKey": "${OPENAI_API_KEY}"
},
"gemini": {
"type": "openai-compatible",
"baseUrl": "https://generativelanguage.googleapis.com/v1beta/openai/",
"apiKey": "${GEMINI_API_KEY}"
}
},
"models": {
"chat_local": {
"provider": "ollama",
"model": "qwen2.5:14b-instruct"
},
"code_local": {
"provider": "ollama",
"model": "qwen2.5-coder:14b"
},
"deep_local": {
"provider": "ollama",
"model": "qwen2.5:32b"
},
"fallback_openai": {
"provider": "openai",
"model": "gpt-4.1-mini"
},
"fallback_gemini": {
"provider": "gemini",
"model": "gemini-2.5-flash"
}
},
"agents": {
"default": {
"model": {
"primary": "chat_local",
"fallbacks": ["fallback_gemini"]
}
},
"coder": {
"model": {
"primary": "code_local",
"fallbacks": ["fallback_openai"]
}
},
"deep": {
"model": {
"primary": "deep_local",
"fallbacks": ["fallback_openai"]
}
}
}
}
JSONEOF
파일 내용을 확인한다.
cat ~/.openclaw/openclaw.json
8) Telegram / Slack 채널값 반영
이미 채널 연동을 해 둔 상태라면, 기존에 쓰던 토큰과 시크릿을 동일한 설정 파일 또는 채널 전용 설정에 반영하면 된다.
일반적으로 Telegram은 Bot Token과 chat ID, Slack은 bot token, signing secret, app-level token 또는 이벤트 설정이 필요하다.
예시로 환경변수에 추가하는 방식은 아래와 같다.
cat >> ~/.openclaw/.env <<'ENVEOF'
TELEGRAM_BOT_TOKEN=여기에_텔레그램_토큰
SLACK_BOT_TOKEN=여기에_슬랙_봇_토큰
SLACK_SIGNING_SECRET=여기에_슬랙_시크릿
SLACK_APP_TOKEN=여기에_슬랙_앱_토큰
ENVEOF
chmod 600 ~/.openclaw/.env
set -a
source ~/.openclaw/.env
set +a
OpenClaw 버전에 따라 채널 설정이 JSON 내부에 직접 들어가거나, 별도 채널 설정 명령으로 등록될 수 있다. 현재 쓰는 버전에서 이미 Telegram/Slack이 동작했던 구조를 그대로 가져오는 것이 가장 안전하다.
9) OpenClaw Gateway 수동 실행
먼저 수동 실행으로 정상 여부를 보는 것이 좋다.
set -a
source ~/.openclaw/.env
set +a
openclaw gateway start
버전에 따라 아래처럼 직접 foreground로 띄우는 명령이 필요할 수도 있다.
openclaw gateway
또는 프로필 방식이라면:
OPENCLAW_PROFILE=default openclaw gateway
정상 기동 여부를 확인한다.
curl http://127.0.0.1:18789/health || true
ps aux | grep openclaw | grep -v grep
10) 채널 동작 테스트
게이트웨이가 뜬 상태에서 Telegram, Slack에 각각 테스트 메시지를 보내 본다.
메시지가 로컬 모델로 처리되는지, 응답이 아예 없는지, fallback으로 넘어가는지 로그를 함께 본다.
로그를 파일로 남기려면 아래처럼 실행할 수 있다.
set -a
source ~/.openclaw/.env
set +a
openclaw gateway 2>&1 | tee ~/workspace/openclaw/logs/gateway.log
다른 터미널에서 로그를 본다.
tail -f ~/workspace/openclaw/logs/gateway.log
11) 자동 실행(LaunchAgent) 구성
macOS에서 OpenClaw Gateway는 launchd 기반 LaunchAgent로 관리되는 경우가 많다.
공식 문서 기준으로 앱 또는 CLI가 ai.openclaw.gateway 라벨의 per-user LaunchAgent를 설치해 자동 시작을 담당한다.
설치 명령이 제공되는 경우 먼저 사용한다.
openclaw gateway install
문제 발생 시 강제로 다시 설치한다.
openclaw gateway install --force
현재 로드 상태를 확인한다.
launchctl list | grep openclaw
ls ~/Library/LaunchAgents | grep openclaw
LaunchAgent가 설치되었는데 동작이 이상하면 kickstart를 시도한다.
launchctl kickstart -k gui/$(id -u)/ai.openclaw.gateway
12) 서비스 시작 / 중지 / 재시작 매뉴얼
macOS의 OpenClaw Gateway는 버전에 따라 stop/start 가 LaunchAgent 등록 자체를 꼬이게 할 수 있다는 보고가 있어, 운영 초기에는 너무 자주 섞어 쓰지 않는 편이 안전하다.
가장 안전한 기본 패턴
시작
set -a
source ~/.openclaw/.env
set +a
openclaw gateway start
상태 확인
launchctl list | grep openclaw
ps aux | grep openclaw | grep -v grep
중지
openclaw gateway stop
재시작이 꼬일 때
openclaw gateway install --force
launchctl kickstart -k gui/$(id -u)/ai.openclaw.gateway
완전 수동 모드로 점검할 때
pkill -f openclaw || true
set -a
source ~/.openclaw/.env
set +a
openclaw gateway
13) Ollama 자동 실행
처음에는 수동으로 ollama serve 를 실행해도 되지만, 실사용 단계에서는 로그인 후 자동 실행이 편하다.
macOS 앱 버전은 백그라운드 실행을 지원하고, CLI만 사용할 경우 별도 LaunchAgent를 직접 만들 수도 있다.
가장 단순한 초기 운영 방식은 다음과 같다.
• Ollama 앱 또는 ollama serve 를 로그인 후 켠다.
• OpenClaw Gateway를 실행한다.
• 두 프로세스가 모두 살아 있어야 Telegram/Slack 응답이 정상이다.
14) 모델별 점검 순서
각 모델은 따로 먼저 확인하는 편이 좋다.
채팅 모델 확인
curl http://127.0.0.1:11434/api/generate \
-d '{
"model": "qwen2.5:14b-instruct",
"prompt": "한국의 수도는 어디인가? 한 줄로 답해줘."
}'
코딩 모델 확인
curl http://127.0.0.1:11434/api/generate \
-d '{
"model": "qwen2.5-coder:14b",
"prompt": "Kotlin으로 Retrofit 기본 예제를 작성해줘."
}'
고급 모델 확인
curl http://127.0.0.1:11434/api/generate \
-d '{
"model": "qwen2.5:32b",
"prompt": "SwiftUI 앱 구조를 MVVM 기준으로 설명해줘."
}'
15) Fallback 동작 확인
일반적으로 fallback은 로컬 모델 실패, 타임아웃, 혹은 정책 기반 라우팅에서만 쓰는 것이 비용 관리에 유리하다.
코딩 fallback은 OpenAI 쪽이 도구 호출과 JSON 호환성이 더 안정적일 수 있고, 일반 질의 fallback은 Gemini도 충분히 유용할 수 있다.
테스트 방법은 다음 흐름이 좋다.
1. 로컬 모델을 정상 상태로 두고 응답 확인.
2. 일시적으로 로컬 모델명을 틀리게 바꾸거나 Ollama를 중지.
3. 같은 질문을 보내 fallback으로 넘어가는지 로그 확인.
예를 들어 Ollama를 잠깐 중지한 뒤, Telegram에서 질문을 보내고 게이트웨이 로그에 OpenAI 또는 Gemini provider 호출 흔적이 보이는지 확인한다.
16) 실전 추천 운영 정책
맥 스튜디오 M4 Max 64GB에서는 아래처럼 운용하는 것이 현실적이다.
• 기본 일반 채팅: 14B instruct.
• 기본 코딩: 14B coder.
• 어려운 작업: 32B 모델을 별도 agent 또는 명시적 호출로 사용.
• fallback: OpenAI 또는 Gemini 1개만 우선 등록.
이렇게 하면 대부분의 메시지는 로컬에서 처리되고, 외부 과금은 꼭 필요한 경우에만 발생한다.
17) 자주 쓰는 운영 명령 모음
Ollama
ollama serve
ollama list
ollama ps
ollama pull qwen2.5:14b-instruct
ollama pull qwen2.5-coder:14b
ollama pull qwen2.5:32b
ollama run qwen2.5:14b-instruct
OpenClaw
openclaw --version
openclaw gateway start
openclaw gateway stop
openclaw gateway install
openclaw gateway install --force
openclaw gateway
macOS LaunchAgent 확인
launchctl list | grep openclaw
launchctl kickstart -k gui/$(id -u)/ai.openclaw.gateway
ls ~/Library/LaunchAgents | grep openclaw
로그 확인
tail -f ~/workspace/openclaw/logs/gateway.log
18) 문제 발생 시 우선 점검
• curl http://127.0.0.1:11434/api/tags 가 응답하는지 확인한다.
• openclaw gateway 수동 실행은 되는데 자동 실행만 안 되면 LaunchAgent 환경변수 전달 문제를 의심한다.
• 재부팅 후 401이 뜨면 API 키가 데몬 환경으로 전달되지 않았을 수 있다.
• Telegram이 안 되면 다른 프로그램이 같은 bot token을 쓰고 있지 않은지 확인한다.
• Slack이 안 되면 이벤트 구독 URL과 signing secret 설정을 다시 확인한다.
• stop/start 반복 후 서비스가 사라지면 openclaw gateway install --force 후 launchctl kickstart -k ... 로 복구한다.
19) 처음 설치할 때의 권장 진행 루트
처음부터 자동 시작까지 한 번에 가지 말고, 아래 순서로 가는 것이 안전하다.
1. Homebrew 설치.
2. Ollama 설치 및 모델 pull.
3. 터미널에서 모델 단독 테스트.
4. OpenClaw 설치.
5. openclaw gateway 수동 실행으로 채널 테스트.
6. 정상 동작 확인 후 LaunchAgent 등록.
7. 재로그인/재부팅 테스트.
이 순서로 하면 문제 위치를 빠르게 분리할 수 있다.
이제 본격적으로 작업을 진행해볼까요?

'개발관련 정보 > AI + AI로봇' 카테고리의 다른 글
| AI에 대한 생각 - AI의 한계 (0) | 2026.03.17 |
|---|