TASK_PHASE_MVP_DAGI_INTEGRATION_FIX_20251201 A) Agents Layer: - A1: Added gov_level to API and UI (list + profile) - A2: Added dais_identity_id to API and UI - A3: Added home_microdao_id/name/slug for ownership display B) MicroDAO Layer: - B1/B2: Already implemented (agents, rooms, citizens, district badge) C) Nodes Layer: - C1: Node Dashboard already implemented - C2: Created nodes table migration with owner_microdao_id - C3: INSERT NODE1/NODE2 with dao_daarion ownership D) Backend Fixes: - D1: Extended /api/agents/* with DAIS/governance fields - D2/D3: Already implemented Files changed: - services/city-service/repo_city.py - services/city-service/models_city.py - services/city-service/routes_city.py - services/city-service/migrations.py - apps/web/src/lib/types/agents.ts - apps/web/src/lib/agent-dashboard.ts - apps/web/src/app/agents/page.tsx - apps/web/src/components/agent-dashboard/AgentSummaryCard.tsx Reports: - docs/debug/mvp_dagi_integration_fix_report_20251201.md - docs/tasks/TASK_PHASE_MVP_DAGI_INTEGRATION_FIX_20251201.md
10 KiB
Nodes Interface Architecture — UPDATE v1
DAARION.city Unified Node Model
Version: 1.1
1. Визначення НОДИ
Нода = фізичний об'єкт + локальний обчислювальний модуль + DAIS-агент + запис у таблиці nodes.
Нода не існує "віртуально".
Вона з'являється тільки після фактичного приєднання фізичного пристрою.
2. Компоненти НОДИ
2.1. Фізичний об'єкт ("ресурс")
- енергетична установка,
- обчислювальний сервер,
- IoT-станція,
- мікрокомп'ютер або смартфон,
- будь-яка реальна точка у світі.
2.2. Локальний мозок
Обов'язково існує хоча б один пристрій, здатний:
- запускати агента,
- передавати телеметрію,
- встановлювати з'єднання з DAARION,
- керувати локальним обладнанням.
Це може бути:
- ноутбук,
- міні-ПК,
- сервер,
- смартфон,
- Raspberry Pi.
2.3. DAIS-агент
Кожна нода має свого:
dais_idwalletpublic_keyrole: node_agent
Це і є "особистість" ноди, можливість підписувати операції.
2.4. Запис у таблиці nodes
У БД фіксується:
node_idowner_microdao_idnode_agent_idkindcapabilitiesstatusregistered_at
2.5. Node Profile — Core Invariants (PATCH v1)
Кожна нода в DAARION Ontology має чотири обов'язкові шари:
- Metrics Layer — live-метрики CPU/GPU/RAM/Disk + heartbeat. Навіть якщо телеметрія частково відсутня, нода переходить у
metrics_status = degraded, а не існує “порожньою”. - Ownership Layer — власник (MicroDAO/District) з полями
owner_microdao_id,owner_microdao_slug(опційноdistrict_id). Немає безхазяйних нод. - Models Layer — локальний Swapper + набір моделей (LLM, STT, vision, TTS, RAG). Dev-ноди так само мають DAGI-стек, просто з іншим складом моделей.
- Orchestration Layer — локальний DAGI Router + агенти з
home_node_id, які працюють на цій ноді.
Також кожна нода має мінімальний набір Node Core Agents:
- Node Guardian Agent — відповідає за health, безпеку, інциденти.
- Node Steward Agent — відповідає за приналежність до microDAO, профіль, онбординг.
- (опційно) Node Models/Swapper Agent — відповідає за опис і політику використання локального стека моделей.
Принцип “немає сторінки без агентів” означає, що будь-який інтерфейс Ноди (профіль, метрики, моделі, доступи) завжди “закріплений” за хоча б одним агентом, і цей агент показується в UI.
3. Типи НОД
3.1. Energy Node
Фізична енергетична установка з датчиками.
kind = "energy"
3.2. Compute Node
Фізичний сервер/станція для AI.
kind = "compute"
3.3. Hybrid Node
Енергія + compute.
kind = "hybrid"
3.4. IoT Gateway Node
Для сенсорних мереж.
kind = "iot_gateway"
3.5. Edge Node
Смартфон, ноутбук, міні-ПК.
kind = "edge"
3.6. Datacenter Node
Потужний серверний вузол.
kind = "datacenter"
3.7. GPU Cluster Node
Спеціалізований GPU кластер.
kind = "gpu_cluster"
4. Capability-профілі ("можливості")
При реєстрації ноди описуються її можливості:
Приклади:
{
"energy": {
"max_kWt": 8.2,
"sensors": ["temp", "co2"],
"telemetry": "1m"
},
"compute": {
"gpu_vram": "16GB",
"cpu_cores": 12,
"ram": "64GB",
"storage": "2TB"
}
}
Цей профіль створюється самим пристроєм або оператором вручну.
5. Правило реєстрації
Нода реєструється тільки тоді, коли фізичний пристрій реально з'єднується з DAARION і викликає
/nodes/register.
Жодних автосозданих нод.
Жодних "placeholder-node".
5.1 Процес реєстрації
sequenceDiagram
participant Device as Physical Device
participant Brain as Local Brain
participant API as DAARION API
participant DB as Database
Device->>Brain: Boot & Initialize
Brain->>API: POST /nodes/register
API->>API: Validate DAIS identity
API->>DB: INSERT INTO nodes
DB-->>API: node_id
API-->>Brain: { node_id, status: "registered" }
Brain->>Device: Configure & Start Services
5.2 Required Fields
| Field | Type | Required | Description |
|---|---|---|---|
| owner_microdao_id | UUID | ✅ | MicroDAO власник |
| node_agent_id | TEXT | ✅ | DAIS ID агента ноди |
| kind | ENUM | ✅ | Тип ноди |
| capabilities | JSONB | ✅ | Можливості |
| hostname | TEXT | ❌ | Ім'я хоста |
| ip_address | TEXT | ❌ | IP адреса |
6. Onboarding / Offboarding
6.1 Onboarding
- Фізичний пристрій підключається до мережі
- Локальний мозок запускає DAIS-агента
- Агент отримує DAIS identity (якщо ще немає)
- Виклик
/nodes/registerз capability-профілем - Нода з'являється в системі
- District Lead Agent підтверджує (якщо потрібно)
6.2 Offboarding
- власник може відключити ноду через
/nodes/{id}/deactivate - District Lead може заблокувати ноду при порушенні
- City Governance може ревокувати ноду при критичних інцидентах
7. Security
- всі операції підписані DAIS-ключами ноди
- ревокація ноди = блокування її DAIS-агента
- телеметрія може бути E2E-шифрована
- кожна нода має свій wallet для мікротранзакцій
7.1 Key Rotation
Ноди повинні періодично оновлювати ключі:
- автоматична ротація кожні 90 днів
- примусова ротація при підозрі компрометації
- старі ключі зберігаються в
dais_keysзrevoked = true
8. Інтеграція з District-протоколами
8.1 MicroDAO
Кожна нода належить певному MicroDAO:
owner_microdao_id→ FK доmicrodaos- права управління нодою = права Orchestrator MicroDAO
8.2 District
District Lead (Helion, GREENFOOD ERP, інші) має право:
- реєстрації ноди всередині District
- перевірки capability-профілю
- блокування ноди в разі порушення протоколу
- налаштування SLA вимог
8.3 City
City Governance може:
- переглядати всі ноди міста з роллю
city_governance - блокувати ноди при критичних інцидентах
- встановлювати city-wide policies
9. Node Status Lifecycle
registered → online → busy → offline → deactivated
↓
suspended (при порушенні)
↓
revoked (hard block)
| Status | Description |
|---|---|
registered |
Нода зареєстрована, очікує активації |
online |
Нода активна, готова до роботи |
busy |
Нода виконує задачу |
offline |
Нода тимчасово недоступна |
suspended |
Нода призупинена адміністративно |
deactivated |
Нода деактивована власником |
revoked |
Нода заблокована назавжди |
10. Telemetry Protocol
10.1 Heartbeat
Кожна нода надсилає heartbeat кожні 60 секунд:
{
"node_id": "...",
"timestamp": "2025-11-30T12:00:00Z",
"status": "online",
"metrics": {
"cpu_load": 0.45,
"memory_used": 0.67,
"disk_free": 0.82
}
}
10.2 NATS Subjects
nodes.heartbeat.{node_id}— heartbeatnodes.metrics.{node_id}— детальна телеметріяnodes.events.{node_id}— події нодиnodes.alerts.{node_id}— алерти
11. Сумісність
Ця модель однакова для:
- Energy Union — energy/compute/hybrid ноди
- GREENFOOD — warehouse/logistics/iot ноди
- CLAN — edge/compute ноди
- SOUL — personal/edge ноди
- DAARION root DAO — datacenter/gpu_cluster ноди
12. Cross-References
- DAARION_Ontology_Core_v1.md — базова онтологія
- DAIS_Layer_Architecture_v1.md — система ідентичності
- Agent_Governance_Protocol_v1.md — права агентів
- ENERGYUNION_District_Protocol_v1.md — протокол Energy Union
- GREENFOOD_District_Protocol_v1.md — протокол GREENFOOD
Document Status: ✅ Ready for Implementation