@openclaw-cloud/agent-controller 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/BIZPLAN.md ADDED
@@ -0,0 +1,530 @@
1
+ # OpenClaw Cloud — Бизнес-план
2
+
3
+ > Персональный AI-агент для каждого. Managed platform + standalone.
4
+ > Версия: 2.0 | Дата: 2026-02-22
5
+
6
+ ---
7
+
8
+ ## 1. Executive Summary
9
+
10
+ **OpenClaw Cloud** — платформа, позволяющая любому пользователю запустить персонального AI-агента на базе Claude (Anthropic). Агент разворачивается в изолированном окружении, подключается к Telegram/Discord/Slack/WhatsApp и работает 24/7 с персональной памятью, инструментами и интеграциями.
11
+
12
+ **Три модели деплоя:**
13
+ 1. **Managed K8s** — pod в нашем кластере, zero-ops для юзера
14
+ 2. **Managed VM** — выделенный EC2 инстанс, больше ресурсов
15
+ 3. **Standalone (BYOH)** — пользователь ставит openclaw на свой сервер/Mac/ПК, подключается к нашей платформе для биллинга, marketplace, updates
16
+
17
+ **Ключевое отличие от ChatGPT/Claude.ai:** это не чат-окно, а **агент** — с памятью между сессиями, доступом к интернету, файлам, API, умному дому, календарю. Личный цифровой помощник, а не одноразовый чат.
18
+
19
+ | Метрика | Цель (12 мес.) |
20
+ |---------|---------------|
21
+ | Платящие пользователи | 5 000 |
22
+ | MRR | $150 000 |
23
+ | Средний чек | $30/мес |
24
+ | Gross margin | 55-65% |
25
+ | Breakeven | месяц 8-10 |
26
+
27
+ **Модель монетизации:** подписка (SaaS) + usage-based overage + standalone license fee.
28
+
29
+ ---
30
+
31
+ ## 2. Проблема и решение
32
+
33
+ ### Проблема
34
+
35
+ | Боль | Кто страдает |
36
+ |------|-------------|
37
+ | Claude/ChatGPT — одноразовый чат без памяти и автономности | Все пользователи AI |
38
+ | Настроить своего бота с памятью, инструментами, интеграциями — нужны DevOps навыки | Не-технические пользователи, малый бизнес |
39
+ | Существующие решения (Lindy, CustomGPT) — ограничены: нет code execution, браузера, файловой системы | Power users, разработчики |
40
+ | Хочу AI-агента на СВОЁМ железе (приватность, контроль), но с удобством managed платформы | Параноики по безопасности, enterprise, devs |
41
+ | API Anthropic дорого если использовать напрямую без оптимизаций | Разработчики ботов |
42
+
43
+ ### Решение
44
+
45
+ OpenClaw Cloud даёт каждому пользователю:
46
+
47
+ 1. **Изолированное окружение** с персональным Claude-агентом (K8s pod, VM, или свой сервер)
48
+ 2. **Persistent memory** — агент помнит всё между сессиями (файлы, заметки, контекст)
49
+ 3. **Инструменты из коробки:** браузер, shell, файловая система, TTS, поиск, камера
50
+ 4. **Мессенджер-интеграции:** Telegram, Discord, Slack, WhatsApp — агент живёт там, где пользователь
51
+ 5. **Marketplace ролей и личностей** — установка навыков в один клик с onboarding wizard
52
+ 6. **Три модели деплоя** — от zero-ops managed до полного контроля на своём железе
53
+ 7. **Оптимизированная стоимость** — model routing, prompt caching, shared infrastructure
54
+
55
+ ---
56
+
57
+ ## 3. Архитектура
58
+
59
+ ### 3.1 Общая схема
60
+
61
+ ```
62
+ ┌─────────────────────────────────────────────────────────────┐
63
+ │ OpenClaw Cloud Platform │
64
+ │ │
65
+ │ ┌──────────────┐ ┌──────────────┐ ┌────────────────────┐ │
66
+ │ │ Auth + JWT │ │ Billing │ │ Anthropic Proxy │ │
67
+ │ │ Service │ │ Stripe + │ │ (streaming, token │ │
68
+ │ │ │ │ Tinkoff │ │ counting, model │ │
69
+ │ └──────────────┘ └──────────────┘ │ routing) │ │
70
+ │ └────────────────────┘ │
71
+ │ ┌──────────────┐ ┌──────────────┐ ┌────────────────────┐ │
72
+ │ │ Marketplace │ │ Board │ │ Messages Broker │ │
73
+ │ │ Roles + │ │ (Kanban) │ │ (RabbitMQ) │ │
74
+ │ │ Identities │ │ │ │ │ │
75
+ │ └──────────────┘ └──────────────┘ └────────────────────┘ │
76
+ │ │
77
+ │ ┌────────────────── Centrifugo (JWT auth) ─────────────────┐│
78
+ │ │ Real-time WebSocket: heartbeat, board, presence ││
79
+ │ └───────────────────────────────────────────────────────────┘│
80
+ │ │ │
81
+ │ ┌─────────────────┼─────────────────────┐ │
82
+ │ ▼ ▼ ▼ │
83
+ │ ┌───────────┐ ┌──────────────┐ ┌────────────────────┐ │
84
+ │ │ K8s Pods │ │ EC2 VMs │ │ Standalone Agents │ │
85
+ │ │ (managed) │ │ (managed) │ │ (BYOH) │ │
86
+ │ │ │ │ │ │ │ │
87
+ │ │ openclaw │ │ openclaw │ │ openclaw (user's │ │
88
+ │ │ + agent- │ │ + agent- │ │ hardware) + │ │
89
+ │ │ controller│ │ controller │ │ agent-controller │ │
90
+ │ └───────────┘ └──────────────┘ └────────────────────┘ │
91
+ │ │
92
+ │ ┌──────────────────────────────────────────────────────────┐│
93
+ │ │ Frontend: React 19 + Vite ││
94
+ │ │ Dashboard, Marketplace, Billing, Admin, Board ││
95
+ │ └──────────────────────────────────────────────────────────┘│
96
+ └─────────────────────────────────────────────────────────────┘
97
+ ```
98
+
99
+ ### 3.2 Три модели деплоя
100
+
101
+ | | **K8s Managed** | **VM Managed** | **Standalone (BYOH)** |
102
+ |---|---|---|---|
103
+ | **Где работает** | EKS pod (наш кластер) | EC2 инстанс (наш аккаунт) | Сервер/Mac/ПК пользователя |
104
+ | **Provisioning** | Helm chart, автоматический | user-data script, SSM | `npm install -g openclaw` + agent-controller |
105
+ | **Ресурсы** | Shared nodes, 256-512MB RAM | Dedicated, t4g.small+ | Зависит от железа юзера |
106
+ | **Storage** | PersistentVolume (EBS gp3) | EBS volume | Локальный диск |
107
+ | **Networking** | ClusterIP + webhook proxy | Public IP + direct webhook | Outbound WS к платформе |
108
+ | **Стоимость инфры** | ~$3.50/мес (наша) | ~$8-15/мес (наша) | $0 (юзера) |
109
+ | **Scaling** | Автоматический (Karpenter) | Manual (resize) | N/A |
110
+ | **Идеально для** | Starter/Pro планы | Power users, heavy workloads | Privacy-first, enterprise, devs |
111
+ | **Cold storage** | Pod → replicas=0 | VM stop | Always on (юзер контролирует) |
112
+
113
+ ### 3.3 Standalone (BYOH) — как это работает
114
+
115
+ ```
116
+ Пользователь:
117
+ 1. Регистрируется на openclaw-cloud.io
118
+ 2. Получает agent token + license key
119
+ 3. Устанавливает: npm install -g openclaw @openclaw-cloud/agent-controller
120
+ 4. Запускает: agent-controller connect --token <TOKEN>
121
+
122
+ Agent-controller:
123
+ - Подключается к Centrifugo WS (нашей платформы)
124
+ - Получает команды: file-write, package-install, reconfigure
125
+ - Отправляет heartbeats
126
+ - Проксирует Anthropic API через нашу платформу (биллинг + routing)
127
+ - Получает роли/обновления из marketplace
128
+
129
+ Для пользователя:
130
+ - Полный контроль над данными (workspace на его диске)
131
+ - Может использовать свой Anthropic API key (bypass нашего proxy)
132
+ - Автообновления через agent-controller self-update
133
+ ```
134
+
135
+ **Монетизация standalone:**
136
+ - Platform fee: $5/мес (доступ к marketplace, board, updates, monitoring)
137
+ - API proxy: usage-based (если через наш proxy)
138
+ - BYOK (Bring Your Own Key): $5/мес flat (только platform features)
139
+
140
+ ### 3.4 Компоненты
141
+
142
+ | Компонент | Технология | Назначение |
143
+ |-----------|-----------|------------|
144
+ | **Backend API** | Node.js + Express + TypeScript | Ядро платформы — auth, billing, agent management |
145
+ | **Agent Runtime** | OpenClaw (Node.js) | Gateway бота — skills, memory, tools |
146
+ | **Agent-Controller** | Node.js (npm package) | Связь agent↔platform через Centrifugo WS |
147
+ | **Orchestration** | EKS (Kubernetes) + Karpenter | K8s managed agents |
148
+ | **VM Provisioner** | AWS EC2 + SSM | VM managed agents |
149
+ | **Real-time** | Centrifugo v6 (JWT auth) | WebSocket: heartbeats, board events, presence |
150
+ | **Message Queue** | RabbitMQ | Webhook delivery с retry (6 attempts, exponential backoff) |
151
+ | **Database** | PostgreSQL (RDS) | Основное хранилище |
152
+ | **Object Storage** | S3 + CloudFront | Uploads, avatars, static |
153
+ | **Auth** | JWT (custom) | Регистрация, сессии |
154
+ | **Billing** | Stripe + Tinkoff | Подписки, usage metering |
155
+ | **Frontend** | React 19 + Vite + Tailwind | Dashboard, marketplace, billing |
156
+ | **CI/CD** | GitLab CI | Tests, build, deploy |
157
+ | **Monitoring** | Prometheus + Grafana + Loki | Метрики, логи, алерты |
158
+ | **DNS/CDN** | Route53 + CloudFront | `openclaw-cloud.io` |
159
+
160
+ ### 3.5 Scaling стратегия
161
+
162
+ | Фаза | Пользователей | Инфраструктура |
163
+ |------|--------------|----------------|
164
+ | MVP | 0-100 | 2 ARM64 nodes, 1 RDS, shared namespace |
165
+ | Early | 100-500 | 3-5 nodes, Karpenter autoscaling |
166
+ | Growth | 500-2000 | 10-15 nodes, pod scale-to-zero для idle |
167
+ | Scale | 2000-5000 | Multi-AZ, read replicas, отдельный proxy сервис |
168
+ | Mature | 5000+ | Multi-region, dedicated clusters per tier |
169
+
170
+ ---
171
+
172
+ ## 4. Оптимизация расходов
173
+
174
+ ### 4.1 Prompt Caching (Anthropic)
175
+
176
+ Каждый агент имеет большой system prompt (SOUL.md + AGENTS.md + TOOLS.md + контекст) — **5-15K токенов**.
177
+
178
+ | Параметр | Без кэша | С кэшем |
179
+ |----------|----------|---------|
180
+ | System prompt | 10K tokens × $3/1M = $0.03 за каждый запрос | Первый раз: $0.0375 (write), далее: $0.003 (read) |
181
+ | 100 сообщений/день | $3/день | $0.34/день |
182
+ | **Экономия** | — | **~89%** на input tokens системного промпта |
183
+
184
+ **Статус:** Не реализовано. Quick win — добавить `cache_control` к system prompt blocks в `anthropic-proxy.ts`.
185
+
186
+ ### 4.2 Model Routing (реализовано)
187
+
188
+ Встроенный в backend `model-router.ts` — эвристический классификатор:
189
+
190
+ | Правило | Модель | Триггер |
191
+ |---------|--------|---------|
192
+ | Extended thinking / "подумай" | Opus | Ключевые слова |
193
+ | Длинный контекст (>20 сообщений) | Opus | Автоматически |
194
+ | Код, файлы | Sonnet | Детекция паттернов |
195
+ | Короткий запрос (<50 токенов), без кода | Haiku | Автоматически |
196
+ | Default | Sonnet | Fallback |
197
+
198
+ Tier enforcement: Starter → Haiku+Sonnet, Pro → все, Team → все + приоритет.
199
+
200
+ ### 4.3 Spot/ARM64 Instances
201
+
202
+ | Ресурс | Тип | Стоимость |
203
+ |--------|-----|-----------|
204
+ | K8s nodes | t4g (ARM64, spot) | ~60% дешевле x86 on-demand |
205
+ | Agent VMs | t4g.small (ARM64) | $0.013/hr (~$9.50/мес) |
206
+ | Karpenter | Автовыбор cheapest instance | Оптимизирует автоматически |
207
+
208
+ ### 4.4 Pod Scale-to-Zero (roadmap)
209
+
210
+ Если агент не получал сообщений >24ч:
211
+ 1. StatefulSet replicas → 0 (PV сохраняется)
212
+ 2. При новом сообщении → replicas=1, pod стартует за 15-30 сек
213
+ 3. Экономия compute при сохранении данных
214
+
215
+ | Состояние | Стоимость на агента/мес |
216
+ |-----------|------------------------|
217
+ | Active (24/7) | ~$3.50 (compute) + $1.70 (10GB EBS) = **$5.20** |
218
+ | Idle (PV only) | $1.70 (EBS) = **$1.70** |
219
+
220
+ ### 4.5 Standalone — нулевая стоимость инфры
221
+
222
+ Standalone агенты работают на железе пользователя. Для нас:
223
+ - $0 compute, $0 storage
224
+ - Только Centrifugo WS connection + API proxy traffic
225
+ - Gross margin ~90% на standalone plans
226
+
227
+ ### 4.6 Будущие оптимизации (roadmap)
228
+
229
+ | Оптимизация | Экономия | Сложность | Когда |
230
+ |-------------|----------|-----------|-------|
231
+ | Prompt caching | 25-30% API costs | Низкая | Следующий спринт |
232
+ | Pod scale-to-zero | 30-50% compute | Средняя | 500+ юзеров |
233
+ | Anthropic Batches API | 50% на cron-задачи | Низкая | 1000+ юзеров |
234
+ | Shared browser pool | 95% browser costs | Средняя | 1000+ юзеров |
235
+ | ClickHouse для analytics | Снижение нагрузки PG | Средняя | 5000+ юзеров |
236
+ | Локальные модели (STT, classify) | 5-10% API | Высокая | 5000+ юзеров |
237
+
238
+ ---
239
+
240
+ ## 5. Тарифные планы
241
+
242
+ ### Managed планы (K8s / VM)
243
+
244
+ | | **Starter** | **Pro** | **Team** |
245
+ |---|---|---|---|
246
+ | **Цена** | **$9/мес** | **$29/мес** | **$79/мес** (до 5 юзеров) |
247
+ | Deployment | K8s pod | K8s pod или VM | VM (dedicated) |
248
+ | Токены/мес | 2M input + 500K output | 10M input + 3M output | 50M input + 15M output |
249
+ | Модели | Haiku + Sonnet | Haiku + Sonnet + Opus | Все + приоритет |
250
+ | Мессенджеры | 1 канал | 3 канала | Unlimited |
251
+ | Memory (workspace) | 1 GB | 10 GB | 50 GB |
252
+ | Браузер | ❌ | ✅ (50 сессий/день) | ✅ (unlimited) |
253
+ | Code execution | ❌ | ✅ | ✅ |
254
+ | Marketplace roles | 3 | Unlimited | Unlimited |
255
+ | Board (Kanban) | ❌ | ✅ | ✅ |
256
+ | Cron/Heartbeat | 2 задачи | 10 задач | Unlimited |
257
+ | TTS | ❌ | 100/мес | Unlimited |
258
+ | Поддержка | Community | Email | Priority |
259
+
260
+ ### Standalone планы (BYOH)
261
+
262
+ | | **Standalone Basic** | **Standalone Pro** |
263
+ |---|---|---|
264
+ | **Цена** | **$5/мес** | **$19/мес** |
265
+ | API proxy | Через нашу платформу (usage-based) | BYOK (свой API key) |
266
+ | Marketplace | ✅ | ✅ |
267
+ | Board | ❌ | ✅ |
268
+ | Auto-updates | ✅ | ✅ |
269
+ | Monitoring dashboard | Basic | Full |
270
+ | Роли из marketplace | 5 | Unlimited |
271
+ | Поддержка | Community | Email |
272
+
273
+ ### Overage (managed планы)
274
+
275
+ | Ресурс | Цена сверх лимита |
276
+ |--------|-------------------|
277
+ | Input tokens | $5 / 1M tokens |
278
+ | Output tokens | $20 / 1M tokens |
279
+ | Storage | $0.50 / GB / мес |
280
+ | Browser сессии | $0.05 / сессия |
281
+ | TTS | $0.02 / сообщение |
282
+
283
+ ### Годовая подписка: скидка 20%
284
+
285
+ ---
286
+
287
+ ## 6. Unit-экономика
288
+
289
+ ### 6.1 Себестоимость по типам (Pro план, $29/мес)
290
+
291
+ **K8s Managed:**
292
+
293
+ | Статья | $/мес | % |
294
+ |--------|-------|---|
295
+ | Anthropic API (с routing, ~60% usage) | $8.50 | 56% |
296
+ | Compute (pod, ARM64 spot) | $2.80 | 18% |
297
+ | Storage (10GB EBS gp3) | $1.70 | 11% |
298
+ | RabbitMQ/Centrifugo (доля) | $0.30 | 2% |
299
+ | Bandwidth | $0.20 | 1% |
300
+ | Stripe (2.9%) | $0.84 | 6% |
301
+ | Support (доля) | $0.50 | 3% |
302
+ | **Итого COGS** | **$14.84** | |
303
+ | **Gross Profit** | **$14.16** | **49%** |
304
+
305
+ **VM Managed (Team $79/мес):**
306
+
307
+ | Статья | $/мес | % |
308
+ |--------|-------|---|
309
+ | Anthropic API | $25.00 | 56% |
310
+ | EC2 t4g.small (dedicated) | $9.50 | 21% |
311
+ | EBS 50GB | $4.00 | 9% |
312
+ | Прочее | $2.00 | 4% |
313
+ | Stripe (2.9%) | $2.29 | 5% |
314
+ | **Итого COGS** | **$42.79** | |
315
+ | **Gross Profit** | **$36.21** | **46%** |
316
+
317
+ **Standalone Pro ($19/мес):**
318
+
319
+ | Статья | $/мес | % |
320
+ |--------|-------|---|
321
+ | Centrifugo WS (доля) | $0.05 | 2% |
322
+ | Platform infra (доля) | $0.50 | 15% |
323
+ | Stripe (2.9%) | $0.55 | 17% |
324
+ | Support (доля) | $0.50 | 15% |
325
+ | **Итого COGS** | **$1.60** | |
326
+ | **Gross Profit** | **$17.40** | **92%** |
327
+
328
+ ### 6.2 Средневзвешенная маржинальность
329
+
330
+ Предполагаемый mix при 5000 юзеров:
331
+
332
+ | Тип | % юзеров | Avg Revenue | Avg COGS | Avg GP |
333
+ |-----|----------|-------------|----------|--------|
334
+ | Starter ($9) | 30% | $9 | $3.20 | $5.80 |
335
+ | Pro K8s ($29) | 30% | $29 | $14.84 | $14.16 |
336
+ | Team VM ($79) | 10% | $79 | $42.79 | $36.21 |
337
+ | Standalone Basic ($5) | 15% | $5 | $0.80 | $4.20 |
338
+ | Standalone Pro ($19) | 15% | $19 | $1.60 | $17.40 |
339
+ | **Средневзвешенный** | — | **$22.75** | **$9.85** | **$12.90 (57%)** |
340
+
341
+ ### 6.3 Операционные расходы (фиксированные)
342
+
343
+ | Статья | $/мес |
344
+ |--------|-------|
345
+ | Команда (2-3 инженера) | $15 000 |
346
+ | Базовая инфраструктура (EKS, RDS, Centrifugo, RabbitMQ, monitoring) | $2 500 |
347
+ | SaaS (GitLab, Sentry, domains, etc.) | $500 |
348
+ | Маркетинг | $2 000 |
349
+ | Юридические/бухгалтерия | $1 000 |
350
+ | **Итого OpEx** | **$21 000/мес** |
351
+
352
+ ### 6.4 Breakeven
353
+
354
+ | Метрика | Значение |
355
+ |---------|---------|
356
+ | Средний Gross Profit на юзера | $12.90/мес |
357
+ | Фиксированные OpEx | $21 000/мес |
358
+ | **Breakeven** | **~1 630 платящих юзеров** |
359
+ | При росте 25%/мес от 50 юзеров | **~месяц 9** |
360
+
361
+ ### 6.5 Прогноз на 12 месяцев
362
+
363
+ | Месяц | Юзеры | MRR | COGS | Gross Profit | OpEx | Net |
364
+ |-------|-------|-----|------|-------------|------|-----|
365
+ | 1 | 50 | $1 138 | $493 | $645 | $21 000 | -$20 355 |
366
+ | 3 | 150 | $3 413 | $1 478 | $1 935 | $21 000 | -$19 065 |
367
+ | 6 | 600 | $13 650 | $5 910 | $7 740 | $23 000 | -$15 260 |
368
+ | 9 | 1 800 | $40 950 | $17 730 | $23 220 | $25 000 | -$1 780 |
369
+ | 10 | 2 200 | $50 050 | $21 670 | $28 380 | $26 000 | **+$2 380** |
370
+ | 12 | 3 500 | $79 625 | $34 475 | $45 150 | $28 000 | **+$17 150** |
371
+
372
+ **Необходимые инвестиции (runway до breakeven):** ~$150 000
373
+
374
+ ---
375
+
376
+ ## 7. Marketplace — Roles & Identities
377
+
378
+ ### Ключевая дифференциация
379
+
380
+ OpenClaw Cloud не просто хостит ботов — это **платформа с экосистемой**.
381
+
382
+ ### Roles (что агент ДЕЛАЕТ)
383
+
384
+ Роль = installable package с:
385
+ - **Файлы** (AGENTS.md, TOOLS.md, HEARTBEAT.md + кастомные)
386
+ - **Manifest** — зависимости (apt/npm/pip), onboarding questions, file policies
387
+ - **Onboarding Wizard** — при установке спрашивает API ключи, настройки
388
+ - **Template Engine** — `{{GITHUB_TOKEN}}` заменяется на реальные значения
389
+ - **File Policies** — managed (автообновление), template (ре-генерация), user-owned (не трогать)
390
+ - **Portable Memory** — переносимая память роли между агентами
391
+
392
+ 24 готовых роли при запуске: devops-engineer, full-stack-developer, crypto-trader, email-manager, и др.
393
+
394
+ ### Identities (кто агент ЕСТЬ)
395
+
396
+ Личность = SOUL.md + IDENTITY.md. Определяет характер, стиль общения, голос.
397
+
398
+ ### Монетизация marketplace (roadmap)
399
+
400
+ - Бесплатные роли (community) — привлечение
401
+ - Premium роли (авторские) — 70/30 split
402
+ - Enterprise роли (custom) — per-seat licensing
403
+
404
+ ---
405
+
406
+ ## 8. Конкуренты
407
+
408
+ | Критерий | **OpenClaw Cloud** | **Lindy.ai** | **Poe** | **ChatGPT Teams** | **Self-hosted (raw)** |
409
+ |----------|-------------------|-------------|---------|-----------------|---------------------|
410
+ | Персональный агент 24/7 | ✅ | ✅ | ❌ | ❌ | ✅ (manual setup) |
411
+ | Persistent memory | ✅ (файловая) | Ограниченно | ❌ | Ограниченно | ✅ (manual) |
412
+ | Code execution | ✅ (full shell) | ❌ | ❌ | Sandbox | ✅ (manual) |
413
+ | Мессенджеры | Telegram, Discord, Slack, WhatsApp | Slack, Email | ❌ | Slack | Manual |
414
+ | Marketplace ролей | ✅ (24+ ролей, onboarding) | Шаблоны | ❌ | ❌ | ❌ |
415
+ | Standalone (BYOH) | ✅ | ❌ | ❌ | ❌ | ✅ (это и есть) |
416
+ | Managed + Self-hosted | ✅ (оба) | Только managed | Только cloud | Только cloud | Только self |
417
+ | Board (Kanban) | ✅ | ❌ | ❌ | ❌ | ❌ |
418
+ | Auto model routing | ✅ | ❌ | Multi-model | ❌ | ❌ |
419
+ | Цена (Pro) | $29/мес | $49/мес | $20/мес | $25/user | $0 + API costs |
420
+
421
+ ### Конкурентные преимущества
422
+
423
+ 1. **Три модели деплоя** — единственная платформа с managed + standalone + VM
424
+ 2. **Marketplace ролей** — installable packages с onboarding, не просто промпты
425
+ 3. **Мессенджер-first** — агент живёт в Telegram/Discord
426
+ 4. **Open-source core** (openclaw) — доверие, extensibility
427
+ 5. **Claude-first** — лучшая интеграция с экосистемой Anthropic
428
+ 6. **Standalone монетизация** — даже self-hosted юзеры платят за платформу
429
+
430
+ ### Уникальная позиция: Standalone
431
+
432
+ Standalone закрывает сегмент который **никто не покрывает**: юзеры, которые хотят AI-агента на своём железе, но не хотят разбираться в настройке, обновлениях, marketplace. Мы даём "managed experience" для self-hosted.
433
+
434
+ ---
435
+
436
+ ## 9. Текущий статус и Roadmap
437
+
438
+ ### ✅ Реализовано (февраль 2026)
439
+
440
+ - [x] EKS кластер (eu-central-1, ARM64, Karpenter)
441
+ - [x] K8s agent provisioning (helm chart, StatefulSet)
442
+ - [x] VM agent provisioning (EC2, Ubuntu ARM64, SSM)
443
+ - [x] Agent-controller (npm package, Centrifugo WS, self-update)
444
+ - [x] Centrifugo real-time (JWT auth, heartbeat, board, presence)
445
+ - [x] Messages Broker (RabbitMQ, webhook proxy с retry)
446
+ - [x] Anthropic Proxy (streaming, token counting, usage tracking)
447
+ - [x] Model Router (Haiku/Sonnet/Opus, tier enforcement)
448
+ - [x] Usage Limiter (weighted units, budgets, notifications)
449
+ - [x] Billing (Stripe + Tinkoff, starter/pro/team plans)
450
+ - [x] Marketplace (24 roles, identities, install/update flow, onboarding wizard)
451
+ - [x] Board (Kanban, real-time via Centrifugo)
452
+ - [x] Frontend (React 19, dashboard, marketplace, billing, admin)
453
+ - [x] CI/CD (GitLab, tests, auto-deploy)
454
+ - [x] Monitoring (Prometheus, Grafana, Loki)
455
+ - [x] Telegram bot pool management
456
+
457
+ ### 🔜 Фаза 1: Launch-ready (4 недели)
458
+
459
+ - [ ] Landing page + sign-up flow
460
+ - [ ] Prompt caching в Anthropic Proxy
461
+ - [ ] Standalone agent onboarding (connect flow)
462
+ - [ ] Usage dashboard (charts, per-model breakdown)
463
+ - [ ] Email notifications (SES)
464
+ - [ ] Overage billing через Stripe metered
465
+ - [ ] Documentation (user-facing)
466
+
467
+ ### 🔮 Фаза 2: Growth (2-3 месяца)
468
+
469
+ - [ ] Pod scale-to-zero для idle agents
470
+ - [ ] Discord, Slack, WhatsApp каналы
471
+ - [ ] Standalone BYOK (Bring Your Own Key)
472
+ - [ ] Premium marketplace roles
473
+ - [ ] Referral program
474
+ - [ ] Mobile companion (node pairing)
475
+
476
+ ### 🚀 Фаза 3: Scale (6+ месяцев)
477
+
478
+ - [ ] Multi-region (US, Asia)
479
+ - [ ] Anthropic Batches API для cron-задач
480
+ - [ ] Shared browser pool
481
+ - [ ] Enterprise features (SSO, audit logs, SLA)
482
+ - [ ] ClickHouse для usage analytics
483
+ - [ ] API access для разработчиков
484
+
485
+ ---
486
+
487
+ ## 10. Риски
488
+
489
+ | Риск | Вероятность | Импакт | Митигация |
490
+ |------|-----------|--------|-----------|
491
+ | Anthropic повышает цены | Средняя | Высокий | Model routing, prompt caching, multi-provider roadmap |
492
+ | Anthropic запускает hosted agents | Высокая | Критический | Standalone (они не дадут self-host), marketplace, multi-model |
493
+ | Docker Hub rate limits | Высокая | Средний | ECR mirror, authenticated pulls (уже реализовано) |
494
+ | EADDRINUSE и баги openclaw | Средняя | Средний | Pin версии, тестировать перед upgrade |
495
+ | Низкий retention | Средняя | Высокий | Onboarding flow, marketplace, memory lock-in |
496
+ | Cash flow до breakeven | Средняя | Высокий | Lean team ($21K/мес OpEx), standalone (high margin) |
497
+ | Регуляторные риски (EU AI Act) | Средняя | Средний | Standalone = data stays with user |
498
+
499
+ ### Ключевой hedge: Standalone
500
+
501
+ Если Anthropic или другие запустят managed agents — наш standalone план остаётся уникальным. "Managed experience для self-hosted" — это ниша, которую гиганты не будут закрывать.
502
+
503
+ ---
504
+
505
+ ## Приложение A: Технический стек (актуальный)
506
+
507
+ | Компонент | Технология | Версия |
508
+ |-----------|-----------|-------------------------------|
509
+ | Backend | Node.js + Express + TypeScript | Node 22, TS 5.x |
510
+ | Frontend | React + Vite + Tailwind | React 19, Vite 6, Tailwind v4 |
511
+ | Agent-Controller | Node.js (npm package) | 0.1.5 |
512
+ | Agent Runtime | OpenClaw | 2026.2.21 |
513
+ | Database | PostgreSQL | 16 |
514
+ | Message Queue | RabbitMQ | 3.x |
515
+ | Real-time | Centrifugo | v6 |
516
+ | K8s | EKS (AWS) | 1.31 |
517
+ | Autoscaler | Karpenter | 1.6.3 |
518
+ | VMs | EC2 ARM64 (Ubuntu 24.04) | t4g family |
519
+ | Storage | S3 + CloudFront + EBS gp3 | — |
520
+ | CI/CD | GitLab CI | — |
521
+ | Monitoring | Prometheus + Grafana + Loki | — |
522
+ | Billing | Stripe + Tinkoff | — |
523
+ | DNS | Route53 | — |
524
+ | VPN | AWS Client VPN | — |
525
+ | IaC | Terraform | 1.x |
526
+
527
+ ---
528
+
529
+ *Документ обновлён: 2026-02-22. Версия 2.0.*
530
+ *Основано на реальной архитектуре проекта.*
package/CLAUDE.md CHANGED
@@ -59,6 +59,64 @@ Ask if I want one of two options:
59
59
 
