docs: add Cursor Agent SSH access instructions for NODE1

- Add detailed SSH connection guide for Cursor agents
- Include common commands, safety checks, and troubleshooting
- Add interactive session example and best practices
- Update INFRASTRUCTURE.md with section for Cursor agents
- Update infrastructure_quick_ref.ipynb with SSH access configuration
- Provide complete workflow examples for remote operations

Co-Authored-By: Warp <agent@warp.dev>
This commit is contained in:
Apple
2026-01-08 12:03:24 -08:00
parent e829fe66f2
commit a1091b03a3
2 changed files with 223 additions and 1 deletions

View File

@@ -86,6 +86,159 @@ git fetch daarion-city
---
## 🤖 Для агентів Cursor: Робота на НОДА1
### SSH підключення до НОДА1
**Базова команда:**
```bash
ssh root@144.76.224.179
```
**Важливо для агентів:**
- SSH ключ має бути налаштований на локальній машині користувача
- Якщо ключа немає, підключення запитає пароль (який має надати користувач)
- Після підключення ви працюєте від імені `root`
### Робочі директорії на НОДА1
```bash
# Основний проєкт
cd /opt/microdao-daarion
# Docker контейнери
docker ps # список запущених контейнерів
docker logs <container_name> # логи контейнера
docker exec -it <container_name> bash # зайти в контейнер
# Логи системи
cd /var/log
tail -f /var/log/syslog # системні логи
journalctl -u docker -f # Docker логи в реальному часі
# Скрипти безпеки
ls -la /root/*.sh # firewall та моніторинг скрипти
```
### Типові завдання для агентів
**1. Перевірити статус сервісів:**
```bash
ssh root@144.76.224.179 "docker ps --format 'table {{.Names}}\\t{{.Status}}'"
```
**2. Перезапустити сервіс:**
```bash
ssh root@144.76.224.179 "docker restart <service_name>"
```
**3. Переглянути логи:**
```bash
ssh root@144.76.224.179 "docker logs --tail 50 <service_name>"
```
**4. Виконати команду в контейнері:**
```bash
ssh root@144.76.224.179 "docker exec <container_name> <command>"
```
**5. Git operations:**
```bash
ssh root@144.76.224.179 "cd /opt/microdao-daarion && git pull origin main"
ssh root@144.76.224.179 "cd /opt/microdao-daarion && git status"
```
**6. Перезапустити Docker Compose:**
```bash
ssh root@144.76.224.179 "cd /opt/microdao-daarion && docker compose restart"
```
### Interactive режим (для складних завдань)
Якщо потрібно виконати кілька команд підряд, використовуйте interactive SSH:
```bash
# Запустіть інтерактивну сесію
ssh root@144.76.224.179
# Тепер ви на сервері, можете виконувати команди:
cd /opt/microdao-daarion
docker ps
docker logs dagi-router --tail 20
exit # вийти з SSH
```
### Важливі нотатки для агентів
1. **Завжди перевіряйте, де ви знаходитесь:**
```bash
hostname # має показати назву сервера Hetzner
pwd # поточна директорія
```
2. **Не виконуйте деструктивні команди без підтвердження:**
- `docker rm -f` (видалення контейнерів)
- `rm -rf` (видалення файлів)
- Будь-які зміни в production без backup
3. **Перевіряйте статус перед змінами:**
```bash
docker ps # що зараз працює
docker compose ps # статус docker compose сервісів
systemctl status docker # статус Docker daemon
```
4. **Логування ваших дій:**
- Всі важливі зміни документуйте
- Використовуйте `git commit` з детальними повідомленнями
- Включайте `Co-Authored-By: Cursor Agent <agent@cursor.sh>`
### Приклад сесії для Cursor Agent
```bash
# 1. Підключення
ssh root@144.76.224.179
# 2. Перехід до проєкту
cd /opt/microdao-daarion
# 3. Перевірка статусу
git status
docker ps --format "table {{.Names}}\\t{{.Status}}"
# 4. Оновлення коду (якщо потрібно)
git pull origin main
# 5. Перезапуск сервісів (якщо потрібно)
docker compose restart dagi-router
# 6. Перевірка логів
docker logs dagi-router --tail 20
# 7. Вихід
exit
```
### Troubleshooting
**Якщо SSH не підключається:**
1. Перевірте, чи сервер онлайн: `ping 144.76.224.179`
2. Перевірте SSH ключі: `ls -la ~/.ssh/`
3. Спробуйте з verbose: `ssh -v root@144.76.224.179`
**Якщо контейнери не працюють:**
1. Перевірте Docker: `systemctl status docker`
2. Перевірте логи: `journalctl -u docker --no-pager -n 50`
3. Перезапустіть Docker: `systemctl restart docker`
**Якщо потрібен rescue mode:**
1. Зайдіть в Hetzner Robot: https://robot.hetzner.com
2. Активуйте rescue system
3. Зробіть Reset
4. Підключіться через SSH з rescue паролем
---
## 🚀 Services & Ports (Docker Compose)

