# Navi Code — локальный терминальный режим

Navi Code — это вариант Navi для локального запуска через терминал. Без авторизации, с выделенным профилем `navi_code`, ориентированным на работу с кодом, shell и файловой системой.

## Что входит

- Профиль `navi_code` (терминальный кодинг-ассистент).
- Механизм дефолтного профиля через `NAVI_DEFAULT_PROFILE_ID`.
- Персона `persona_navi_code.txt`.
- Готовый `.env.navi_code.example`.
- CLI-клиент `navi-code`.

## Что НЕ входит

- Docker-упаковка (отложено).
- Web UI для изображений / публикации контента (`content_publish`, `share_file` отключены в профиле).
- Авторизация (`NAVI_AUTH_ENABLED=false`).

## Быстрый старт

1. Убедитесь, что запущены PostgreSQL с `pgvector` и Ollama с нужной моделью.
2. Скопируйте пример конфигурации:
   ```bash
   cp .env.navi_code.example .env
   ```
3. Установите / обновите зависимости:
   ```bash
   pip install -e ".[dev]"
   ```
4. Запустите сервер:
   ```bash
   .venv/bin/uvicorn navi.main:app --reload --reload-dir navi --port 8000
   ```
5. В другом терминале запустите клиент:
   ```bash
   navi-code
   # или
   python -m clients.terminal
   ```

## Конфигурация `.env`

Ключевые переменные для Navi Code:

```dotenv
NAVI_AUTH_ENABLED=false
NAVI_DEFAULT_PROFILE_ID=navi_code
NAVI_PERSONA_FILE=persona_navi_code.txt

OLLAMA_HOST=http://localhost:11434
OLLAMA_DEFAULT_MODEL=gemma4:26b-a4b-it-q4_K_M
OLLAMA_NUM_CTX=8192
OLLAMA_THINK=true

DATABASE_URL=postgresql://navi:navipass@localhost:5432/navidb

FS_ALLOWED_PATHS=*
TERMINAL_ALLOWED_COMMANDS=*
```

> **Важно:** `FS_ALLOWED_PATHS=*` и `TERMINAL_ALLOWED_COMMANDS=*` дают Нави полный доступ к файловой системе и shell. Используйте только на доверенной локальной машине.

## Профиль `navi_code`

- Расположение: `navi/profiles/navi_code/`.
- База: `developer`, адаптирован под терминал.
- Включённые инструменты:
   - Native: `terminal`, `filesystem`, `code_exec`, `spawn_agent`, `todo`, `scratchpad`, `reflect`, `list_tools`, `tool_manual`, `switch_profile`, `list_profiles`, `memory`, `schedule_recall`, `manage_recall`.
   - MCP: отключены (`"mcp": {}`) для чистого терминального опыта.
- Отключённые инструменты: `share_file`, `content_publish`, `ssh_exec`, `gmail`, `image_view`, `mcp__navi-web`.
- `planning_phase2_enabled: false` — уменьшает latency.
- Ограниченная автономия (bounded autonomy): `scope_boundary_enabled` и `observe_skips_plan_enabled` оба `true`. Агент действует строго в рамках запрошенной области — не лезет в соседние/родительские директории и проекты, не выполняет обнаруженные TODO/roadmap/milestone документы без явного запроса. Запросы `MODE: observe` (посмотреть/прочитать/объяснить) пропускают фазы планирования 2/3 и авто-todo — агент просто собирает информацию инструментами и отвечает. Чтобы воспроизвести прежнее поведение «свободного полёта», отключите оба флага. См. [`docs/profiles.md`](profiles.md#bounded-autonomy) и [`docs/mechanics.md`](mechanics.md).

## Безопасность

- Нави всегда должна спрашивать подтверждение перед разрушительными операциями (`rm`, перезапись файлов, форматирование).
- Не выставляйте сервер Navi Code в интернет без авторизации.
- `TERMINAL_ALLOWED_COMMANDS=*` — это полный shell-доступ; убедитесь, что сервер запущен от пользователя с ограниченными правами, если экспериментируете.

## См. также

- [`docs/navi_code_cli.md`](navi_code_cli.md) — справка по CLI-клиенту.
- [`docs/profiles.md`](profiles.md) — устройство профилей.
- [`docs/config.md`](config.md) — все переменные окружения.
