Архітектура
crew/
├── apps/
│ ├── server/ Hono: REST + WebSocket, роздає веб-інтерфейс
│ └── web/ React 19 + Vite + Tailwind v4
├── packages/
│ ├── core/ Рантайм агентів, LLM-провайдери, інструменти, промпт, воркер
│ ├── memory/ SQLite: агенти, повідомлення, пам'ять (FTS5 + вектори), задачі
│ └── channels/ Telegram (grammY)
├── cli/ `crew`, публікується як @vefimov/crew
├── docs/ Цей сайт (VitePress)
└── docker/Потоки даних
Веб ──────┐
CLI ──────┼──▶ Рантайм Crew ──▶ Провайдер (Ollama / OpenAI-сумісний)
Telegram ─┘ │ ▲
▼ │ інструменти: remember · recall · list/read/write files
SQLite (один файл)
│
▼
Черга задач ──▶ витягування пам'яті, догенерація ембедингівУхвалені рішення
У Crew немає нативних залежностей. node:sqlite вбудований у Node 22, тому npx працює без компіляції.
Увесь стан лежить в одному файлі, ~/.crew/crew.db, у режимі WAL. Туди входять агенти, чати, пам'ять, вектори, налаштування й черга задач.
Для пошуку по пам'яті використовуються FTS5 і перебір за косинусною близькістю замість векторної бази. Для тисяч спогадів на агента цього вистачає з запасом, і не потрібен зайвий сервіс.
Провайдери сховані за маленьким інтерфейсом Provider (chat, embed, models, ping) зі стримінгом і tool calls. Адаптери Ollama та OpenAI-сумісного API займають по одному короткому файлу.
Рантайм побудований на EventEmitter. Сервер пересилає його події у WebSocket-клієнти, тому будь-який інтерфейс бачить усіх агентів наживо.
Кожен агент обробляє один хід за раз, з якого б каналу не прийшло повідомлення.