Display
A full Linux desktop streamed to any browser. Launch any X11 app — Firefox, VS Code, GIMP, LibreOffice — and reach it from a URL. The HTML5 display client encodes the stream as H264, WebP, JPEG, or PNG, all tuned by query parameters. No VNC client, no RDP client, no desktop app. Just a browser tab.
1 import requests
2
3 r = requests.get(
4 '.../screenshot'
5 )
6 with open('f.png', 'wb') as f:
7 f.write(r.content)
8 # 1920x1080 PNG
Five ways to use Display
Display adapts to how you work. Run a full Linux desktop in a tab, share it with your team, capture it programmatically, embed it in your own UI, or tune it for low-bandwidth links — all from the same URL.
Full Linux Desktop
Run any X11 application — browsers, IDEs, image editors — in a sandboxed container and stream it to a browser tab. No VNC, no RDP, no native client.
# before / after
- vncviewer user@server:5901 (install client, open port)
+ Open the display URL in any browser — works on any device
# Check the display is up
$ curl /api/v1/display/health
> {"status": "ok"}
# Inspect the session + its screenshots
$ curl /api/v1/display/info
> {
> "display": 1,
> "screenshots": [
> { "timestamp": "1749541160",
> "full": { "width": 1920, "height": 1080 } }
> ]
> }
One URL, every parameter
Everything about a display session is controlled by the URL. Flip a chip below and the URL updates — then open it, iframe it, or send it to a teammate.
Session
Who can connect, who can take over, whether to reconnect on drops.
Media & Features
Sound, clipboard sync, file transfer, printing — lock down or open up.
Encoding
Auto picks the codec by default. Force H264 for motion, WebP for balance, PNG for lossless, JPEG for metered links.
Bandwidth cap
Hard cap on bits per second. 0 means unlimited.
Keyboard layout
Layout code. Use swap_keys=true on macOS for Cmd to Ctrl mapping.
Every pixel is an HTTP response
Capture screenshots, pull thumbnails, and read session metadata over plain HTTP. The display is addressable, observable, and programmable end to end.
View All Endpoints# Capture the live desktop as a PNG
curl -X GET \
https://abc123-def456-display-1.node-us-1.containers.hoody.com/api/v1/display/screenshot \
-H "Authorization: Bearer $TOKEN" \
-o frame.png
# Or get base64 + metadata in JSON
curl "https://abc123-def456-display-1.node-us-1.containers.hoody.com/api/v1/display/screenshot?base64=true" \
-H "Authorization: Bearer $TOKEN"
# Response:
# {
# "image": { "data": "iVBORw0KG..." },
# "info": {
# "full": { "width": 1920, "height": 1080 },
# "timestamp": "1749541160"
# }
# }
Desktops, on demand
A URL-addressable desktop opens up workflows that were never practical before. No installs, no clients, no OS lock-in.
AI Computer Use
Agents that click, type, and read pixels. The screenshot API feeds vision models; keyboard and mouse are HTTP. Give Claude or GPT a full Linux desktop with a URL.
Remote Work Desktops
One desktop per employee, centrally managed, accessible from any device. Data never leaves the container. Onboard in seconds — share a URL.
Development Environments
Cursor, VS Code, JetBrains, full browsers — all running in the container, not on the laptop. Open a URL on a Chromebook and have a senior workstation.
SaaS Desktop Apps
Ship Linux-only software to any browser. Legacy CAD tools, scientific apps, trading terminals — wrap them in a container and charge per URL.
Monitoring Dashboards
320x180 thumbnails let you tile dozens of live desktops in a single view. Refresh every few seconds, flag anomalies, drill into the full display with one click.
Shared Presentations
?sharing=true&readonly=true turns any desktop into a broadcast. Presenter drives, audience watches — no screen-share software required.
11 endpoints, full observability
Screenshots, thumbnails, session metadata, and a health check — eleven read endpoints, every one a plain HTTP GET that returns JSON or raw image bytes.
Screenshots
5 endpointscurl .../screenshot -o frame.png → 1920x1080 PNG
Thumbnails
3 endpointscurl .../thumbnail/last → 320x180 PNG preview
Info & Metadata
2 endpointscurl .../display/info → {display: 1, screenshots: [...]}
Health
1 endpointcurl .../display/health → {status: "ok"}
Everything built in
Every feature ships ready to use. No plugins, no drivers, no client installs.
Video Encoding
Pick a codec per session with ?encoding=. H264, VP8, and VP9 for smooth motion, WebP for balance, PNG and raw RGB for lossless, JPEG for metered links. Auto selects for you by default.
Clipboard Sync
Copy on your laptop, paste in the remote desktop — and back again. Plain text, HTML, and UTF-8 formats are all supported.
Touch Devices
Works on phones and tablets: add ?keyboard=true for an on-screen virtual keyboard, swap_keys for Cmd/Ctrl, and reverse-scroll options.
Auto-Reconnect
Reconnect is on by default — the session restores when Wi-Fi flips or your laptop wakes, while the desktop keeps running server-side. Set ?reconnect=false to opt out.
Read-Only Mode
?readonly=true locks input for view-only access. Perfect for dashboards, presentations, and handing out demo links.
Feature Flags
Toggle sound, printing, clipboard, and file transfer independently. Lock down an environment for security or strip features for performance.
Put a desktop in a URL
Display is one of 18 Kit services that ship with every Hoody container. No installers, no clients, no VPN — just a browser tab.