Ollama + Claude Code: локально не означає офлайн
`ollama launch claude` підключає Claude Code до локальної моделі (Anthropic API з v0.14). Але це не повна ізоляція: телеметрія і `/feedback` (шле історію діалогу) ідуть на сервери Anthropic, якщо не вимкнути трафік прапорцем. А WebFetch завжди шле hostname на `api.anthropic.com`, і цей трафік прапорець не зупиняє — потрібен ще `skipWebFetchPreflight: true` в конфігу.
Технічно теж тісно: потрібен контекст 64k+ (інструменти Claude Code займають ~11 000 токенів), а gemma3:4b та інші дрібні моделі просто не підтримують tool calling.
Підключення в одну команду
`ollama launch claude` — найкоротший шлях: одна команда, і Claude Code вже дивиться на локальну модель. Якщо хочете налаштувати вручну, потрібні три змінні середовища: `ANTHROPIC_BASE_URL=http://localhost:11434`, `ANTHROPIC_AUTH_TOKEN=ollama`, `ANTHROPIC_API_KEY=""` (порожній рядок). Після цього запуск звичний — `claude --model model_name`.
На цьому етапі все виглядає як повна локальна робота. Але бінарник Claude Code робить і інші запити, окрім звернень до моделі, і саме тут починаються нюанси.
Що насправді йде на сервери Anthropic
Телеметрія (затримки, надійність) увімкнена за замовчуванням при роботі з Claude API; вимикається `DISABLE_TELEMETRY=1`. За документацією, ці метрики не містять коду, промптів чи шляхів до файлів.
Звіти про помилки активуються за умовами: вхід через Pro/Max, версія від 2.1.198 і пряме підключення до Claude API — вимикаються `DISABLE_ERROR_REPORTING=1`. Команда `/feedback` надсилає Anthropic всю історію діалогу разом із кодом — її блокує `DISABLE_FEEDBACK_COMMAND=1`. Усе одразу вимикає `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`.
Окремо стоїть WebFetch: перед завантаженням сторінки він надсилає на `api.anthropic.com` лише hostname для перевірки безпеки — незалежно від провайдера моделі і без зупинки прапорцем вище. Вимкнути можна тільки через `skipWebFetchPreflight: true` у конфігу. Надсилається саме hostname, не повна URL чи вміст, але факт лишається: «повністю офлайн» це вже не назвеш.
Порядок пошуку причини, коли не працює
- Контекст замалий — Ollama рекомендує 64k+ для великих репозиторіїв; за оцінкою Classmethod, самі інструментарні визначення Claude Code займають приблизно 11 000 токенів. Розширити можна через Modelfile параметром `PARAMETER num_ctx 65536`.
- Модель не підтримує tool calling — у тій же перевірці gemma3:4b видала помилку «does not support tools»: без tool calls Claude Code не може редагувати файли й запускати команди.
- Модель замала — 8B обрізала JSX навіть після 34 секунд, 14B віддавала tool calls як сирий JSON-текст; автор перевірки назвав це «непрактичним на даний момент». Тест робили на v0.15 на початку 2026, тож результати могли змінитися.
- Зависання лише в інтерактивному режимі — GitHub issue #51239 для Claude Code 2.1.114 + Ollama 0.21: `claude -p "…"` відпрацьовує нормально, а інтерактивний режим зупиняється після першого виклику інструменту (логи Ollama показують розрив з'єднання клієнтом). Issue закрили як «not planned» 31 травня 2026 і заблокували 2 серпня — чекати на фікс не варто, першим кроком діагностики лишається режим `-p`.
Кому це підходить
Для власного коду чи публічного репозиторію — варто пробувати, але якість відрізняється від хмарного Claude. Для машини з приблизно 16 ГБ пам'яті джерела називають орієнтиром модель Qwen 3.5 9B.
Для контрактних проєктів умови інші: якщо договір забороняє передавати код третім сторонам чи зовнішнім сервісам, потрібно вміти пояснити, що саме йде по мережі — і навіть з усіма прапорцями передача hostname через WebFetch лишається. Якщо впевненості в поясненні немає, безпечніше спершу узгодити з клієнтом.
Уникати варто production-рев'ю, де якість критична, і ситуацій, коли немає часу розбиратися з налаштуваннями контексту й сумісності моделей.