이전 글에서 L1(GitHub Runner)을 정리했습니다:git push 이후 감사 가능한 Fact(정의: Runner 편 · Stack 용어). 많은 팀은 같은 Cloud Mac 에 Claude Code를 넣고, 습관처럼 brew install ollama — 하면 본격 코딩은 여전히 100% Claude API, Ollama는 유휴 상태로 6–8GB 통합 메모리를 차지합니다.
이것은 "Ollama가 쓸모없다"가 아니라, 아직 답하지 못한 핵심 질문이 있습니다:왜 Inference가 단독 레이어여야 하는가, Claude Code에 흡수되지 않는가. 이 글은 Ollama 설치 대백과가 아니며, 다음도 반복하지 않습니다:16GB vs 24GB 실측 및 M4 vs GPU 클라우드 비용. 오직 L2의 존재 이유·경계, L3(Diff)와의 관계만 다룹니다(L3는 Claude Code 워크스테이션).
GitHub Runner가 "코드가 정말 검증을 통과했는가"를 푼다면, Ollama는 "어떤 Token을 자신의 Cloud Mac에서 추론해야 하는가"를 풉니다. 이 한 쌍을 기억하세요:Fact vs Inference.
Cloud Mac AI Stack · L2 한 줄
Runner는 실행 엔진; Ollama는 Inference Service; Claude Code는 코딩 Agent.
산출물은 Fact, Inference, Diff. L2 핵심은 모델이 아니라 추론을 장기 호출 가능한 Inference Service로 만드는 것(선택).
Stack에서 L2의 책임
L3는 "저장소를 어떻게 고칠까"; L1은 "고친 뒤 빌드·서명·배포 가능한가"; L2는 "어떤 추론 token이 macOS 노드를 떠나면 안 되는가". Claude 대체가 아니라 Cloud Mac에 겹치는 두 번째 추론 파이프라인.
L2 산출물: Inference란
Cloud Mac AI Stack에서는 도구 브랜드가 아니라 산출물로 계층을 나눕니다(전체 사슬은Runner 편 · Stack 용어):
기억 사슬 · 다섯 산출물(호출 순서 아님) Context → Inference → Diff → Fact → Workflow (MCP) (Ollama 등) (Claude Code) (Runner) (OpenHands) 5계층 도는 L0–L5 컴포넌트; 산출물 사슬은 Inference를 Context/Diff/Fact/Workflow와 나란히 두어 '횡단 패치' 느낌을 피함
여기서 Inference는 자신이 제어하는 macOS 프로세스 안에서의 모델 forward——prompt / embedding 입력, completion / 벡터 출력, 제3자 추론 API 미경유(또는 L3 주 경로만 API, L2에서 로컬 필수 token 처리)를 뜻합니다. Ollama는 가장 흔한 L2 구현이지만 유일하지 않습니다;Core ML 와 MLX도 일부 Inference를 맡지만, Ollama 모델 생태·운영 경로가 통일되어 L2 기본 서사에 맞습니다.
L2 형태: Inference Service이지, 가끔의 ollama run이 아님
Inference만으로는 "또 다른 로컬 모델 도구"로 읽히기 쉽습니다. Stack에서는 형태——각 계층의 장기 의존 가능한 시스템 역할——을 강조합니다:
| 계층 | 컴포넌트 | 형태 | 산출물 |
|---|---|---|---|
| L1 | GitHub Runner | Execution Engine(실행 엔진) | Fact |
| L2 | Ollama(등) | Inference Service(추론 서비스) | Inference |
| L3 | Claude Code | Agent(코딩 Agent) | Diff |
ollama run qwen3:8b와 ollama serve + 헬스체크 + cron 호출의 차이는 "SSH에서 수동 테스트"와 "Runner가 push를 기다림"의 차이와 비슷합니다:
ollama run → 사람이 터미널 앞에서 하는 일회성 추론(시험 실행과 유사) Inference Service → 11434 상주, 모델 pin, Runner / 스크립트 / Agent가 반복 호출
L2의 핵심은 모델이 아니라 추론을 장기 호출 가능한 Service로 만드는 것. 모델은 바꿀 수 있습니다; API·호출 주체·시프트·관측성이 Stack에서 고정할 대상입니다.
Inference를 L2로 독립시키는 이유(Claude Code 일부가 아님)
많은 개발자가 묻습니다:"Claude API도 추론 아닌가?" 맞습니다——하지만 Cloud Mac AI Stack은 산출물로 계층을 나누며 "신경망 유무"로 나누지 않습니다.
Claude Code의 책임은 Diff 생성——어떤 파일을 어떻게 고치고 PR에 어떤 patch인지. Inference의 책임은 Token 생성——임의 forward의 텍스트·벡터. Diff는 Token 용도 중 하나입니다.
같이 Inference이지만 "코딩 Agent" 주 경로에 넣지 않는 일:
- 로그 요약, 분류, 검토, 라우팅
- Embedding、RAG、rerank
- Agent 기억 정리, 지식베이스 정리
- 야간 배치, 정시 일보
따라서 관계는:
Claude Code ⊂ Inference 적용 시나리오 중 하나 이 아니라: Inference ⊂ Claude Code
L2를 독립시키는 것은 Ollama가 Claude보다 "더 하위"라서가 아니라 한 대의 Cloud Mac에 여러 추론 파이프라인이 있을 수 있기 때문입니다: L3는 API로 Diff; L2는 본기에서 프라이빗 Token; 병행하며 대체하지 않습니다. Inference를 Claude Code에 접으면 "Claude만 있으면 추론층 완성"으로 오해해 Ollama가 유휴합니다.
Ollama vs Claude Code: 이분법이 아닙니다
검색에 "Ollama vs Claude Code"가 많지만 Stack 맥락에서는 질문 방향이 다릅니다. 산출물이 다르고 대체 관계가 아닙니다.
| 관점 | Claude Code(L3) | Ollama(L2) |
|---|---|---|
| 산출물 | Diff | Inference |
| 형태 | Agent(온디맨드 코딩) | Inference Service(24/7 상주 가능) |
| 연산 경로 | 대부분 Claude API | 로컬(localhost:11434 등) |
| 전형 작업 | 코딩, 저장소 변경, patch 생성 | 요약, embedding, 분류, 야간 배치, 컴플라이언스 부가 작업 |
| 동작 방식 | 온디맨드: Agent를 열면 추론 시작; 떠나면 주 경로 일시정지 | 상주 가능: 프로세스 24/7, cron / sidecar 지속 호출 |
| Stack 내 | 주 경로(코드 변경) | 부가 작업·프라이빗 관로(L3보다 먼저 기동 불필요) |
실무 구호:코딩은 Claude Code; "어떤 token을 기밖으로보낼 수 없고 정시로 돌릴까"는 Ollama. L2-Q03 후속; 이 글은 "이분법이 아니다"만 고정합니다.
"모델 뜯어보기"와 "프라이빗 Inference 레이어"의 차이
같이 터미널에서 ollama run qwen3:8b를 돌려도, 두 가지 의도는 두 가지 아키텍처 결과입니다:
| 관점 | 모델 뜯어보기(개인 시험) | L2 · Inference Service |
|---|---|---|
| 목표 | prompt 시험, tok/s 비교, 스크린샷 | 고정 워크로드: 컴플라이언스 요약, 로그 분류, embedding, 야간 배치 |
| CI와의 관계 | 무관 | L1 Runner와 피크 분산 가능(낮 CI·밤 Inference), L0 메모리 예산 공유 |
| L3와의 관계 | 이분법: "로컬 vs Claude" | 병행: 코딩은 API, 부가 작업은 localhost:11434 |
| 성공 기준 | 모델이 응답함 | SLA: 지연 상한, 모델 pin, 실패 알림, token 기밖 유출 없음 |
| 머신 형태 | 노트북 덮으면 중지 | Cloud Mac 24/7: Inference Service와 Runner / Agent 동일 Stack에서 관측 |
한 줄:뜯어보기는 "돌아가나"; L2는 "무엇을·언제·누가 출력에 의존하나". 팀에 프라이빗 Inference가 필수인 워크로드가 없으면 L2 전체 스킵 가능——"완전 Stack" 때문에 억지로 Ollama를 넣지 마세요.
L2와 L1 / L3 역할 분담
세 계층이 가장 헷갈리는 경계:
| 계층 | 컴포넌트 | 산출 | 답하는 질문 |
|---|---|---|---|
| L1 | GitHub Runner | Fact | 이 커밋이 빌드·테스트·아카이브 가능한가? |
| L2 | Ollama(등) | Inference(Inference Service로 전달) | 어떤 추론을 본기에서 Runner / Agent가 반복 호출해야 하는가? |
| L3 | Claude Code | Diff(Agent 형태) | 저장소를 어떻게 고칠까?(대부분 Claude API) |
L2는 Diff도 Fact도 만들지 않습니다. PR을 자동으로 녹색으로 하거나 xcodebuild를 대체하지 않습니다. 전형 연결: Claude Code 수정 → Runner 검증 → 어떤 step·sidecar가 Ollama로로그 요약, 취약점 패턴, 프라이빗 embedding 벡터 DB 기록——출력은 Context(L4)나 사람 리뷰로 가며 "빌드 성공"과 동일하지 않습니다.
5계층 도의 L2: 계층 ≠ 호출 순서
전 시리즈 공통 5계층은 Runner 편 · 5계층 구조도. 도에서 Ollama가 Claude Code 아래는 책임상 Inference가 프라이빗 연산 토대를 뜻하며, 부팅 시 반드시 ollama serve 후 Claude Code가 아닙니다.
발췌 · 전체는 Runner 편
Claude Code L3 · Diff
↑ 병행, 비의존
Ollama L2 · Inference Service(선택)
↑
GitHub Runner L1 · Fact
↑
Cloud Mac L0 · 인프라
L2를 이해할 때:Claude API와 Ollama는 동시에 존재할 수 있습니다——전자는 코딩 주 경로 Diff, 후자는 본기 Inference. "로컬 모델이 Claude 대체" 서사와 다르며 Cloud Mac AI Stack과 "단일 All-in-One 채팅" 제품의 경계입니다.
컴플라이언스 외: L2의 상시 연산 가치
L2는 "금융·의료·대기업만"으로 쓰이지만, Cloud Mac 사용자 다수는 개인 개발자·AI 창업·소팀이라 컴플라이언스 티켓 없이도 L2가 필요할 수 있습니다.
핵심 차이는 일하는 방식:
Claude Code(L3)· 온디맨드 열기 → 추론 시작 닫기 → 주 경로 추론 종료 Ollama(L2)· 24/7 가능 프로세스 상주 → cron / sidecar 수시 호출 터미널 앞 여부와 무관
이 작업들은 Agent 대화·CI·일상 Coding이 아니지만 진짜 장기 Inference Service입니다. 예:
- Runner / 앱 로그 매시간 정리
- 매밤 embedding 재구축, 지식베이스 정리
- 일보·이상 분류·라우팅 초안 자동 생성
- Claude Code 오프라인에도 Context(L4) 데이터 갱신
노트북을 덮으면 멈춰 인프라로 보기 어렵습니다. L1과 피크 분산하면 낮 Fact·밤 Inference는 소팀에 "GPU 클라우드 추가"보다 현실적——전제는 L2를 Service로 운영하는 것, 가끔 터미널 시험이 아님.
로컬 Mac은 돌릴 수 있고, Cloud Mac은 운영할 수 있습니다
누군가 묻습니다:"집 Mac mini에도 brew install ollama 되는데 Cloud Mac?"——맞습니다. 로컬 Mac = 돌릴 수 있음; 차이는 인프라로 운영할 수 있나입니다.
| 관점 | 로컬 Mac / 노트북 | Cloud Mac(L0) |
|---|---|---|
| 가용성 | 덮개·슬립·출장 시 중지 | 24/7 상주, 고정 egress |
| Stack과의 관계 | Ollama는 단일 고립점인 경우 많음 | Runner·Claude Code와 동일 기기에서 관측·피크 분산 |
| L2 형태 | 대부분 ollama run 시험 |
Inference Service: 헬스체크, 모델 pin, sidecar / cron 호출 |
| 의존 주체 | 보통 본인만 | CI, Agent, 정시 작업, 팀 스크립트 |
Ollama는 Cloud Mac 때문에 있는 것이 아닙니다; Cloud Mac의 가치는 Ollama를 터미널 명령에서 24/7 관측·시프트·Runner·Agent 공유 Inference Service로 만드는 것. 그렇지 않으면 "Ollama 글"로 보이고 프라이빗 Inference를 Cloud Mac AI Stack에 올리는 이유가 전달되지 않습니다.
선정과 L0 경계는 Cloud Mac vs 로컬 Mac AI 워크스테이션; 이 글은 렌탈 사양을 반복하지 않고 고정합니다:Stack 서사에서 L2는 "운영 가능한" 노드에 둔다.
L2에 올릴 워크로드
Ollama를 L2 인프라(시험 이상)로 보는 신호:
- 컴플라이언스 / 에어갭——코드·로그는 Cloud Mac으로, 추론 요청은 공용 API 불가; L2에서 비식별 후 분류·요약·PII 탐지.
- Embedding / rerank——CodeGraph 또는 RAG가 안정·pin 가능한 로컬 벡터 모델을 필요로 할 때, API embedding 비용·데이터 경로 비통제 회피.
- 고빈도·소형 모델·배치——예: 매밤 CI 로그 분류; 7B–14B 양자화는 Apple Silicon으로 충분(대조고정 노드 vs 시간제 GPU).
- L3와 피크 분산——낮 Claude Code + Runner가 메모리 점유; 밤
ollama run배치, 24GB를 종일 풀 부하로 두지 않음. - 멀티 Agent "빠른 경로"——복잡한 변경은 Claude; 분류·라우트·초안은 로컬 8B로 API token 절감(OpenHuman 노트).
반대로,iOS 납품만·코딩은 Claude API만·정시 로컬 추론 없음이면 L2 우선순위는 L1 Runner보다 낮음——먼저 push에 Fact, 그다음 프라이빗 Inference.
읽는 순서: Runner → Ollama → Claude Code
Stack 시리즈를 읽는다면 산출물 순서 권장:
- L1 · Fact — GitHub Runner 실행 엔진:
push후 정말 빌드·테스트·배포 가능한가. - L2 · Inference Service — 이 글: 어떤 Token을 Cloud Mac에 남기고 서비스로 호출할까.
- L3 · Diff — Claude Code 워크스테이션: 저장소를 어떻게 고칠까(대부분 API).
기반·선정:Cloud Mac vs 로컬 Mac AI 워크스테이션. Context(L4)·CodeGraph는 후속에서 Inference 출력에 연결.
전형적 오해: Ollama는 깔았는데 Stack은 API뿐
- Cloud Mac에서
brew install ollama, 모델 둘, 팀이 "AI 스택 완성" 축하. - 일상은 100% Claude Code + Anthropic API; Ollama는 일주일간 스크립트·Agent 미호출.
- 메모리는 미사용 모델 점유; Claude Code·Runner가 남은 통합 메모리 경쟁, Swap 상승(16GB vs 24GB 글).
- 책임자: "왜 Cloud Mac?"——L0는 머신뿐, L2 워크로드 미정의.
수정은 GUI 추가가 아니라 L2 필수 pipeline 1–2개 지정(예: CI 실패 로그 요약만 Ollama; embedding만 nomic-embed-text)·모델 pin·11434 헬스체크. 병행 scheduling은 L2-Q03 · 메모리 scheduling.
L2를 건너뛸 수 있는 팀
| L2 세울 때(Cloud Mac Ollama) | 우선 L2 스킵 |
|---|---|
| 추론 기밖 불가·에어갭 부가 작업 | 코딩·리뷰 전부 Claude API로 충분 |
| 자체 RAG / CodeGraph 로컬 embedding | 벡터 인덱스·로컬 배치 없음 |
| 7B–14B 고빈도 소작업으로 API 비용 절감 | 가끔 채팅으로 모델 시험 |
| L1과 메모리 피크 분산(낮 CI / 밤 Inference) | Claude Code만, Runner·파이프라인 없음 |
| 개인·소팀 24/7 로그·embedding·일보 추론 | 정시/sidecar가 본기 모델 미호출 |
기존 실측 글과의 관계(이 글은 반복하지 않음)
저장소에 "Ollama 관련" 장문이 있으며 역할은 다음과 같습니다:
- L2-Q02 · 16GB vs 24GB——메모리·Swap 실측; "어떤 기종"이지 "Stack 어느 계층"이 아님.
- L2-Q04 · M4 vs GPU 클라우드——청구·규모 경계; 이 글은 가격 비교 안 함.
- L2-Q05 · Core ML——Apple 네이티브 추론; Ollama와 공존, 다른 런타임.
- L3 · Claude Code 워크스테이션——코딩 경험; 이 글은 L2에서 API 코딩·로컬 Inference 병행 보완.
도입 순서: Fact 다음 Inference
Runner 편 · 연결 순서과 같이 권장:
- L0——Cloud Mac 상주 macOS.
- L1——Runner,
push → 녹/적재현 가능하게. - L2——Ollama는 정의된 프라이빗 Inference 관로만(이 글).
- L3–L5——Claude Code, MCP, OpenHands. Fact +(선택)Inference 안정 후 확장.
L2를 먼저 쌓고 L1을 미루면 로컬 요약은 도는데xcodebuild 는 Linux에서 실패——Inference는 Fact를 대체하지 않음.
L2 시리즈
이 글은 L2 기반(위치·경계). 같은 주제 후속:
| 편 | 주제 | 상태 |
|---|---|---|
| ① · 이 글 | Ollama를 프라이빗 Inference 레이어로 | 게시됨 |
| ② · 게시됨 | Mac mini AI Workload Scheduling: Ollama + Claude Code + GitHub Runner Swap 방지 | 게시됨 |
| ③ | 모델 pin, 헬스체크, CI에서 Ollama 호출 | 예정 |
5계층 책임 총도는 Cloud Mac AI Stack 5계층 구조도.
자주 묻는 질문
Claude API도 추론인데 왜 Inference를 별도 레이어로?
Claude Code는 Diff; L2는 Token(요약, embedding, 배치 등). Claude Code ⊂ Inference 적용, 그 반대 아님.
Ollama와 Claude Code 이분법?
아닙니다. 코딩은 L3 API; 본기·정시 추론은 L2. 위 비교표.
Claude Code 전에 Ollama 필수?
아닙니다. L2 선택, L3 병행.
컴플라이언스 없어도 L2?
24/7 추론(로그, embedding, 일보)이면 개인·소팀도 L2 가치; 가끔 시험만 스킵.
로컬 Mac mini에 Ollama 있는데 Cloud Mac?
로컬은 돌릴 수 있음; Cloud Mac은 운영 Inference Service——24/7, Runner/Agent 동일 Stack. 로컬 vs Cloud Mac.
Ollama와 Runner 순서?
먼저 L1, 다음 L2. 도의 상하는 책임 계층, 기동 순서 아님.
이 글과 16GB vs 24GB 차이?
이 글은 Stack 위치; 메모리 실측 16GB vs 24GB 글, 비용 M4 vs GPU 클라우드 글.
L2 시리즈 · 후속
Mac mini AI Workload Scheduling: Ollama + Claude Code + GitHub Runner Swap 방지
L2-Q03 · 메모리 Scheduling 레이어: Swap·CI 지연 scheduling 해법. 30초 Runbook 포함.
L2-Q03 · AI Workload Scheduling 읽기