- Added support for a new extension, `swarm-assistent`, in `extensions.example.yaml` with a requirement for `ollama`. - Enhanced the README.md to clarify the setup process and provide a quick start guide for using extensions. - Updated documentation in `llm.md` to reflect the opt-in nature of LLM support and provide clearer instructions for enabling it. - Improved the `autocomplete.md` to detail the automatic setup of word lists during the initial launch. - Revised `cli.md` to include new commands and options related to LLM runtime handling and extension management. - Enhanced the `spike-notes.md` to guide users through the first live run with a focus on LLM integration.
5.2 KiB
5.2 KiB
Roadmap
Код v1 (§1–6) готов (включая opt-in LLM, local-watchdog, access-card). Дальше — твой облачный прогон.
Пользовательский путь: setup.md → doctor → up. Чеклист живого GPU: spike-notes.md.
0.0 Квота GPU
- Квота GPU в панели ≥ 1 (иначе тикет — текст в setup §2.3)
- Тикет закрыт / не нужен
- Сервисный пользователь
member+.envзаполнен gpu-rent doctorexit 0
flavors / dry-run — по желанию перед первым up.
0. Ручной spike в панели
Заполняй spike-notes.md. В коде уже есть idle-killer, hold, snapshot, tunnel-watchdog — spike проверяет на живом GPU, не пишет заново.
- RC-файл,
doctorзелёный, квота > 0 flavors/ образ Driver 580 без Docker в пулеup --yes→ Idle backend + seed; время ACTIVE/SSH/Idletunnel→ UI :17801 + API;nvidia-smi- idle-killer timer +
hold; качалка UI → только hold - EXPIRED → tunnel unshelve или
up stop→ диски живы → второйup- Boot snapshot
gpu-rent-boot-ok→ следующий boot из него - ₽/час и ₽/мес диска из панели (в API нет)
Заметки — только в spike-notes.md, без секретов.
1. Каркас
pyproject.toml, пакетgpu_rent, MIT- config / state / Typer: doctor, dry-run, status, open, up, stop, destroy, ssh, logs, tunnel, hold, seed-*, push, pull-output, resize-data, flavors
- Windows:
gpu-rent.bat/gpu-rent.ps1; Unix:gpu-rent.sh; такжеpython -m gpu_rent - setup.md — квота, сервисный пользователь, RC, Civitai
2. OpenStack-клиент
- Token через openstacksdk (
authorize), inventory flavors/квота/volume type - Сеть find-or-create, SG, FIP, volumes, server, unshelve
- Preemptible tag 2.72, BDM boot+data,
delete_on_termination=false - Flavor fallback по
FLAVOR_PREFERENCE(ранжирование + выбор наup) doctor: Keystone, квота, flavor, диск, Civitai.red, манифесты- Тесты с моками / без облака
3. Сессия без туннеля
up/stop/status/ reconcile (compute+диски+SSH+bootstrap SwarmUI)status: диск used/free (SSH), TTL preempt 24 ч, killer/hold; ₽/час — «смотри панель»- Второй
upне создаёт второй GPU resize-dataвверх- Генерация
<repo>/.gpu-rent/id_ed25519+ keypair при первомup seed-modelsна живом диске (идемпотентно, SHA256)push/push-models:Models/,Wildcards/,CustomWorkflows/pull-outputиPULL_OUTPUTнаstop/ повторныйupseed-extensions+systemctl restart swarmuidestroyтолько с флагом
4. Bootstrap SwarmUI + idle-killer
- Идемпотентный first-boot, маркер FS (
/mnt/swarm_data/.gpu-rent-ready) - Bind-mounts data volume →
/opt/swarmui, systemdswarmui(auth SwarmUI ещё на spike) - Clone
extensions.yamlв Extensions / DLNodes до старта UI - Autocomplete: danbooru.csv + Settings.fds; на каждом up — GitHub sha
- Civitai seed по манифесту; без токена — дефолт SwarmUI
- systemd idle-killer + application credential; льгота 45 мин; hold-файл; очередь/loading = busy; затем 30 мин пустой очереди; вооружение после seed/start (качалка UI = hold)
- Один snapshot
gpu-rent-boot-okпосле первого backend Idle; следующие create — из snapshot если есть gpu-rent hold/hold --clearпо SSHreadyпо HTTP, затем backend Idle
5. Туннель
gpu-rent tunnel→ 17801, Ctrl+C не делаетstopgpu-rent open/tunnel --open- EXPIRED → unshelve + reconnect, пока туннель жив
- Сниппет MCP в stdout
6. UX
- Живой список flavors (
gpu-rent flavors/ dry-run / up),--no-spot, печать фоллбека - Оценка ₽ честно («смотри панель»), предупреждение про диск 24/7 и idle-killer
NOTIFY_READY: Windows toast + звук при backend Idle- Пользовательский README поверх
docs/
Вне скоупа v1
generateв CLI, S3 как источник моделей- Автоправка Cursor
mcp.json - Несколько GPU, публичный URL, Terraform как основной путь
- Tailscale (туннеля достаточно; к сети с телефона не подключались)