Phase 11: remote UX & network attach (0.11.0)

- Live remote-stack logs over a WebSocket proxied through the central app to
  the agent (/ws/agent-logs/{agent}/{stack}); agent gains a WS log endpoint.
- Deploy to a remote host from the UI: host selector in the New Stack editor
  and template dialog; templates instantiate onto an agent via the proxy.
- Network attach/detach: expandable inspect view per network with
  connect/disconnect + container picker; GET /{id}/containers, POST connect/disconnect.
- Remove dead pages/Placeholder.tsx.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
menzelj
2026-06-08 07:49:20 +00:00
co-authored by Claude Opus 4.8
parent ec7e3e706f
commit 1931500c24
18 changed files with 492 additions and 67 deletions
+24 -1
View File
@@ -6,7 +6,8 @@ as intuitive as Dockge, as capable as Portainer for Compose workflows.
> **Status:** Phase 1 (Core) + Phase 2 (Volumes & GPU) + Phase 3 (Quality of
> Life) + Phase 4 (Operations) + Phase 5 (Multi-host) + Phase 6 (Backup
> destinations) + Phase 7 (Scheduled backups) + Phase 8 (Remote-stack backups)
> + Phase 9 (Networks) + Phase 10 (iGPU passthrough) complete.
> + Phase 9 (Networks) + Phase 10 (iGPU passthrough) + Phase 11 (Remote UX &
> network attach) complete.
## What works today (Phase 1)
@@ -131,6 +132,19 @@ as intuitive as Dockge, as capable as Portainer for Compose workflows.
resolve inside images, so the numeric GID is what actually grants access. The
GPU selector shows the detected GIDs; removal cleans them (and `LIBVA_DRIVER_NAME`).
### Phase 11 — Remote UX & network attach
- **Live remote logs**: remote-stack logs now stream over a WebSocket proxied
through the central app to the agent (`/ws/agent-logs/{agent}/{stack}`), instead
of polling — same live viewer as local stacks.
- **Deploy to a remote host from the UI**: the New Stack editor and the template
dialog gained a *host* selector. Pick an online agent and the stack is created
(and optionally started) on that host; you land on its remote detail page.
- **Network attach/detach**: each network row on the Networks page expands to an
inspect view listing connected containers, with admin controls to disconnect a
container or connect any container on the host (`POST /api/networks/{id}/connect`
/ `/disconnect`).
## Deploying an agent on another host
```bash
@@ -292,6 +306,15 @@ DELETE /api/networks/{id} POST /api/networks/prune
DELETE /api/stacks/{id}?delete_files= (stack delete, now surfaced in the UI)
```
### Phase 11 endpoints
```
WS /ws/agent-logs/{agent_id}/{stack_id} (live remote logs, proxied to the agent)
GET /api/networks/{id}/containers POST /api/networks/{id}/connect | /disconnect
POST /api/agents/{id}/stacks (create a stack on a remote host — now in the UI)
POST /api/templates/{id}/instantiate {agent_id} (instantiate a template onto a remote host)
```
## Security notes
- The Docker socket is only ever touched by the backend process; it is never