{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 🚀 Infrastructure Quick Reference — DAARION & MicroDAO\n", "\n", "**Версія:** 2.0.0 \n", "**Останнє оновлення:** 2025-11-23 \n", "\n", "Цей notebook містить швидкий довідник по серверах, репозиторіях та endpoints для DAGI Stack.\n", "\n", "**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" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# 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", " \"devtools\": {\"port\": 8008, \"container\": \"dagi-devtools\", \"health\": \"http://localhost:8008/health\"},\n", " \"crewai\": {\"port\": 9010, \"container\": \"dagi-crewai\", \"health\": \"http://localhost:9010/health\"},\n", " \"rbac\": {\"port\": 9200, \"container\": \"dagi-rbac\", \"health\": \"http://localhost:9200/health\"},\n", " \"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\", \"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", " \"qdrant\": {\"port\": 6333, \"container\": \"dagi-qdrant\", \"health\": \"http://localhost:6333/healthz\"},\n", " \"grafana\": {\"port\": 3000, \"container\": \"grafana\", \"health\": \"http://localhost:3000\"},\n", " \"prometheus\": {\"port\": 9090, \"container\": \"prometheus\", \"health\": \"http://localhost:9090\"},\n", " \"ollama\": {\"port\": 11434, \"container\": \"ollama\", \"health\": \"http://localhost:11434/api/tags\"}\n", "}\n", "\n", "print(\"Service\\t\\t\\tPort\\tContainer\\t\\t\\tHealth Endpoint\")\n", "print(\"=\"*100)\n", "for name, service in SERVICES.items():\n", " health = service['health'] or \"N/A\"\n", " gpu = \" [GPU]\" if service.get('gpu') else \"\"\n", " print(f\"{name.upper():<20} {service['port']:<7} {service['container']:<30} {health}{gpu}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 🖥️ Network Nodes\n", "\n", "### Node #1: Production Server (Hetzner)\n", "- **Node ID:** node-1-hetzner-gex44\n", "- **IP:** 144.76.224.179\n", "- **Role:** Production Router + Gateway + All Services (24/7)\n", "- **Location:** Hetzner Cloud (Germany)\n", "\n", "### Node #2: Development Node (MacBook Pro M4 Max)\n", "- **Node ID:** node-2-macbook-m4max\n", "- **Local IP:** 192.168.1.244\n", "- **Role:** Development + Testing + Backup Router\n", "- **Specs:** M4 Max (16 cores), 64GB RAM, 2TB SSD, 40-core GPU\n", "- **Location:** Local Network (Ivan's Office)\n", "- **Docs:** [NODE-2-MACBOOK-SPECS.md](../NODE-2-MACBOOK-SPECS.md)\n", "\n", "---" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Network Nodes Configuration\n", "NODES = {\n", " \"node-1\": {\n", " \"name\": \"Hetzner GEX44\",\n", " \"ip\": \"144.76.224.179\",\n", " \"local_ip\": None,\n", " \"role\": \"production\",\n", " \"uptime\": \"24/7\",\n", " \"ssh\": \"root@144.76.224.179\",\n", " \"domain\": \"gateway.daarion.city\",\n", " \"services\": \"All (17 services)\",\n", " \"specs\": \"See SYSTEM-INVENTORY.md\"\n", " },\n", " \"node-2\": {\n", " \"name\": \"MacBook Pro M4 Max\",\n", " \"ip\": None,\n", " \"local_ip\": \"192.168.1.244\",\n", " \"role\": \"development\",\n", " \"uptime\": \"on-demand\",\n", " \"ssh\": \"apple@192.168.1.244\",\n", " \"domain\": None,\n", " \"services\": \"Core only (Router, DevTools, Memory, Ollama)\",\n", " \"specs\": \"M4 Max, 16 cores, 64GB RAM, 2TB SSD, 40-core GPU\"\n", " }\n", "}\n", "\n", "print(\"DAGI Stack Network Nodes:\")\n", "print(\"=\"*80)\n", "for node_id, node in NODES.items():\n", " print(f\"\\n{node_id.upper()}: {node['name']}\")\n", " print(f\" Role: {node['role']}\")\n", " print(f\" IP: {node['ip'] or node['local_ip']}\")\n", " print(f\" SSH: {node['ssh']}\")\n", " print(f\" Uptime: {node['uptime']}\")\n", " print(f\" Services: {node['services']}\")\n", " if node['domain']:\n", " print(f\" Domain: https://{node['domain']}\")\n", " 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": {}, "source": [ "## 🎨 Vision Encoder Service (NEW)\n", "\n", "### Overview\n", "- **Service:** Vision Encoder (OpenCLIP ViT-L/14)\n", "- **Port:** 8001\n", "- **GPU:** Required (NVIDIA CUDA)\n", "- **Embedding Dimension:** 768\n", "- **Vector DB:** Qdrant (port 6333/6334)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Vision Encoder Configuration\n", "VISION_ENCODER = {\n", " \"service\": \"vision-encoder\",\n", " \"port\": 8001,\n", " \"container\": \"dagi-vision-encoder\",\n", " \"gpu_required\": True,\n", " \"model\": \"ViT-L-14\",\n", " \"pretrained\": \"openai\",\n", " \"embedding_dim\": 768,\n", " \"endpoints\": {\n", " \"health\": \"http://localhost:8001/health\",\n", " \"info\": \"http://localhost:8001/info\",\n", " \"embed_text\": \"http://localhost:8001/embed/text\",\n", " \"embed_image\": \"http://localhost:8001/embed/image\",\n", " \"docs\": \"http://localhost:8001/docs\"\n", " },\n", " \"qdrant\": {\n", " \"host\": \"qdrant\",\n", " \"port\": 6333,\n", " \"grpc_port\": 6334,\n", " \"health\": \"http://localhost:6333/healthz\"\n", " }\n", "}\n", "\n", "print(\"Vision Encoder Service Configuration:\")\n", "print(\"=\"*80)\n", "print(f\"Model: {VISION_ENCODER['model']} ({VISION_ENCODER['pretrained']})\")\n", "print(f\"Embedding Dimension: {VISION_ENCODER['embedding_dim']}\")\n", "print(f\"GPU Required: {VISION_ENCODER['gpu_required']}\")\n", "print(f\"\\nEndpoints:\")\n", "for name, url in VISION_ENCODER['endpoints'].items():\n", " print(f\" {name:15} {url}\")\n", "print(f\"\\nQdrant Vector DB:\")\n", "print(f\" HTTP: http://localhost:{VISION_ENCODER['qdrant']['port']}\")\n", "print(f\" gRPC: localhost:{VISION_ENCODER['qdrant']['grpc_port']}\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Vision Encoder Testing Commands\n", "VISION_ENCODER_TESTS = {\n", " \"Health Check\": \"curl http://localhost:8001/health\",\n", " \"Model Info\": \"curl http://localhost:8001/info\",\n", " \"Text Embedding\": '''curl -X POST http://localhost:8001/embed/text -H \"Content-Type: application/json\" -d '{\"text\": \"DAARION governance\", \"normalize\": true}' ''',\n", " \"Image Embedding\": '''curl -X POST http://localhost:8001/embed/image -H \"Content-Type: application/json\" -d '{\"image_url\": \"https://example.com/image.jpg\", \"normalize\": true}' ''',\n", " \"Via Router (Text)\": '''curl -X POST http://localhost:9102/route -H \"Content-Type: application/json\" -d '{\"mode\": \"vision_embed\", \"message\": \"embed text\", \"payload\": {\"operation\": \"embed_text\", \"text\": \"test\", \"normalize\": true}}' ''',\n", " \"Qdrant Health\": \"curl http://localhost:6333/healthz\",\n", " \"Run Smoke Tests\": \"./test-vision-encoder.sh\"\n", "}\n", "\n", "print(\"Vision Encoder Testing Commands:\")\n", "print(\"=\"*80)\n", "for name, cmd in VISION_ENCODER_TESTS.items():\n", " print(f\"\\n{name}:\")\n", " print(f\" {cmd}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 📖 Documentation Links (UPDATED)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Documentation References (UPDATED)\n", "DOCS = {\n", " \"Main Guide\": \"../WARP.md\",\n", " \"Infrastructure\": \"../INFRASTRUCTURE.md\",\n", " \"Agents Map\": \"../docs/agents.md\",\n", " \"RAG Ingestion Status\": \"../RAG-INGESTION-STATUS.md\",\n", " \"HMM Memory Status\": \"../HMM-MEMORY-STATUS.md\",\n", " \"Crawl4AI Status\": \"../CRAWL4AI-STATUS.md\",\n", " \"Vision Encoder Status\": \"../VISION-ENCODER-STATUS.md\",\n", " \"Vision Encoder Deployment\": \"../services/vision-encoder/README.md\",\n", " \"Repository Management\": \"../DAARION_CITY_REPO.md\",\n", " \"Server Setup\": \"../SERVER_SETUP_INSTRUCTIONS.md\",\n", " \"Deployment\": \"../DEPLOY-NOW.md\",\n", " \"Helion Status\": \"../STATUS-HELION.md\",\n", " \"Architecture Index\": \"../docs/cursor/README.md\",\n", " \"API Reference\": \"../docs/api.md\",\n", " \"Node #2 Specs\": \"../NODE-2-MACBOOK-SPECS.md\"\n", "}\n", "\n", "print(\"Documentation Quick Links:\")\n", "print(\"=\"*80)\n", "for name, path in DOCS.items():\n", " 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-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:** 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-11-23 by Auto AI \n", "**Maintained by:** Ivan Tytar & DAARION Team" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.0" } }, "nbformat": 4, "nbformat_minor": 4 }