Files
microdao-daarion/services/node-registry/bootstrap/README.md
Apple 3de3c8cb36 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
2025-11-27 00:19:40 -08:00

135 lines
4.0 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.
# Node Bootstrap Agent
Автоматична реєстрація ноди в Node Registry та підтримка heartbeat.
## Використання
### Локальний запуск
```bash
# Встановити залежності
pip install -r requirements.txt
# Запустити агент
python node_bootstrap.py
```
### З конфігурацією
```bash
# Налаштувати через змінні середовища
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`:
```ini
[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
```
Запустити:
```bash
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
<?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>
```
Запустити:
```bash
launchctl load ~/Library/LaunchAgents/com.daarion.node-bootstrap.plist
launchctl start com.daarion.node-bootstrap
launchctl list | grep daarion
```
## Що робить агент?
1. **Збирає інформацію про систему**: CPU, RAM, диск, GPU, IP адреси
2. **Виявляє capabilities**: Docker, Ollama, GPU, доступні моделі
3. **Реєструє ноду** в Node Registry
4. **Підтримує heartbeat** кожні 30 секунд
5. **Автоматично перереєструється** якщо зв'язок втрачено
## Змінні середовища
- `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%
```