Uninstall xfce4-power-manager package which causes annoying popup
dialog on container startup. Power management is not needed in
a containerized environment.
This provides a cleaner desktop experience on first launch.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changed start-novnc.sh to use a simple sleep instead of checking
VNC availability with netcat. This avoids the need to install
netcat and simplifies the startup sequence.
Since supervisor starts services in priority order (VNC=10, noVNC=20),
a 5-second sleep is sufficient for VNC to be ready.
Also added netcat to Dockerfile for future use if needed.
Container now fully functional:
- VNC server running on port 5901
- noVNC web interface on port 6901
- Computer-server API on port 8000
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed two critical issues:
1. Firefox syspref.js was being created as directory instead of file
- Changed mkdir to create parent directory only
- Use > for first echo to create file
2. TigerVNC refusing to start without authentication
- Changed SecurityTypes from None to VncAuth
- Added --I-KNOW-THIS-IS-INSECURE flag for development
Container now successfully:
- Builds on ARM64 Mac
- Starts all services (VNC, noVNC, computer-server)
- Accessible on ports 5901 (VNC), 6901 (noVNC), 8000 (API)
Also added Dockerfile.slim as lighter alternative.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Create a lightweight alternative to Kasm-based container with minimal
dependencies. Features vanilla Ubuntu 22.04 with XFCE, TigerVNC, noVNC,
and computer-server pre-installed.
Key features:
- Vanilla XFCE desktop environment
- TigerVNC server (port 5901)
- noVNC web interface (port 6901)
- computer-server WebSocket API (port 8000)
- Python 3.11 with automation tools
- Firefox with telemetry disabled
- Supervisord for process management
- Persistent storage support
Benefits over Kasm:
- Reduced dependencies (no KasmWeb infrastructure)
- Smaller image size
- Full control over all components
- Easy customization
- Independent maintenance
Includes:
- Comprehensive README and quickstart guide
- Makefile for common operations
- docker-compose.yml for orchestration
- Example Python scripts
- Startup scripts for all services
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This pull request introduces a new GitHub Actions workflow for building and publishing the CUA Ubuntu Docker container. The workflow automates image building and publishing for both pull requests and pushes to the main branch, supporting multiple platforms and leveraging Docker Hub for image distribution.
Docker workflow automation:
Added .github/workflows/docker-publish-kasm.yml to automate building and publishing the cua-ubuntu Docker image for PRs and the main branch, including support for multi-platform builds (linux/amd64, linux/arm64).
Integrated Docker Buildx for multi-platform builds and caching to optimize build times and resource usage.
Docker Hub integration:
Configured workflow to authenticate with Docker Hub using a secret token and push images to the trycua organization.
Automatically tags images based on the event type (commit SHA for PRs, latest for main branch) and provides image digest output for traceability.
- `asyncio` import and `asyncio.run()`
- `async with Computer()` context manager
- Full `Computer()` initialization with all required parameters
- Proper message format as a list of dictionaries
- Complete `async for` loop with item iteration
Remove sensitive API key from documentation
Removed sensitive API key from agent-loops.mdx.