Files
Apple ef3473db21 snapshot: NODE1 production state 2026-02-09
Complete snapshot of /opt/microdao-daarion/ from NODE1 (144.76.224.179).
This represents the actual running production code that has diverged
significantly from the previous main branch.

Key changes from old main:
- Gateway (http_api.py): expanded from ~40KB to 164KB with full agent support
- Router: new /v1/agents/{id}/infer endpoint with vision + DeepSeek routing
- Behavior Policy: SOWA v2.2 (3-level: FULL/ACK/SILENT)
- Agent Registry: config/agent_registry.yml as single source of truth
- 13 agents configured (was 3)
- Memory service integration
- CrewAI teams and roles

Excluded from snapshot: venv/, .env, data/, backups, .tgz archives

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 08:46:46 -08:00

1306 lines
38 KiB
HTML
Raw Permalink 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.
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://IvanTytar.github.io/microdao-daarion/NODE2_DIAGNOSTIC_REPORT/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
<title>🔍 NODE2 Diagnostic Report — Post-Git-Cleanup - DAARION Documentation</title>
<link rel="stylesheet" href="../assets/stylesheets/main.66ac8b77.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#node2-diagnostic-report-post-git-cleanup" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href=".." title="DAARION Documentation" class="md-header__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
DAARION Documentation
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
🔍 NODE2 Diagnostic Report — Post-Git-Cleanup
</span>
</div>
</div>
</div>
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="DAARION Documentation" class="md-nav__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
DAARION Documentation
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../public/" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../public/getting-started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../public/architecture-overview/" class="md-nav__link">
<span class="md-ellipsis">
Architecture
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../public/daiS_daos_overview/" class="md-nav__link">
<span class="md-ellipsis">
DAIS & DAOS
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
<span class="md-ellipsis">
Internal
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Internal
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
<label class="md-nav__link" for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
<span class="md-ellipsis">
Infra
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_1">
<span class="md-nav__icon md-icon"></span>
Infra
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../internal/infra/INFRA_AUTOMATION_PACK_V1/" class="md-nav__link">
<span class="md-ellipsis">
Infra Automation Pack v1
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../internal/infra/monitoring_overview/" class="md-nav__link">
<span class="md-ellipsis">
Monitoring Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../internal/infra/nodes_registry_v0/" class="md-nav__link">
<span class="md-ellipsis">
Nodes Registry v0
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
<label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
<span class="md-ellipsis">
Specs
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_2">
<span class="md-nav__icon md-icon"></span>
Specs
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../internal/specs/matrix_presence_aggregator/" class="md-nav__link">
<span class="md-ellipsis">
Matrix Presence Aggregator
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../internal/specs/city_map_spec/" class="md-nav__link">
<span class="md-ellipsis">
City Map Spec
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../internal/specs/node_join_protocol_draft/" class="md-nav__link">
<span class="md-ellipsis">
Node Join Protocol (Draft)
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#1-ollama" class="md-nav__link">
<span class="md-ellipsis">
✅ 1. Моделі — ВСІ ЗБЕРЕЖЕНІ (Ollama)
</span>
</a>
<nav class="md-nav" aria-label="✅ 1. Моделі — ВСІ ЗБЕРЕЖЕНІ (Ollama)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#8-ollama-118-gb" class="md-nav__link">
<span class="md-ellipsis">
📦 8 моделей в Ollama (загалом ~118 GB):
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#models-ollama" class="md-nav__link">
<span class="md-ellipsis">
❌ Видалено з models/ (не Ollama):
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#2-swapper-service" class="md-nav__link">
<span class="md-ellipsis">
✅ 2. Swapper Service — ЗАПУЩЕНО
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#3-dagi-router" class="md-nav__link">
<span class="md-ellipsis">
✅ 3. DAGI Router — ПРАЦЮЄ
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#4-dagi-stack" class="md-nav__link">
<span class="md-ellipsis">
✅ 4. DAGI Stack — Частково ПРАЦЮЄ
</span>
</a>
<nav class="md-nav" aria-label="✅ 4. DAGI Stack — Частково ПРАЦЮЄ">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_1" class="md-nav__link">
<span class="md-ellipsis">
Запущені сервіси:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#12-crewai-4-workflows" class="md-nav__link">
<span class="md-ellipsis">
🤖 12 CrewAI Агентів (4 Workflows):
</span>
</a>
<nav class="md-nav" aria-label="🤖 12 CrewAI Агентів (4 Workflows):">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#1-onboarding-workflow-3" class="md-nav__link">
<span class="md-ellipsis">
1. Onboarding Workflow (3 агенти)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#2-code-review-workflow-3" class="md-nav__link">
<span class="md-ellipsis">
2. Code Review Workflow (3 агенти)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#3-proposal-review-workflow-3" class="md-nav__link">
<span class="md-ellipsis">
3. Proposal Review Workflow (3 агенти)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#4-task-decomposition-workflow-3" class="md-nav__link">
<span class="md-ellipsis">
4. Task Decomposition Workflow (3 агенти)
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#5" class="md-nav__link">
<span class="md-ellipsis">
⚠️ 5. Мультимодальні сервіси — ЧАСТКОВО
</span>
</a>
<nav class="md-nav" aria-label="⚠️ 5. Мультимодальні сервіси — ЧАСТКОВО">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
<span class="md-ellipsis">
✅ Працюють:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
<span class="md-ellipsis">
НЕ працюють:
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#6-node2" class="md-nav__link">
<span class="md-ellipsis">
📊 6. Інфраструктура NODE2
</span>
</a>
<nav class="md-nav" aria-label="📊 6. Інфраструктура NODE2">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
<span class="md-ellipsis">
Ресурси:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docker" class="md-nav__link">
<span class="md-ellipsis">
Docker мережа:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ollama" class="md-nav__link">
<span class="md-ellipsis">
Ollama:
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#7" class="md-nav__link">
<span class="md-ellipsis">
🎯 7. НАСТУПНІ КРОКИ
</span>
</a>
<nav class="md-nav" aria-label="🎯 7. НАСТУПНІ КРОКИ">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#a-vision-" class="md-nav__link">
<span class="md-ellipsis">
A) Відновити Vision-модель (для мультимодальності)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#b-sttocr" class="md-nav__link">
<span class="md-ellipsis">
B) Запустити STT/OCR сервіси
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#c-swapper-dagi-router" class="md-nav__link">
<span class="md-ellipsis">
C) Підключити Swapper до DAGI Router
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#d-crewai-daarion-city" class="md-nav__link">
<span class="md-ellipsis">
D) Інтегрувати CrewAI агентів у DAARION City
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#e-web3-login-token-gate-phase-4" class="md-nav__link">
<span class="md-ellipsis">
E) Web3 Login + Token-gate (Phase 4)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#8" class="md-nav__link">
<span class="md-ellipsis">
📝 8. Документація
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#9" class="md-nav__link">
<span class="md-ellipsis">
✅ 9. ПІДСУМОК
</span>
</a>
<nav class="md-nav" aria-label="✅ 9. ПІДСУМОК">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_5" class="md-nav__link">
<span class="md-ellipsis">
Готово:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_6" class="md-nav__link">
<span class="md-ellipsis">
Потрібно:
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="node2-diagnostic-report-post-git-cleanup">🔍 NODE2 Diagnostic Report — Post-Git-Cleanup<a class="headerlink" href="#node2-diagnostic-report-post-git-cleanup" title="Permanent link">&para;</a></h1>
<p><strong>Дата:</strong> 27 листопада 2025<br />
<strong>Контекст:</strong> Діагностика стану NODE2 після <code>git filter-repo</code> операції</p>
<hr />
<h2 id="1-ollama">✅ 1. Моделі — ВСІ ЗБЕРЕЖЕНІ (Ollama)<a class="headerlink" href="#1-ollama" title="Permanent link">&para;</a></h2>
<h3 id="8-ollama-118-gb">📦 8 моделей в Ollama (загалом ~118 GB):<a class="headerlink" href="#8-ollama-118-gb" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Модель</th>
<th>Розмір</th>
<th>Параметри</th>
<th>Тип</th>
<th>Статус</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>deepseek-r1:70b</strong></td>
<td>42 GB</td>
<td>70.6B</td>
<td>LLM (reasoning)</td>
<td></td>
</tr>
<tr>
<td><strong>deepseek-coder:33b</strong></td>
<td>18 GB</td>
<td>33B</td>
<td>Code</td>
<td></td>
</tr>
<tr>
<td><strong>qwen2.5-coder:32b</strong></td>
<td>19 GB</td>
<td>32.8B</td>
<td>Code</td>
<td></td>
</tr>
<tr>
<td><strong>gemma2:27b</strong></td>
<td>15 GB</td>
<td>27.2B</td>
<td>LLM (reasoning)</td>
<td></td>
</tr>
<tr>
<td><strong>mistral-nemo:12b</strong></td>
<td>7.1 GB</td>
<td>12.2B</td>
<td>LLM (reasoning)</td>
<td></td>
</tr>
<tr>
<td><strong>gpt-oss:latest</strong></td>
<td>13 GB</td>
<td>20.9B</td>
<td>LLM (general)</td>
<td></td>
</tr>
<tr>
<td><strong>starcoder2:3b</strong></td>
<td>1.7 GB</td>
<td>3B</td>
<td>Code</td>
<td></td>
</tr>
<tr>
<td><strong>phi3:latest</strong></td>
<td>2.2 GB</td>
<td>3.8B</td>
<td>LLM (lightweight)</td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>Висновок:</strong> Всі критичні LLM-моделі збережені! Swapper може працювати.</p>
<hr />
<h3 id="models-ollama">❌ Видалено з <code>models/</code> (не Ollama):<a class="headerlink" href="#models-ollama" title="Permanent link">&para;</a></h3>
<ul>
<li><strong>qwen3-vl-32b-instruct</strong> (~130 GB) — vision-модель для мультимодальності</li>
<li>65.5 GB <code>.gguf</code> файл</li>
<li>14x5GB safetensors файлів</li>
<li><strong>Призначення:</strong> Vision AI (аналіз зображень, OCR, мультимодальність)</li>
</ul>
<p><strong>Проблема:</strong> Немає vision-моделей для мультимодальних запитів!</p>
<p><strong>Рішення:</strong>
1. Завантажити <code>llava:13b</code> через Ollama (~13 GB)
2. АБО відновити Qwen3-VL з HuggingFace (якщо потрібен кастомний inference)</p>
<hr />
<h2 id="2-swapper-service">✅ 2. Swapper Service — ЗАПУЩЕНО<a class="headerlink" href="#2-swapper-service" title="Permanent link">&para;</a></h2>
<p><strong>Порт:</strong> 8890<br />
<strong>Статус:</strong> ✅ Healthy<br />
<strong>Конфігурація:</strong> <code>swapper_config_node2.yaml</code><br />
<strong>Мережа:</strong> <code>dagi-network</code><br />
<strong>Ollama URL:</strong> <code>http://host.docker.internal:11434</code></p>
<p><strong>Health Check:</strong></p>
<div class="codehilite"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;healthy&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;service&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;swapper-service&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;active_model&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;mode&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;single-active&quot;</span>
<span class="p">}</span>
</code></pre></div>
<p><strong>Активовані моделі:</strong> 8 (всі доступні через Ollama)</p>
<hr />
<h2 id="3-dagi-router">✅ 3. DAGI Router — ПРАЦЮЄ<a class="headerlink" href="#3-dagi-router" title="Permanent link">&para;</a></h2>
<p><strong>Порт:</strong> 9102<br />
<strong>Статус:</strong> Up 4 days (healthy)<br />
<strong>Контейнер:</strong> <code>dagi-router</code></p>
<p><strong>Health Check:</strong></p>
<div class="codehilite"><pre><span></span><code>curl<span class="w"> </span>http://localhost:9102/health
<span class="c1"># Status: OK</span>
</code></pre></div>
<hr />
<h2 id="4-dagi-stack">✅ 4. DAGI Stack — Частково ПРАЦЮЄ<a class="headerlink" href="#4-dagi-stack" title="Permanent link">&para;</a></h2>
<h3 id="_1">Запущені сервіси:<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Сервіс</th>
<th>Статус</th>
<th>Порт</th>
<th>Призначення</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>dagi-router</strong></td>
<td>✅ Up 4 days</td>
<td>9102</td>
<td>Маршрутизація агентів</td>
</tr>
<tr>
<td><strong>dagi-crewai</strong></td>
<td>✅ Up 4 days</td>
<td>8080</td>
<td>12 агентів в 4 workflows</td>
</tr>
<tr>
<td><strong>dagi-devtools</strong></td>
<td>✅ Up 4 days</td>
<td>-</td>
<td>Dev утиліти</td>
</tr>
<tr>
<td><strong>dagi-rbac</strong></td>
<td>✅ Up 4 days</td>
<td>8083</td>
<td>Права доступу</td>
</tr>
<tr>
<td><strong>dagi-gateway</strong></td>
<td>✅ Up 4 days</td>
<td>8081</td>
<td>API Gateway</td>
</tr>
<tr>
<td><strong>dagi-postgres</strong></td>
<td>✅ Up 4 days</td>
<td>5432</td>
<td>База даних</td>
</tr>
<tr>
<td><strong>dagi-web-search-service</strong></td>
<td>⚠️ Unhealthy</td>
<td>8897</td>
<td>Web пошук</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="12-crewai-4-workflows">🤖 12 CrewAI Агентів (4 Workflows):<a class="headerlink" href="#12-crewai-4-workflows" title="Permanent link">&para;</a></h3>
<h4 id="1-onboarding-workflow-3">1. <strong>Onboarding Workflow</strong> (3 агенти)<a class="headerlink" href="#1-onboarding-workflow-3" title="Permanent link">&para;</a></h4>
<ul>
<li><code>welcomer</code> — вітання нових користувачів</li>
<li><code>role_assigner</code> — призначення ролей</li>
<li><code>guide</code> — навігація по системі</li>
</ul>
<h4 id="2-code-review-workflow-3">2. <strong>Code Review Workflow</strong> (3 агенти)<a class="headerlink" href="#2-code-review-workflow-3" title="Permanent link">&para;</a></h4>
<ul>
<li><code>reviewer</code> — перегляд коду</li>
<li><code>security_checker</code> — аналіз безпеки</li>
<li><code>performance_analyzer</code> — оптимізація</li>
</ul>
<h4 id="3-proposal-review-workflow-3">3. <strong>Proposal Review Workflow</strong> (3 агенти)<a class="headerlink" href="#3-proposal-review-workflow-3" title="Permanent link">&para;</a></h4>
<ul>
<li><code>legal_checker</code> — юридична перевірка</li>
<li><code>financial_analyzer</code> — фінансовий аналіз</li>
<li><code>impact_assessor</code> — оцінка впливу</li>
</ul>
<h4 id="4-task-decomposition-workflow-3">4. <strong>Task Decomposition Workflow</strong> (3 агенти)<a class="headerlink" href="#4-task-decomposition-workflow-3" title="Permanent link">&para;</a></h4>
<ul>
<li><code>planner</code> — планування задач</li>
<li><code>estimator</code> — оцінка складності</li>
<li><code>dependency_analyzer</code> — аналіз залежностей</li>
</ul>
<p><strong>API:</strong></p>
<div class="codehilite"><pre><span></span><code>curl<span class="w"> </span>http://localhost:9010/workflow/list
<span class="c1"># 4 workflows доступні</span>
</code></pre></div>
<hr />
<h2 id="5">⚠️ 5. Мультимодальні сервіси — ЧАСТКОВО<a class="headerlink" href="#5" title="Permanent link">&para;</a></h2>
<h3 id="_2">✅ Працюють:<a class="headerlink" href="#_2" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Сервіс</th>
<th>Порт</th>
<th>Статус</th>
<th>Призначення</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Web Search</strong></td>
<td>8897</td>
<td>✅ Healthy</td>
<td>DuckDuckGo + Google</td>
</tr>
<tr>
<td><strong>Vector DB (Qdrant)</strong></td>
<td>6333</td>
<td>✅ Running</td>
<td>Векторний пошук</td>
</tr>
<tr>
<td><strong>Agent Cabinet</strong></td>
<td>8898</td>
<td>✅ Healthy</td>
<td>Управління агентами</td>
</tr>
<tr>
<td><strong>MeiliSearch</strong></td>
<td>7700</td>
<td>✅ Running</td>
<td>Текстовий пошук</td>
</tr>
</tbody>
</table>
<h3 id="_3">НЕ працюють:<a class="headerlink" href="#_3" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Сервіс</th>
<th>Порт</th>
<th>Статус</th>
<th>Причина</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>STT Service</strong></td>
<td>8895</td>
<td>❌ Not running</td>
<td>Не запущено</td>
</tr>
<tr>
<td><strong>OCR Service</strong></td>
<td>8896</td>
<td>❌ Not running</td>
<td>Не запущено</td>
</tr>
</tbody>
</table>
<p><strong>Документація:</strong> <code>COMPLETE-MULTIMODAL-ECOSYSTEM.md</code></p>
<hr />
<h2 id="6-node2">📊 6. Інфраструктура NODE2<a class="headerlink" href="#6-node2" title="Permanent link">&para;</a></h2>
<h3 id="_4">Ресурси:<a class="headerlink" href="#_4" title="Permanent link">&para;</a></h3>
<ul>
<li><strong>CPU:</strong> Apple M4 Max (40-core GPU)</li>
<li><strong>RAM:</strong> 64 GB</li>
<li><strong>VRAM:</strong> 48 GB (GPU)</li>
<li><strong>Диск:</strong> ~500 GB вільно (після cleanup)</li>
</ul>
<h3 id="docker">Docker мережа:<a class="headerlink" href="#docker" title="Permanent link">&para;</a></h3>
<ul>
<li><code>dagi-network</code> — всі DAGI сервіси</li>
<li>Bridge для комунікації між контейнерами</li>
</ul>
<h3 id="ollama">Ollama:<a class="headerlink" href="#ollama" title="Permanent link">&para;</a></h3>
<ul>
<li><strong>Версія:</strong> Latest</li>
<li><strong>URL:</strong> http://localhost:11434</li>
<li><strong>Models dir:</strong> <code>/Users/apple/.ollama/models</code></li>
</ul>
<hr />
<h2 id="7">🎯 7. НАСТУПНІ КРОКИ<a class="headerlink" href="#7" title="Permanent link">&para;</a></h2>
<h3 id="a-vision-">A) <strong>Відновити Vision-модель</strong> (для мультимодальності)<a class="headerlink" href="#a-vision-" title="Permanent link">&para;</a></h3>
<p><strong>Варіант 1: LLaVA через Ollama</strong> (ШВИДКО, ~13 GB)</p>
<div class="codehilite"><pre><span></span><code>ollama<span class="w"> </span>pull<span class="w"> </span>llava:13b
</code></pre></div>
<p><strong>Варіант 2: Qwen3-VL з HuggingFace</strong> (ПОВІЛЬНО, ~130 GB)</p>
<div class="codehilite"><pre><span></span><code><span class="c1"># З HuggingFace Hub</span>
huggingface-cli<span class="w"> </span>download<span class="w"> </span>Qwen/Qwen3-VL-32B-Instruct
</code></pre></div>
<p><strong>Рекомендація:</strong> Почати з LLaVA (менше, швидше), потім за потреби Qwen3-VL.</p>
<hr />
<h3 id="b-sttocr">B) <strong>Запустити STT/OCR сервіси</strong><a class="headerlink" href="#b-sttocr" title="Permanent link">&para;</a></h3>
<div class="codehilite"><pre><span></span><code><span class="c1"># STT Service (Whisper)</span>
<span class="nb">cd</span><span class="w"> </span>~/microdao-daarion/services/stt-service
docker-compose<span class="w"> </span>up<span class="w"> </span>-d
<span class="c1"># OCR Service (Tesseract + EasyOCR)</span>
<span class="nb">cd</span><span class="w"> </span>~/microdao-daarion/services/ocr-service
docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
<p><strong>Документація:</strong> <code>COMPLETE-MULTIMODAL-ECOSYSTEM.md</code> (рядки 139-180)</p>
<hr />
<h3 id="c-swapper-dagi-router">C) <strong>Підключити Swapper до DAGI Router</strong><a class="headerlink" href="#c-swapper-dagi-router" title="Permanent link">&para;</a></h3>
<ol>
<li>Перевірити Router конфігурацію (<code>/opt/daarion/app/services/router/config.yaml</code>)</li>
<li>Додати <code>SWAPPER_URL</code> env var до Router:
<code>yaml
SWAPPER_URL: http://192.168.1.244:8890 # NODE2 IP</code></li>
<li>Перезапустити Router на NODE1:
<code>bash
ssh root@144.76.224.179
docker restart dagi-router</code></li>
</ol>
<hr />
<h3 id="d-crewai-daarion-city">D) <strong>Інтегрувати CrewAI агентів у DAARION City</strong><a class="headerlink" href="#d-crewai-daarion-city" title="Permanent link">&para;</a></h3>
<p><strong>12 агентів → 12 кімнат</strong> (або згрупувати по workflows):
- <strong>Onboarding Hall</strong> — 3 агенти
- <strong>Code Review Lab</strong> — 3 агенти
- <strong>Governance Hall</strong> — 3 агенти
- <strong>Planning Room</strong> — 3 агенти</p>
<p><strong>API Integration:</strong></p>
<div class="codehilite"><pre><span></span><code><span class="c1"># city-service → dagi-crewai</span>
<span class="n">POST</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">localhost</span><span class="p">:</span><span class="mi">9010</span><span class="o">/</span><span class="n">workflow</span><span class="o">/</span><span class="n">execute</span>
<span class="p">{</span>
<span class="s2">&quot;workflow&quot;</span><span class="p">:</span> <span class="s2">&quot;onboarding&quot;</span><span class="p">,</span>
<span class="s2">&quot;agent&quot;</span><span class="p">:</span> <span class="s2">&quot;welcomer&quot;</span><span class="p">,</span>
<span class="s2">&quot;input&quot;</span><span class="p">:</span> <span class="p">{</span><span class="o">...</span><span class="p">}</span>
<span class="p">}</span>
</code></pre></div>
<hr />
<h3 id="e-web3-login-token-gate-phase-4">E) <strong>Web3 Login + Token-gate</strong> (Phase 4)<a class="headerlink" href="#e-web3-login-token-gate-phase-4" title="Permanent link">&para;</a></h3>
<p><strong>Після всіх агентів</strong>:
1. Metamask + SIWE v2
2. <code>has_DAARION_token</code> перевірка
3. Обмеження доступу до кімнат
4. Citizenship Pass</p>
<hr />
<h2 id="8">📝 8. Документація<a class="headerlink" href="#8" title="Permanent link">&para;</a></h2>
<p><strong>Основні файли:</strong>
- <code>COMPLETE-MULTIMODAL-ECOSYSTEM.md</code> — повна мультимодальна архітектура
- <code>DEPLOY_STRATEGY_MULTIMODAL_MVP.md</code> — стратегія інтеграції
- <code>services/swapper-service/config/swapper_config_node2.yaml</code> — конфіг Swapper
- <code>ROUTER-MULTIMODAL-SUPPORT.md</code> — підтримка мультимодальності в Router</p>
<p><strong>Створено під час діагностики:</strong>
- <code>docs/NODE2_DIAGNOSTIC_REPORT.md</code> (цей файл)</p>
<hr />
<h2 id="9">✅ 9. ПІДСУМОК<a class="headerlink" href="#9" title="Permanent link">&para;</a></h2>
<h3 id="_5">Готово:<a class="headerlink" href="#_5" title="Permanent link">&para;</a></h3>
<ul>
<li><strong>8 LLM-моделей збережені</strong> в Ollama (включно з DeepSeek 70B)</li>
<li><strong>Swapper Service запущено</strong> на NODE2 (порт 8890)</li>
<li><strong>DAGI Router працює</strong> (порт 9102)</li>
<li><strong>12 CrewAI агентів готові</strong> до інтеграції</li>
<li><strong>Web Search + Vector DB працюють</strong></li>
</ul>
<h3 id="_6">Потрібно:<a class="headerlink" href="#_6" title="Permanent link">&para;</a></h3>
<ul>
<li>⚠️ <strong>Відновити vision-модель</strong> (LLaVA або Qwen3-VL)</li>
<li>⚠️ <strong>Запустити STT/OCR</strong> (для voice/photo)</li>
<li>⚠️ <strong>Підключити Swapper до Router</strong> (NODE2 → NODE1)</li>
<li>⚠️ <strong>Інтегрувати агентів у City</strong> (12 агентів → кімнати)</li>
</ul>
<hr />
<p><strong>Діагностику виконано:</strong> 27.11.2025<br />
<strong>Статус NODE2:</strong> ✅ Готовий до інтеграції з DAARION MVP<br />
<strong>Блокерів:</strong> Немає (все працює, потрібна лише конфігурація)</p>
<hr />
<p><em>Документ створено автоматично під час діагностики NODE2 після git cleanup операції.</em></p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["navigation.sections", "navigation.instant", "content.code.copy"], "search": "../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.3220b9d7.min.js"></script>
</body>
</html>