Infinite canvas: every window on one canvas
A SwiftUI example on the Cua Spaces SDK: a hotkey opens a zoomable canvas of live windows from macOS, Linux and Omarchy Spaces, with agent and coworker cursors and agent threads.
Infinite canvas puts every window of every Space on one zoomable canvas. A hotkey opens it, and each window is a live tile you can move, resize, zoom into and use.

Features#
- Global hotkey (⌥Space by default) opens and closes a full-screen canvas.
- Trackpad pan, pinch and scroll zoom; ⌘0 fits every window.
- One H.264 stream per window, hardware-decoded straight into the tile.
- Level of detail: small and off-screen tiles ask the Space for fewer frames and fewer pixels; a tile you zoom into gets a keyframe.
- Click a tile to give it your keyboard and pointer.
- Agent cursors from each Space's presence, drawn with Cua Driver's cursor theme.
- Coworker cursors: other people on the Space, each in their color.
- Agent threads as canvas windows: send a message, watch the agent work in the tiles.
- A thread's cursor waits in its title and glides out when the agent starts.
- Real app icons from each Space, an OS mark per tile, a minimap and a stats card.
- 59 tests and a benchmark target.
Run it#
From a clone of trycua/cua, on macOS 26:
(cd libs/cua && cargo build --release -p cua-sdk-native && node scripts/stage-uniffi-library.mjs --only=swift)
cd examples/infinite-canvas-swift
swift build -c release
.build/release/infinite-canvas --spaces spaces.json --showspaces.json lists the Spaces to show (any computer running cua-spacesd):
{
"spaces": [
{"label": "Linux", "os": "linux", "url": "127.0.0.1:3211", "token": "…", "maxWindows": 4}
],
"threads": ["Linux"]
}A local Linux Space for it:
TOKEN=$(openssl rand -hex 16)
docker run -d --name canvas-space --memory=4g -e CUA_ENV_TOKEN=$TOKEN \
-p 127.0.0.1:3211:3211 ghcr.io/trycua/linux:24.04Tests and the benchmark:
scripts/test.sh
swift build -c release --product canvas-bench && .build/release/canvas-bench --tiles 8Source#
examples/infinite-canvas-swift: SwiftUI and AppKit on Cua, CuaSpaces, CuaSpacesStreaming and CuaSpacesTeleport.
How each part works#
| Part | Guide |
|---|---|
| Window streams and presence | Stream a desktop |
| Agent threads | Agents in a Space |
| Adding Spaces by address | Create a Space |