60
60
  FOR EACH STAGE OF REVIEW: output the explanation and pros and cons of each stage's questions AND your opinionated recommendation and why, and then use AskUserQuestion. Also NUMBER issues and then give LETTERS for options and when using AskUserQuestion make sure each option clearly labels the issue NUMBER and option LETTER so the user doesn't get confused. Make the recommended option always the 1st option.
61
61
 
62
+ ## Codebase Navigation
63
+
64
+ ### Project Structure
65
+ ```
66
+ src/
67
+ ├── index.ts # Entry point — parse args, start connection
68
+ ├── connection.ts # Centrifugo WS client, command dispatcher
69
+ ├── heartbeat.ts # Periodic heartbeat publisher
70
+ ├── api.ts # HTTP client for backend API calls
71
+ ├── types.ts # AgentCommand, AgentResponse, CommandType
72
+ ├── handlers/ # Command handlers (backend → agent)
73
+ │ ├── file-write.ts # Write file to workspace
74
+ │ ├── file-delete.ts # Delete file from workspace
75
+ │ ├── package-install.ts # Install apt/npm/pip packages
76
+ │ ├── restart.ts # Restart openclaw gateway
77
+ │ ├── stop.ts # Stop agent
78
+ │ ├── backup.ts # Create workspace backup
79
+ │ ├── config.ts # Update config files
80
+ │ ├── deploy.ts # Deploy/redeploy
81
+ │ ├── exec.ts # Execute shell commands
82
+ │ ├── chat.ts # Chat relay
83
+ │ ├── onboarding.ts # Onboarding completion
84
+ │ ├── pair.ts # Node pairing
85
+ │ ├── board-handler.ts # Kanban board integration
86
+ │ └── self-update.ts # Self-update via npm
87
+ ├── commands/ # CLI subcommands (agent-controller <cmd>)
88
+ │ └── self-update.ts # `agent-controller self-update`
89
+ └── openclaw/ # OpenClaw gateway process management
90
+ ```
91
+
92
+ ### Command dispatch flow
93
+ ```
94
+ Centrifugo WS message → connection.ts (handler map) → handlers/<type>.ts → AgentResponse → publish back
95
+ ```
96
+
97
+ Handler map in `connection.ts`:
98
+ ```ts
99
+ const handlers: Record<CommandType, Handler> = {
100
+ package_install: handlePackageInstall,
101
+ file_write: handleFileWrite,
102
+ file_delete: handleFileDelete,
103
+ restart: handleRestart,
104
+ // ...
105
+ };
106
+ ```
107
+
108
+ ### Adding a new command handler
109
+ 1. Create `src/handlers/my-handler.ts` — export `async function handleMyHandler(cmd: AgentCommand): Promise<AgentResponse>`
110
+ 2. Add `'my_handler'` to `CommandType` union in `src/types.ts`
111
+ 3. Register in handler map in `src/connection.ts`
112
+ 4. Backend sends via `container.centrifugo.publishCommand(agentId, { type: 'my_handler', id, payload })`
113
+
114
+ ### Known Issues & Pitfalls
115
+ - **WORKSPACE_DIR**: Defaults to `/etc/openclaw/workspace`. All file operations are sandboxed here (no `..`, no absolute paths).
116
+ - **Command names must match backend exactly**: e.g. `package_install` not `install_packages`. Mismatches silently drop.
117
+ - **npm publish required**: After changes, bump version in `package.json`, `npm publish`, then update agent Dockerfile + user-data.ts to pull new version.
118
+ - **PID 1 kill**: If agent-controller crashes, it kills PID 1 to force K8s pod restart. Don't swallow fatal errors.
119
+
62
120
  ## Quick Reference
63
121
 
64
122
  ```bash
@@ -105,3 +163,9 @@ Agent-controller is delivered via **npm** (not Docker image copy):
105
163
  ### Docker
106
164
 
107
165
  The `Dockerfile` in this repo is for **local development and testing only**. It is NOT used in production. Production installs agent-controller from npm registry.
166
+
167
+
168
+ ## Business Context
169
+
170
+ For full understanding of all platform components, architecture, deployment models, roadmap, and unit-economics — see `BIZPLAN.md` in this repo.
171
+