2026-46

Infinite multiplexing

I've been trying to solve a specific nit I have with tmux: I wanted to connect my tmux client to multiple tmux daemons: I always have one running on my local machine, and one on each of my machines in my home network. I managed to cobble something together using tmux's control mode over SSH, but it was incredibly buggy. Tmux does one too many things: session persistence, window management, scrollback, and all of that inside your existing terminal.

Emulating a windowing system inside the session persistence daemon is quite valuable though: you can restore not just the state of terminals on re-attach, but also the layouts of windows: grid sizes, relative positions, window focus. When attaching over a network connection, you can also cleverly manage network resources since you are aware of which window is focused, and which window is outside the user's view.

So I set about writing my own: tarp!

Tarp is a replacement for tmux, ssh, and your terminal emulator:

Infinite canvas for everything

  • Infinite canvas: terminal windows are laid out on an infinite 2D canvas
  • Graphical client: avoids nested emulation, enables native scrollback etc.
  • libghostty-vt for terminal emulation
  • Connections over iroh: tarp intends to replace SSH, you can have a tarp daemon running on a remote machine, and connect to it via the GUI, over iroh!
  • Supports multiple simultaneous clients from different machines
  • Connect to multiple daemons at once:

Collaborating with friends on a single daemon is incredibly fun too:

Iroh is a very clever abstraction over network transports: it first makes connections between two machines over an iroh relay, it then begins calculating other direct paths between the two, and seamlessly switches to that path if it exists! When there isn't a path, it just falls back to an iroh relay.

Tangled 1.0

Tangled 1.0 is out! Some highlights from this release:

  • Lexicons are now stable
  • Knots now embed issues/PRs alongside git data, inside the git ODB
  • This ODB is also projected to an atproto MST, allowing indexers to sync it up via the firehose
  • Knots support HTTP push, git LFS, SHA-256, contribution policies
  • Support for organization accounts using Tranquil PDS's passwordless delegate accounts
  • Brand new client written in Svelte

As a result of the rework and stabilization of the lexicons, many custom implementations of knots are now possible:

  • naut: a Tangled knot running entirely on Cloudflare using Artifacts and Durable Objects
  • yumak: a Tangled knot with no daemon! Similar to stagit but federates with the rest of Tangled.
  • exe-knot: a Tangled knot running on exe.dev

Most importantly, Tangled is properly federated now. We run multiple appviews ourselves, and it is trivial to spin up a fully independent Tangled yourself.