Pick up where you left off, from anywhere.

$ chaar list machines --demo
# pick a machine to open a live shell
[ Fig. 1 ] earth.txt
drag to spin

01 / pick up anywhere

Leave on the laptop. Land on the phone.

Start a chat with your agent on the laptop and close the lid. The session keeps running on the machine, so the conversation is right where you left it when you open it on your phone.

lives on
the machine, kept by chaard
attach from
CLI · desktop · iOS · Android
[ Fig. 2 ] handoff.txtgpu-server / agent · attached from the laptop
tap to attach
~ $ chaar connect personal gpu-server agent
› add retries to the relay client
● Read relay.rs
  
gpu-server · chaard
‹gpu-server
>_build
>_agent
>_notebook
~ $ chaar connect personal gpu-server agent
› add retries to the relay client
● Read relay.rs

On the laptop

02 / keep agents running

Your agent keeps working. You keep watch.

Start a coding agent in a session on a big machine and close the laptop. When it stops to ask something, answer from your phone and let it carry on.

  • Survives the lid closing and the Wi-Fi dropping
[ Fig. 3 ] agents.txtgpu-server / agent · waiting for you
direct · 4 ms
gpu-server · chaard

SESSIONS

build 2d
agent 6h
notebook 3h

laptop · lid closed 6h ago

‹gpu-server / agent
● Read central/src/relay.rs
● Ran cargo test -p central
  relay_list ... FAILED

● relay_list sorts relays by
  name; the test wants them
  by latency.

  Change the sort and re-run?
  y yes   n no
› 
‹gpu-server / agent
● Read central/src/relay.rs
● Ran cargo test -p central
  relay_list ... FAILED

● relay_list sorts relays by
  name; the test wants them
  by latency.

  Change the sort and re-run?
  y yes   n no
› 
Tap y or n. Or tap ⌃ then c to stop it.

03 / one window

Every machine in one window.

Your machines and their sessions sit in a sidebar. Open sessions as tabs, jump anywhere from the keyboard, and keep your Mac awake while a job runs.

  • Search or create a session
  • Hide the sidebar
  • macOS · Windows · Linux
[ Fig. 4 ] desktop.appgpu-server / build · open
visitor@gpu-server:~$ git pull
Already up to date.
visitor@gpu-server:~$ ls
README.md  chaard  protocol  target
visitor@gpu-server:~$ cargo build --release
   Compiling protocol v0.1.0
   Compiling zmx v0.1.0
   Compiling client-core v0.1.0
   Compiling central v0.1.0
   Compiling chaard v0.1.0
   Compiling desktop-app v0.1.0
   Compiling chaar v0.1.0
    Finished `release` profile [optimized] in 41.2s
visitor@gpu-server:~$ 
gpu-server / builddirect · 4 ms
visitor@gpu-server:~$ git pull
Already up to date.
visitor@gpu-server:~$ ls
README.md  chaard  protocol  target
visitor@gpu-server:~$ cargo build --release
   Compiling protocol v0.1.0
   Compiling zmx v0.1.0
   Compiling client-core v0.1.0
   Compiling central v0.1.0
   Compiling chaard v0.1.0
   Compiling desktop-app v0.1.0
   Compiling chaar v0.1.0
    Finished `release` profile [optimized] in 41.2s
visitor@gpu-server:~$ 
gpu-server / builddirect · 4 ms

Tap a session to open it in a tab.

Click a machine, a session or a tab.

04 / share access

Share a machine, not access keys.

Add someone by email from the console and pick what they can do. Once they accept, the machine shows up in their apps under Shared with me.

Owner
full control
Can execute
open terminals, create or kill sessions
Can view
sees sessions, no terminal
[ Fig. 5 ] access.txtgpu-server · 2 people
← Machines
gpu-serverOnline
SettingsUsers
Users with access to this machine.
UserRole
YYouyou@example.comOwner
SRSam Riverasam@example.comCan execute
Add userSees the machine and its sessions; no terminal.

chaar

No machines yet

Shared with me ⇅
← Machines
gpu-serverOnline
SettingsUsers
Users with access to this machine.
UserRole
YYouyou@example.comOwner
SRSam Riverasam@example.comCan execute
Add userSees the machine and its sessions; no terminal.

chaar

No machines yet

Shared with me ⇅

Sees the machine and its sessions; no terminal.

Pick a role, add the user, then accept on the phone.

05 / under the hood

Your devices. Your machines. A path between them.

Sessions live on your machines. chaar signs you in, knows which machines are yours, and gets you there: straight to the machine when it can, through a relay when it can't.

[ Fig. 6 ] path.txtdesktop app → gpu-server · direct · 4 ms
centralsigns you inknows your machinesruns the relays
  • yougpu-serverdirect · 4 ms
  • youci-runnerdirect · 6 ms
  • youbuild-boxrelayed · 41 ms
  • youhome-labrelayed · 38 ms
Pick a device and a machine.
[1]Sessions live on the machine

chaard keeps the sessions on its machine. Closing an app never ends one.

[2]Checked on the machine

chaard checks the permissions of every request it gets, whoever sends it.

[3]Direct first

Straight to the machine when it can, relayed when it can't. The apps show which.

06 / questions

A few good questions.

What runs on my machines?

chaard, a background service for Linux and macOS (Windows through WSL). It keeps the sessions on that machine and checks the permissions of every request.

What happens to a session when I close my laptop?

Nothing. The session runs on the machine, not on your laptop. Open it again from any device and you are on the same line.

Direct or relayed: what's the difference?

chaar goes straight to the machine when it can, and through a relay when it can't. A relayed session is end-to-end encrypted, so the relay has no way to see your data. The apps show which path you are on.

Who can open a terminal on my machine?

Only you, and the people you have explicitly given access to.

Which devices does it run on?

The desktop app for macOS, Windows and Linux, the apps for iOS and Android, the chaar CLI, and the web console.

[ EOF ]

Pick up where you left off.

From anywhere, on any of your machines.