Introduction
Neko runs a full desktop browser inside a Docker container and streams it to your web browser using WebRTC. Multiple users can join the same session to browse together, watch videos synchronously, or use a browser in a secure sandboxed environment hosted on your own infrastructure.
What Neko Does
- Runs a full browser (Firefox, Chromium, Brave, or others) in a Docker container
- Streams the browser view to clients via low-latency WebRTC video and audio
- Supports multi-user sessions with shared cursor control and chat
- Provides admin and viewer roles with keyboard and mouse control handoff
- Isolates browsing activity from your local machine for privacy and security
Architecture Overview
Neko runs an Xorg display server with a window manager inside Docker, rendering a browser to a virtual framebuffer. GStreamer captures the screen and audio, encoding them into VP8/VP9/H264 video and Opus audio streams delivered via WebRTC through a Go-based signaling server. The frontend is a Vue.js application that handles WebRTC negotiation, video playback, and remote input.
Self-Hosting & Configuration
- Deploy via Docker with a single command, choosing from Firefox, Chromium, Brave, or Tor Browser images
- Configure screen resolution, frame rate, and video codec via environment variables
- Set admin and viewer passwords for access control to the shared session
- Open a UDP port range for WebRTC media traffic alongside the HTTP management port
- Customize with persistent browser profiles by mounting a volume for user data
Key Features
- Ultra-low-latency streaming via WebRTC with hardware-accelerated video encoding support
- Multi-user shared browsing with real-time cursor visibility and control passing
- Built-in text chat and emoji reactions for collaborative sessions
- Multiple browser engine choices including Firefox, Chromium, Brave, Tor, and VLC
- Clipboard sharing between the local machine and the remote browser session
Comparison with Similar Tools
- Apache Guacamole — Clientless remote desktop gateway supporting VNC/RDP/SSH, but higher latency and no multi-user shared browsing
- Kasm Workspaces — Enterprise browser isolation platform with more features, but heavier and partially proprietary
- Webtop — Full Linux desktop in Docker via web browser, but not optimized for shared multi-user sessions
- Browserless — Headless browser automation service, not designed for interactive shared browsing
- Sysbox — Container runtime for VMs-in-containers, a different scope focused on system containers
FAQ
Q: What is the typical latency for the video stream? A: WebRTC provides sub-100ms latency in most local network setups. Over the internet, latency depends on network conditions but is typically 50-200ms.
Q: Can multiple users control the browser simultaneously? A: One user holds control at a time. The admin can pass control to viewers or take it back. All users see the same screen and cursor in real-time.
Q: Does Neko support GPU acceleration? A: Yes. Neko supports NVIDIA GPU hardware encoding via NVENC for lower CPU usage and better video quality at high resolutions.
Q: Can I use Neko for automated browser testing? A: While Neko is designed for interactive use, you can connect automation tools to the browser inside the container. For dedicated testing, consider Browserless or Playwright.