feat: Add presence heartbeat for Matrix online status
- matrix-gateway: POST /internal/matrix/presence/online endpoint - usePresenceHeartbeat hook with activity tracking - Auto away after 5 min inactivity - Offline on page close/visibility change - Integrated in MatrixChatRoom component
This commit is contained in:
@@ -6,14 +6,19 @@
|
||||
"source": [
|
||||
"# 🚀 Infrastructure Quick Reference — DAARION & MicroDAO\n",
|
||||
"\n",
|
||||
"**Версія:** 1.3.0 \n",
|
||||
"**Останнє оновлення:** 2025-01-21 \n",
|
||||
"**Версія:** 2.0.0 \n",
|
||||
"**Останнє оновлення:** 2025-11-23 \n",
|
||||
"\n",
|
||||
"Цей notebook містить швидкий довідник по серверах, репозиторіях та endpoints для DAGI Stack.\n",
|
||||
"\n",
|
||||
"**UPDATED:** Swapper Service (vision-8b) на Node #1, Node #2 (MacBook Pro M4 Max)\n",
|
||||
"\n",
|
||||
"**Note:** На Node #1 використовується Swapper Service з vision-8b моделлю (Qwen3-VL 8B) для обробки зображень, а не Vision Encoder."
|
||||
"**NEW (v2.0.0):** \n",
|
||||
"- ✅ Мультимодальні сервіси (STT, OCR, Web Search, Vector DB) на НОДА2\n",
|
||||
"- ✅ Router Multimodal Support (інтеграція в процесі)\n",
|
||||
"- ✅ Telegram Gateway Enhanced (STT + Vision)\n",
|
||||
"- ✅ Swapper Service інтеграція в кабінети НОД\n",
|
||||
"- ✅ Кабінети мікроДАО з оркестраторами\n",
|
||||
"- ✅ Оновлення в реальному часі (кожні 30 секунд)\n",
|
||||
"- ✅ Управління мікроДАО в кабінеті DAARION"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -22,7 +27,7 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Service Configuration (UPDATED with Swapper Service на Node #1)\n",
|
||||
"# Service Configuration (UPDATED with Swapper Service + Frontend + Agent Cabinet)\n",
|
||||
"SERVICES = {\n",
|
||||
" \"router\": {\"port\": 9102, \"container\": \"dagi-router\", \"health\": \"http://localhost:9102/health\"},\n",
|
||||
" \"gateway\": {\"port\": 9300, \"container\": \"dagi-gateway\", \"health\": \"http://localhost:9300/health\"},\n",
|
||||
@@ -32,7 +37,9 @@
|
||||
" \"rag\": {\"port\": 9500, \"container\": \"dagi-rag-service\", \"health\": \"http://localhost:9500/health\"},\n",
|
||||
" \"memory\": {\"port\": 8000, \"container\": \"dagi-memory-service\", \"health\": \"http://localhost:8000/health\"},\n",
|
||||
" \"parser\": {\"port\": 9400, \"container\": \"dagi-parser-service\", \"health\": \"http://localhost:9400/health\"},\n",
|
||||
" \"swapper\": {\"port\": 8890, \"container\": \"swapper-service\", \"health\": \"http://localhost:8890/health\", \"gpu\": True, \"note\": \"Dynamic model swapping (vision-8b, math-7b, etc.)\"},\n",
|
||||
" \"swapper\": {\"port\": 8890, \"container\": \"swapper-service\", \"health\": \"http://localhost:8890/health\", \"node1\": \"http://144.76.224.179:8890\", \"node2\": \"http://192.168.1.244:8890\"},\n",
|
||||
" \"frontend\": {\"port\": 8899, \"container\": \"frontend\", \"health\": \"http://localhost:8899\"},\n",
|
||||
" \"agent_cabinet\": {\"port\": 8898, \"container\": \"agent-cabinet-service\", \"health\": \"http://localhost:8898/health\"},\n",
|
||||
" \"postgres\": {\"port\": 5432, \"container\": \"dagi-postgres\", \"health\": None},\n",
|
||||
" \"redis\": {\"port\": 6379, \"container\": \"redis\", \"health\": \"redis-cli PING\"},\n",
|
||||
" \"neo4j\": {\"port\": 7474, \"container\": \"neo4j\", \"health\": \"http://localhost:7474\"},\n",
|
||||
@@ -119,6 +126,80 @@
|
||||
" print(f\" Specs: {node['specs']}\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## 🐙 GitHub Repositories\n",
|
||||
"\n",
|
||||
"### 1. MicroDAO (Current Project)\n",
|
||||
"- **Repository:** `git@github.com:IvanTytar/microdao-daarion.git`\n",
|
||||
"- **HTTPS:** `https://github.com/IvanTytar/microdao-daarion.git`\n",
|
||||
"- **Remote Name:** `origin`\n",
|
||||
"- **Main Branch:** `main`\n",
|
||||
"- **Purpose:** MicroDAO core code, DAGI Stack, documentation\n",
|
||||
"\n",
|
||||
"### 2. DAARION.city\n",
|
||||
"- **Repository:** `git@github.com:DAARION-DAO/daarion-ai-city.git`\n",
|
||||
"- **HTTPS:** `https://github.com/DAARION-DAO/daarion-ai-city.git`\n",
|
||||
"- **Remote Name:** `daarion-city`\n",
|
||||
"- **Main Branch:** `main`\n",
|
||||
"- **Purpose:** Official DAARION.city website and integrations\n",
|
||||
"\n",
|
||||
"---\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# GitHub Repositories Configuration\n",
|
||||
"REPOSITORIES = {\n",
|
||||
" \"microdao-daarion\": {\n",
|
||||
" \"name\": \"MicroDAO\",\n",
|
||||
" \"ssh_url\": \"git@github.com:IvanTytar/microdao-daarion.git\",\n",
|
||||
" \"https_url\": \"https://github.com/IvanTytar/microdao-daarion.git\",\n",
|
||||
" \"remote_name\": \"origin\",\n",
|
||||
" \"main_branch\": \"main\",\n",
|
||||
" \"purpose\": \"MicroDAO core code, DAGI Stack, documentation\",\n",
|
||||
" \"clone_cmd\": \"git clone git@github.com:IvanTytar/microdao-daarion.git\"\n",
|
||||
" },\n",
|
||||
" \"daarion-ai-city\": {\n",
|
||||
" \"name\": \"DAARION.city\",\n",
|
||||
" \"ssh_url\": \"git@github.com:DAARION-DAO/daarion-ai-city.git\",\n",
|
||||
" \"https_url\": \"https://github.com/DAARION-DAO/daarion-ai-city.git\",\n",
|
||||
" \"remote_name\": \"daarion-city\",\n",
|
||||
" \"main_branch\": \"main\",\n",
|
||||
" \"purpose\": \"Official DAARION.city website and integrations\",\n",
|
||||
" \"clone_cmd\": \"git clone git@github.com:DAARION-DAO/daarion-ai-city.git\"\n",
|
||||
" }\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"print(\"GitHub Repositories:\")\n",
|
||||
"print(\"=\"*80)\n",
|
||||
"for repo_id, repo in REPOSITORIES.items():\n",
|
||||
" print(f\"\\n{repo['name']} ({repo_id})\")\n",
|
||||
" print(f\" SSH URL: {repo['ssh_url']}\")\n",
|
||||
" print(f\" HTTPS URL: {repo['https_url']}\")\n",
|
||||
" print(f\" Remote: {repo['remote_name']}\")\n",
|
||||
" print(f\" Branch: {repo['main_branch']}\")\n",
|
||||
" print(f\" Purpose: {repo['purpose']}\")\n",
|
||||
" print(f\" Clone: {repo['clone_cmd']}\")\n",
|
||||
"\n",
|
||||
"print(\"\\n\" + \"=\"*80)\n",
|
||||
"print(\"\\nQuick Commands:\")\n",
|
||||
"print(\"\\n# Clone MicroDAO:\")\n",
|
||||
"print(\"git clone git@github.com:IvanTytar/microdao-daarion.git\")\n",
|
||||
"print(\"\\n# Clone DAARION.city:\")\n",
|
||||
"print(\"git clone git@github.com:DAARION-DAO/daarion-ai-city.git\")\n",
|
||||
"print(\"\\n# Add DAARION.city as remote to MicroDAO:\")\n",
|
||||
"print(\"cd microdao-daarion\")\n",
|
||||
"print(\"git remote add daarion-city git@github.com:DAARION-DAO/daarion-ai-city.git\")\n",
|
||||
"print(\"git fetch daarion-city\")\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
@@ -238,32 +319,185 @@
|
||||
" print(f\"{name:<30} {path}\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## 🎤 Мультимодальні Сервіси (НОДА2)\n",
|
||||
"\n",
|
||||
"Нові сервіси для розширення можливостей агентів:\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"\n",
|
||||
"multimodal_services = {\n",
|
||||
" \"STT Service\": {\n",
|
||||
" \"url\": \"http://192.168.1.244:8895\",\n",
|
||||
" \"technology\": \"OpenAI Whisper AI\",\n",
|
||||
" \"features\": [\"Voice→Text\", \"Ukrainian/English/Russian\", \"Telegram integration\"],\n",
|
||||
" \"endpoints\": [\"/api/stt\", \"/api/stt/upload\", \"/health\"],\n",
|
||||
" \"status\": \"✅ Ready\"\n",
|
||||
" },\n",
|
||||
" \"OCR Service\": {\n",
|
||||
" \"url\": \"http://192.168.1.244:8896\",\n",
|
||||
" \"technology\": \"Tesseract + EasyOCR\",\n",
|
||||
" \"features\": [\"Image→Text\", \"Bounding boxes\", \"6 languages\", \"Confidence scores\"],\n",
|
||||
" \"endpoints\": [\"/api/ocr\", \"/api/ocr/upload\", \"/health\"],\n",
|
||||
" \"status\": \"✅ Ready\"\n",
|
||||
" },\n",
|
||||
" \"Web Search\": {\n",
|
||||
" \"url\": \"http://192.168.1.244:8897\",\n",
|
||||
" \"technology\": \"DuckDuckGo + Google\",\n",
|
||||
" \"features\": [\"Real-time search\", \"Region-specific\", \"10+ results\"],\n",
|
||||
" \"endpoints\": [\"/api/search\", \"/health\"],\n",
|
||||
" \"status\": \"✅ Ready\"\n",
|
||||
" },\n",
|
||||
" \"Vector DB\": {\n",
|
||||
" \"url\": \"http://192.168.1.244:8898\",\n",
|
||||
" \"technology\": \"ChromaDB + Sentence Transformers\",\n",
|
||||
" \"features\": [\"Vector database\", \"Semantic search\", \"RAG support\"],\n",
|
||||
" \"endpoints\": [\"/api/collections\", \"/api/documents\", \"/api/search\", \"/health\"],\n",
|
||||
" \"status\": \"✅ Ready\"\n",
|
||||
" }\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"pd.DataFrame(multimodal_services).T\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"ейсу"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"vision_agents = {\n",
|
||||
" \"Sofia\": {\n",
|
||||
" \"model\": \"grok-4.1\",\n",
|
||||
" \"provider\": \"xAI\",\n",
|
||||
" \"supports_vision\": True,\n",
|
||||
" \"supports_files\": True,\n",
|
||||
" \"description\": \"Vision + Code analysis\"\n",
|
||||
" },\n",
|
||||
" \"Spectra\": {\n",
|
||||
" \"model\": \"qwen3-vl:latest\",\n",
|
||||
" \"provider\": \"Ollama\",\n",
|
||||
" \"supports_vision\": True,\n",
|
||||
" \"supports_files\": False,\n",
|
||||
" \"description\": \"Vision + Language\"\n",
|
||||
" }\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"pd.DataFrame(vision_agents).T\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## 📊 Всі порти сервісів (оновлено)\n",
|
||||
"\n",
|
||||
"Повний список всіх сервісів з портами:\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"all_ports = {\n",
|
||||
" \"Frontend\": {\"port\": 8899, \"node\": \"Local\", \"status\": \"✅ Active\"},\n",
|
||||
" \"STT Service\": {\"port\": 8895, \"node\": \"НОДА2\", \"status\": \"✅ Ready\"},\n",
|
||||
" \"OCR Service\": {\"port\": 8896, \"node\": \"НОДА2\", \"status\": \"✅ Ready\"},\n",
|
||||
" \"Web Search\": {\"port\": 8897, \"node\": \"НОДА2\", \"status\": \"✅ Ready\"},\n",
|
||||
" \"Vector DB\": {\"port\": 8898, \"node\": \"НОДА2\", \"status\": \"✅ Ready\"},\n",
|
||||
" \"Router\": {\"port\": 9102, \"node\": \"NODE1\", \"status\": \"🔄 Multimodal\"},\n",
|
||||
" \"Telegram Gateway\": {\"port\": 9200, \"node\": \"NODE1\", \"status\": \"🔄 Enhanced\"},\n",
|
||||
" \"Swapper NODE1\": {\"port\": 8890, \"node\": \"NODE1\", \"status\": \"✅ Active\"},\n",
|
||||
" \"Swapper NODE2\": {\"port\": 8890, \"node\": \"НОДА2\", \"status\": \"✅ Active\"},\n",
|
||||
" \"Agent Cabinet\": {\"port\": 8898, \"node\": \"Local\", \"status\": \"✅ Active\"},\n",
|
||||
" \"Memory Service\": {\"port\": 8000, \"node\": \"NODE1/2\", \"status\": \"✅ Active\"}\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"pd.DataFrame(all_ports).T\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## 🔄 Мультимодальні можливості\n",
|
||||
"\n",
|
||||
"Статус інтеграції різних типів контенту:\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"multimodal_capabilities = {\n",
|
||||
" \"Текст\": {\"frontend\": \"✅\", \"telegram\": \"✅\", \"status\": \"ПРАЦЮЄ\"},\n",
|
||||
" \"Голос→Текст\": {\"frontend\": \"✅\", \"telegram\": \"🔄\", \"status\": \"ІНТЕГРАЦІЯ\"},\n",
|
||||
" \"Зображення→Vision\": {\"frontend\": \"✅\", \"telegram\": \"🔄\", \"status\": \"ІНТЕГРАЦІЯ\"},\n",
|
||||
" \"Зображення→OCR\": {\"frontend\": \"✅\", \"telegram\": \"🔄\", \"status\": \"ІНТЕГРАЦІЯ\"},\n",
|
||||
" \"Документи\": {\"frontend\": \"✅\", \"telegram\": \"⚠️\", \"status\": \"ЧАСТКОВА\"},\n",
|
||||
" \"Веб-пошук\": {\"frontend\": \"✅\", \"telegram\": \"🔄\", \"status\": \"ІНТЕГРАЦІЯ\"},\n",
|
||||
" \"Knowledge Base\": {\"frontend\": \"✅\", \"telegram\": \"❌\", \"status\": \"ГОТОВИЙ\"}\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"pd.DataFrame(multimodal_capabilities).T\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## 📝 Notes & Updates\n",
|
||||
"\n",
|
||||
"### Recent Changes (2025-01-17)\n",
|
||||
"- ✅ **Added Vision Encoder Service** (port 8001) with OpenCLIP ViT-L/14\n",
|
||||
"- ✅ **Added Qdrant Vector Database** (port 6333/6334) for image/text embeddings\n",
|
||||
"- ✅ **GPU Support** via NVIDIA CUDA + Docker runtime\n",
|
||||
"- ✅ **DAGI Router integration** (mode: vision_embed)\n",
|
||||
"- ✅ **768-dim embeddings** for multimodal RAG\n",
|
||||
"- ✅ Created VISION-ENCODER-STATUS.md with full implementation details\n",
|
||||
"- ✅ Added test-vision-encoder.sh smoke tests\n",
|
||||
"- ✅ **Added Node #2** (MacBook Pro M4 Max) as development node\n",
|
||||
"- ✅ Created NODE-2-MACBOOK-SPECS.md with complete specifications\n",
|
||||
"### Recent Changes (2025-11-23)\n",
|
||||
"- ✅ **Swapper Service інтеграція** в кабінети НОД (тільки в `/nodes/node-1`, `/nodes/node-2`)\n",
|
||||
"- ✅ **Оновлення в реальному часі** (кожні 30 секунд) для Swapper Service\n",
|
||||
"- ✅ **Кабінети мікроДАО** з оркестраторами (DAARION, GREENFOOD, ENERGY UNION)\n",
|
||||
"- ✅ **Управління мікроДАО** в кабінеті DAARION (панель управління всіма мікроДАО)\n",
|
||||
"- ✅ **Детальні метрики Swapper Service** (моделі, спеціалісти, конфігурація)\n",
|
||||
"- ✅ **Frontend** (port 8899) з кабінетами НОД та мікроДАО\n",
|
||||
"- ✅ **Agent Cabinet Service** (port 8898) для метрик агентів\n",
|
||||
"\n",
|
||||
"### Network Architecture\n",
|
||||
"- **Nodes:** 2 (1 production + 1 development)\n",
|
||||
"- **Total Services:** 17\n",
|
||||
"- **GPU Services:** 1 (Vision Encoder) + Node #2 (40-core Apple GPU)\n",
|
||||
"- **Vector Databases:** 1 (Qdrant)\n",
|
||||
"- **Total Services:** 19 (додано Frontend + Agent Cabinet)\n",
|
||||
"- **Swapper Service:** Тільки в кабінетах НОД, оновлення в реальному часі\n",
|
||||
"- **MicroDAO Cabinets:** 3 (DAARION, GREENFOOD, ENERGY UNION)\n",
|
||||
"- **Node Cabinets:** 2 (НОДА1, НОДА2)\n",
|
||||
"\n",
|
||||
"### Кабінети НОД\n",
|
||||
"- **НОДА1:** `http://localhost:8899/nodes/node-1`\n",
|
||||
"- **НОДА2:** `http://localhost:8899/nodes/node-2`\n",
|
||||
"- **Swapper Service:** Відображається тільки тут, оновлення кожні 30 секунд\n",
|
||||
"\n",
|
||||
"### Кабінети МікроДАО\n",
|
||||
"- **DAARION:** `http://localhost:8899/microdao/daarion` (оркестратор: DAARWIZZ)\n",
|
||||
"- **GREENFOOD:** `http://localhost:8899/microdao/greenfood` (оркестратор: GREENFOOD)\n",
|
||||
"- **ENERGY UNION:** `http://localhost:8899/microdao/energy-union` (оркестратор: Helion)\n",
|
||||
"\n",
|
||||
"---\n",
|
||||
"\n",
|
||||
"**Last Updated:** 2025-01-17 by WARP AI \n",
|
||||
"**Last Updated:** 2025-11-23 by Auto AI \n",
|
||||
"**Maintained by:** Ivan Tytar & DAARION Team"
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user