Epic: v2.1 Docker Agent Development
Component: Docker Agent - VNC Streaming
Assignee: Builder (Agent 2)
Milestone: v2.1
Estimated Effort: 8-12 hours
Overview
Implement VNC tunneling for Docker-based sessions to enable browser-based access to GUI applications.
Requirements
VNC Tunnel
Architecture
User Browser → Control Plane VNC Proxy → Docker Agent VNC Tunnel → Container VNC Server
Implementation Approach
Similar to K8s agent but using Docker networking:
K8s Agent: Uses port-forward via Kubernetes API
Docker Agent: Uses Docker port mapping or docker exec
Files to Create
agents/docker-agent/
└── pkg/
└── vnc/
├── tunnel.go # VNC tunnel management
└── handler.go # VNC command handler
VNC Commands
initialize_vnc_tunnel - Create tunnel to container VNC port
vnc_ready - Notify Control Plane tunnel is ready
vnc_closed - Cleanup when browser disconnects
Docker Networking Options
Option A: Port Mapping (RECOMMENDED)
// Create container with VNC port mapped to random host port
containerConfig := &container.Config{
Image: template.Image,
ExposedPorts: nat.PortSet{
"3000/tcp": struct{}{},
},
}
hostConfig := &container.HostConfig{
PortBindings: nat.PortMap{
"3000/tcp": []nat.PortBinding{
{HostIP: "0.0.0.0", HostPort: "0"}, // Random port
},
},
}
Option B: Docker Network Bridge
Connect agent container to same Docker network as session containers
Testing Checklist
Performance Targets
- Tunnel Creation: < 2 seconds (matching K8s agent)
- VNC Latency: < 100ms (local network)
- Concurrent Tunnels: 10+ simultaneous sessions
Success Criteria
- ✅ E2E VNC streaming works from browser to Docker container
- ✅ Performance meets targets
- ✅ VNC tunnels stable and reliable
- ✅ No resource leaks on tunnel cleanup
Depends On: #151 (Docker Agent Core Implementation)
Related: #131 (K8s Agent VNC RBAC - reference implementation)
Epic: v2.1 Docker Agent Development
Component: Docker Agent - VNC Streaming
Assignee: Builder (Agent 2)
Milestone: v2.1
Estimated Effort: 8-12 hours
Overview
Implement VNC tunneling for Docker-based sessions to enable browser-based access to GUI applications.
Requirements
VNC Tunnel
Architecture
Implementation Approach
Similar to K8s agent but using Docker networking:
K8s Agent: Uses
port-forwardvia Kubernetes APIDocker Agent: Uses Docker
port mappingordocker execFiles to Create
VNC Commands
initialize_vnc_tunnel- Create tunnel to container VNC portvnc_ready- Notify Control Plane tunnel is readyvnc_closed- Cleanup when browser disconnectsDocker Networking Options
Option A: Port Mapping (RECOMMENDED)
Option B: Docker Network Bridge
Connect agent container to same Docker network as session containers
Testing Checklist
Performance Targets
Success Criteria
Depends On: #151 (Docker Agent Core Implementation)
Related: #131 (K8s Agent VNC RBAC - reference implementation)