- 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
4.0 KiB
4.0 KiB
Node Bootstrap Agent
Автоматична реєстрація ноди в Node Registry та підтримка heartbeat.
Використання
Локальний запуск
# Встановити залежності
pip install -r requirements.txt
# Запустити агент
python node_bootstrap.py
З конфігурацією
# Налаштувати через змінні середовища
export NODE_REGISTRY_URL="http://144.76.224.179:9205"
export NODE_ROLE="development"
export NODE_TYPE="router"
export HEARTBEAT_INTERVAL="30"
python node_bootstrap.py
Як systemd service (Linux)
Створити файл /etc/systemd/system/node-bootstrap.service:
[Unit]
Description=Node Bootstrap Agent
After=network.target
[Service]
Type=simple
User=daarion
Environment="NODE_REGISTRY_URL=http://144.76.224.179:9205"
Environment="NODE_ROLE=production"
Environment="NODE_TYPE=router"
WorkingDirectory=/opt/microdao/node-bootstrap
ExecStart=/usr/bin/python3 /opt/microdao/node-bootstrap/node_bootstrap.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Запустити:
sudo systemctl daemon-reload
sudo systemctl enable node-bootstrap
sudo systemctl start node-bootstrap
sudo systemctl status node-bootstrap
Як launchd service (macOS)
Створити файл ~/Library/LaunchAgents/com.daarion.node-bootstrap.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.daarion.node-bootstrap</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/python3</string>
<string>/Users/apple/github-projects/microdao-daarion/services/node-registry/bootstrap/node_bootstrap.py</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>NODE_REGISTRY_URL</key>
<string>http://144.76.224.179:9205</string>
<key>NODE_ROLE</key>
<string>development</string>
<key>NODE_TYPE</key>
<string>router</string>
</dict>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/node-bootstrap.log</string>
<key>StandardErrorPath</key>
<string>/tmp/node-bootstrap.error.log</string>
</dict>
</plist>
Запустити:
launchctl load ~/Library/LaunchAgents/com.daarion.node-bootstrap.plist
launchctl start com.daarion.node-bootstrap
launchctl list | grep daarion
Що робить агент?
- Збирає інформацію про систему: CPU, RAM, диск, GPU, IP адреси
- Виявляє capabilities: Docker, Ollama, GPU, доступні моделі
- Реєструє ноду в Node Registry
- Підтримує heartbeat кожні 30 секунд
- Автоматично перереєструється якщо зв'язок втрачено
Змінні середовища
NODE_REGISTRY_URL- URL Node Registry (default:http://localhost:9205)NODE_ROLE- Роль ноди:production,development,backup,worker(default:worker)NODE_TYPE- Тип ноди:router,gateway,worker,orchestrator(default:worker)HEARTBEAT_INTERVAL- Інтервал heartbeat в секундах (default:30)
Логи
Агент виводить детальні логи:
2025-11-23 10:00:00 - __main__ - INFO - 🚀 Initializing Node Bootstrap
2025-11-23 10:00:00 - __main__ - INFO - 📡 Registry URL: http://localhost:9205
2025-11-23 10:00:01 - __main__ - INFO - 📝 Registering node with registry...
2025-11-23 10:00:02 - __main__ - INFO - ✅ Node registered successfully: node-macbook-pro-a1b2c3d4
2025-11-23 10:00:02 - __main__ - INFO - 💓 Starting heartbeat loop (interval: 30s)
2025-11-23 10:00:32 - __main__ - DEBUG - 💓 Heartbeat sent: CPU=15.2% MEM=45.8%