View File

@@ -210,7 +210,76 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## 🎨 Vision Encoder Service (NEW)\n",
"🤖 Для агентів Cursor: SSH доступ до НОДА1\n",
"\n",
"### Підключення до Production Server\n",
"\n",
"**SSH команда:**\n",
"```bash\n",
"ssh root@144.76.224.179\n",
"```\n",
"\n",
"**Робоча директорія:** `/opt/microdao-daarion`\n",
"\n",
"**Важливо:**\n",
"- SSH ключ має бути налаштований локально\n",
"- Працюєте від імені `root`\n",
"- Завжди перевіряйте `hostname` і `pwd` перед виконанням команд\n",
"- Не виконуйте деструктивні команди без підтвердження\n",
"\n",
"**Повна інструкція:** див. `INFRASTRUCTURE.md` → Для агентів Cursor"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# SSH Access for Cursor Agents\n",
"NODE1_ACCESS = {\n",
" \"host\": \"144.76.224.179\",\n",
" \"user\": \"root\",\n",
" \"ssh_command\": \"ssh root@144.76.224.179\",\n",
" \"project_root\": \"/opt/microdao-daarion\",\n",
" \"auth\": \"SSH key (configured locally)\",\n",
" \"common_commands\": [\n",
" \"docker ps\",\n",
" \"docker compose ps\",\n",
" \"docker logs <container_name> --tail 50\",\n",
" \"git status\",\n",
" \"git pull origin main\",\n",
" \"systemctl status docker\"\n",
" ],\n",
" \"safety_checks\": [\n",
" \"Always verify hostname before executing commands\",\n",
" \"Never use 'rm -rf' without confirmation\",\n",
" \"Never use 'docker rm -f' on production containers\",\n",
" \"Always check current directory with 'pwd'\",\n",
" \"Document all changes in git commits\"\n",
" ]\n",
"}\n",
"\n",
"print(\"🔐 SSH Access to NODE1:\")\n",
"print(\"=\"*60)\n",
"print(f\"Host: {NODE1_ACCESS['host']}\")\n",
"print(f\"User: {NODE1_ACCESS['user']}\")\n",
"print(f\"Command: {NODE1_ACCESS['ssh_command']}\")\n",
"print(f\"Project: {NODE1_ACCESS['project_root']}\")\n",
"print(f\"Auth: {NODE1_ACCESS['auth']}\")\n",
"print(\"\\nCommon Commands:\")\n",
"for cmd in NODE1_ACCESS['common_commands']:\n",
" print(f\" - {cmd}\")\n",
"print(\"\\n⚠ Safety Checks:\")\n",
"for check in NODE1_ACCESS['safety_checks']:\n",
" print(f\" • {check}\")\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"⌘ Vision Encoder Service (NEW)\n",
"\n",
"### Overview\n",
"- **Service:** Vision Encoder (OpenCLIP ViT-L/14)\n",