Blit — your whole dev machine in one browser tab

6 min read Original article ↗

Open-source remote workspace Linux · macOS · Windows

Blit turns any machine into a fast browser workspace—with persistent terminals, files, Git, code intelligence, port forwarding, and even GUI apps. Share it with a link. Drive it with an agent.

No install · Docker demo

$ docker run --rm --shm-size=1g grab/blit-demo

The actual Blit workspace Real recorded session

1
binary

0
required dependencies

3
desktop platforms

MIT
open-source core

Six jobs. One binary.

Everything between ssh and a cloud IDE—without moving your work to the cloud.

Run Blit on a machine and it becomes a browser workspace, a persistent terminal server, a secure share link, and a computer API. Use only the parts you need; they all see the same live state.

01 / 06 Workspace

Open the machine, not just another shell.

blit open puts terminals, files, editors, search, diffs, and the commit graph in one tiled tab. The heavy work stays beside your code; the browser remains a fast, disposable client.

  • Processes and scrollback survive a closed tab or dropped connection.
  • Language servers run on the box, with completion, diagnostics, navigation, and cross-file rename.
  • Your tile layout lives in the URL, so the exact workspace reopens anywhere.

02 / 06 Remotes

Every machine feels local.

Name an SSH host once. Blit installs itself there on first contact, keeps the connection warm, and shows every remote beside your local machine. No separate fleet of browser terminals to manage.

  • Jump between local, production, a home server, and a dev container from one tab.
  • Forward TCP or UDP ports to anything the remote can reach.
  • Pre-warmed connections remove the SSH handshake from every new tab.

03 / 06 Share

Send the live workspace, not a screen share.

blit share creates one link with control and another that is read-only. Your teammate opens the same terminals, files, and editor in their browser—no account, SSH key, VPN, or local setup.

  • WebRTC connects peer to peer when it can, with relay fallback when it cannot.
  • Each viewer is paced independently, so a slow phone never stalls your desktop.
  • The signaling hub never receives the share secret.

04 / 06 Agents

Give agents handles, not pixels.

Agents can start a process, wait for output, read the parsed screen, edit files, inspect Git, ask a real language server, and control GUI windows. They operate the same workspace you can watch and take over.

  • No ANSI scraping, expect scripts, or brittle terminal coordinates.
  • Every command works locally, over SSH, or through a share link.
  • One compact skill file teaches an agent the entire interface.

05 / 06 GUI apps · experimental

A display server for servers without displays.

On Linux, every terminal gets a built-in headless Wayland compositor. Launch a browser, editor, media player, or your own app; Blit streams its surfaces to the browser and exposes them to the CLI.

  • Capture, click, type, send keys, and move clipboard data programmatically.
  • H.264 or AV1, encoded on the GPU by Vulkan Video, NVENC, or VA-API, with software fallback.
  • No X server, physical display, or GPU required.

06 / 06 Embed

Ship the terminal without building the terminal stack.

MIT-licensed React and Solid packages expose the same workspace, terminal, surface, and transport primitives used by blit.sh. Put a production terminal—or a full remote workspace—inside your app.

  • Use the UI components or build your own against the headless core.
  • Bring WebSocket, QUIC, WebRTC, Unix sockets, or your own reliable byte stream.
  • Run the core in Node, Bun, or Deno for server-side automation.

Read the embedding guide →

Why it feels fast

Send what changed. Paint it locally.

Blit does not stream a terminal as video or replay a river of ANSI bytes. The server understands the screen, computes a binary diff for each viewer, and sends only the cells that changed. The browser applies that diff in WASM and renders it on the GPU.

Every browser reports its own display rate, apply time, and backlog. That lets a workstation run at full speed while a slow phone catches up independently. Keystrokes take the reverse path without a frame queue, so input latency is bounded by the connection itself.

Parser
alacritty_terminal

Render
WebGPU · WebGL2 · canvas2d

Compression
LZ4 · binary diff

Encode
Vulkan · NVENC · VA-API · software

Read ARCHITECTURE.md

WebGPU / WebGL2 / canvas2d WASM diff engine Glyph atlas

Applies LZ4-compressed binary diffs; reports render metrics back for pacing.

WS · WebTransport WebRTC · Unix · SSH Blit gateway · proxy-daemon

Stateless. Restartable. PTYs survive gateway and proxy restarts.

alacritty parser FrameState diff Wayland compositor (exp.)

Owns PTYs, scrollback, parsed state, per-client frame pacing, GPU encode.

Why Blit

Not a web wrapper around one PTY.

Most browser terminals stop at “put this shell on a WebSocket.” Blit is a multi-terminal workspace, remote protocol, agent API, and Linux GUI compositor built as one system.

first-class ~ partial / addon not supported

Honest edges

Know where the line is.

The terminal and remote-workspace core is the foundation. GUI streaming and parts of the browser IDE are newer, so the page names those tradeoffs instead of hiding them.

Wayland compositor

Headless compositor and surface streaming are experimental. Some apps will draw fine; others won't. Linux only.

macOS / Windows GUI

Both platforms multiplex PTYs and stream them to browsers. The GUI compositor is Linux-only and not on the roadmap for either.

Hardware encoding

Vulkan Video is tried first and encodes on the compositor's own GPU, but only at native size, with no rate control beyond a fixed quality — and a driver can decline the session outright, 4:4:4 being the profile it is most likely to lack. NVENC needs the proprietary NVIDIA driver, VA-API needs Intel/AMD with libva, and either can take over. Falls back to software at any time.

IDE scope

Edit, navigate, search, diff, commit — no debugger, no test runner, and rename is the only refactoring. Indentation is inferred from the file; there is no .editorconfig reader yet.

The shortest path to the product

Put this machine in a tab.

Install one binary, run blit open, and keep working. No account, config file, daemon setup, or required dependency.

$ curl -sf https://install.blit.sh | sh

Docker demo

$ docker run --rm --shm-size=1g grab/blit-demo

Linux · macOS · Windows MIT-licensed default build Read the source →