| client | 2 months ago | ||
| manuals | 2 months ago | ||
| navi | 2 months ago | ||
| tools | 2 months ago | ||
| .env.example | 2 months ago | ||
| .gitignore | 2 months ago | ||
| CLAUDE.md | 2 months ago | ||
| README.md | 2 months ago | ||
| persona.txt | 2 months ago | ||
| pyproject.toml | 2 months ago | ||
| ssh_hosts.json.example | 2 months ago | ||
Модульная агентная система с REST API и WebSocket.
python3 -m venv .venv source .venv/bin/activate pip install -e ".[dev]" cp .env.example .env # при необходимости настрой uvicorn navi.main:app --reload
API доступно по адресу http://localhost:8000.
Swagger UI: http://localhost:8000/docs
# 1. Создать сессию с профилем "secretary"
curl -X POST http://localhost:8000/sessions \
-H "Content-Type: application/json" \
-d '{"profile_id": "secretary"}'
# 2. Отправить сообщение (замени <session_id>)
curl -X POST http://localhost:8000/sessions/<session_id>/messages \
-H "Content-Type: application/json" \
-d '{"content": "Найди последние новости про Python 3.13"}'
ws://localhost:8000/ws/sessions/<session_id>
Клиент отправляет: {"type": "message", "content": "..."}
Сервер стримит: stream_start → tool_call* → stream_delta* → stream_end
navi/ ├── main.py # FastAPI app ├── config.py # настройки через .env ├── exceptions.py # доменные исключения ├── llm/ # LLM бекенды (ollama, openai stub) ├── tools/ # инструменты (web_search, filesystem, http, code, terminal) ├── profiles/ # профили агентов (smart_home, server_admin, secretary) ├── core/ # агент, реестры, сессии └── api/ # роуты и WebSocket
| ID | Описание | Инструменты |
|---|---|---|
smart_home |
Умный дом / Home Assistant | http, filesystem, code, terminal |
server_admin |
Администрирование серверов | terminal, filesystem, http, web_search |
secretary |
Личный секретарь | web_search, http, filesystem, code |
Новый профиль — создай navi/profiles/my_profile.py, добавь в ALL_PROFILES в __init__.py.
Новый инструмент — реализуй Tool из navi/tools/base.py, зарегистрируй в navi/core/registry.py.
Новый LLM бекенд — реализуй LLMBackend из navi/llm/base.py, зарегистрируй в navi/core/registry.py.