Files
microdao-daarion/docs/foundation/Nodes_Interface_Architecture_UPDATE_v1.md
Apple 644edd3f30 feat(mvp): DAGI Integration Fix - gov_level, DAIS, nodes table
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
2025-11-30 08:45:07 -08:00

334 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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_id`
- `wallet`
- `public_key`
- `role: node_agent`
Це і є "особистість" ноди, можливість підписувати операції.
## 2.4. Запис у таблиці `nodes`
У БД фіксується:
- `node_id`
- `owner_microdao_id`
- `node_agent_id`
- `kind`
- `capabilities`
- `status`
- `registered_at`
## 2.5. Node Profile — Core Invariants (PATCH v1)
Кожна нода в DAARION Ontology має чотири обов'язкові шари:
1. **Metrics Layer** — live-метрики CPU/GPU/RAM/Disk + heartbeat. Навіть якщо телеметрія частково відсутня, нода переходить у `metrics_status = degraded`, а не існує “порожньою”.
2. **Ownership Layer** — власник (MicroDAO/District) з полями `owner_microdao_id`, `owner_microdao_slug` (опційно `district_id`). Немає безхазяйних нод.
3. **Models Layer** — локальний Swapper + набір моделей (LLM, STT, vision, TTS, RAG). Dev-ноди так само мають DAGI-стек, просто з іншим складом моделей.
4. **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-профілі ("можливості")
При реєстрації ноди описуються її можливості:
### Приклади:
```json
{
"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 Процес реєстрації
```mermaid
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
1. Фізичний пристрій підключається до мережі
2. Локальний мозок запускає DAIS-агента
3. Агент отримує DAIS identity (якщо ще немає)
4. Виклик `/nodes/register` з capability-профілем
5. Нода з'являється в системі
6. 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 секунд:
```json
{
"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}` — heartbeat
- `nodes.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