#peer #zellij #encryption #attach #internet #session #end-to-end

app zeco

zellij attach via the internet, peer to peer, end-to-end encrypted

2 unstable releases

new 0.2.0 Feb 2, 2025
0.1.0 Jan 28, 2025

#307 in Network programming

Download history 194/week @ 2025-01-28

194 downloads per month

MIT license

34KB
258 lines

Zeco

Invite to your Zellij session, peer to peer, end-to-end encrypted.

Ideal for situations like pair programming in Neovim.

Installation

For now, you can simply install the cli via cargo.

cargo install zeco

Requirements

  • Same zellij version, for guest and host
  • Internet connection

Usage

To invite peers to your Zellij session, simply run

zeco host

from within your zellij session. This will generate a join command looking like this:

zeco join <host-id> <secret>

Send this command to your guest and let them join in. Running the join command then outputs the zellij attach command:

zellij attach <remote-session>

How does it work?

Zellij has a server client architecture. This usually works over a linux socket, but in theory (and in practice) access to the socket can be proxied.

Zeco uses Iroh to establish a end-to-end encrypted peer to peer connection. Iroh bootstraps this connection via their servers and the protocol is based on QUIC. The host id basically is a generated public key of the host. This way, the guest can authenticate the host. The host expects the guest to provide the pre shared secret. This way, the host can authenticate the guest.

Notes

  • Currently only one guest can join
  • Currently only one join can occur, the guest can not re-join with the same data.
  • Currently zellij of the guest freezes, if the host terminates the connection.
  • The size of the zellij window will be defined by smaller terminal window.
  • Zeco does not work for tmux, because tmux transfers things like file descriptors via the socket.

Dependencies

~45–79MB
~1.5M SLoC