Skip to main content

pan share and pan join

Shared Sessions from the terminal. pan share creates the link for a conversation you host. pan join joins someone else’s shared conversation. See Shared Sessions for what viewers see and how roles work.

pan share

<conversation> is the conversation id (the number in /conv/<id>) or the conversation name. The command needs a running dashboard (pan up) and a signed-in machine (pan account login). It never starts a dashboard. It prints:
When the conversation is already shared, the first line is Conversation <name> is already shared. and the rest is the same. --json prints the share as JSON and nothing else. pan share exits 1 with a one-line reason when:
  • no conversation matches the id or name;
  • the dashboard is not running (Start it with pan up);
  • the dashboard refuses the share, for example Sign in with pan account login to share conversations. or a conversation that was released to another machine.

pan join

<link-or-code> is a join link (https://share.overdeck.ai/s/<code>) or a join code (BCDF-GHJK). Dashes, spaces and case do not matter. pan join:
  1. Signs this machine in to overdeck.ai with the device flow when it is not signed in yet. You must be on the overdeck.ai invite list.
  2. Starts the dashboard when none answers on the configured API port. The auto-started dashboard runs in the background, logs to ~/.overdeck/logs/dashboard.log, and does not resume stopped agents. A later pan up replaces it. Auto-start runs only for a local http:// API URL with a port; otherwise pan join asks you to run pan up.
  3. Asks the dashboard to join and waits up to 15 seconds for the share service to answer.
  4. Opens http://localhost:<port>/#/shared/<CODE> in your browser, where you wait in the lobby until the host lets you in.

Without Overdeck installed

On a computer with Node 22 or newer and no Overdeck, run:
It does the same four steps. It needs no global install, tmux or Herdr.

Headless machines

--no-open prints the URL instead of opening a browser. With no page open, the join closes after about 60 seconds. Opening the URL later rejoins automatically.

Token-mint lockdown

With dashboard.require_token_mint: true, the browser must already be signed in to the dashboard; the URL pan join opens carries no token.