Orpheus
Docs

Connector reference

Commands, files, and every message the connector and Orpheus exchange.

Beta: the connector is an open package under the MIT license, published to npm after its security review. Frame names here are protocol version 1.

Commands

CommandWhat it does
pair --url … --token oc_ct_…Swaps a one-time connect token for this machine's connector credential and stores it. The token is burned.
installRegisters the connector as a launchd (macOS) or systemd (Linux) user service so it keeps running.
status [--json]Pairing, service, connection and the sessions it shares.
uninstall [--forget]Stops and removes the service. --forget also deletes the stored credential.

Files

PathPurpose
~/.config/orpheus-connector/credentialThe connector credential (oc_cc_…), mode 0600. On macOS it is kept in the keychain instead.
~/.config/orpheus-connector/policy.jsonLocal policy: exposed sessions, input, transcripts, usage. Edited only on the machine.

Connection

  • The connector opens a secure WebSocket to /connect and sends Authorization: Bearer oc_cc_….
  • The server checks the credential's hash, its revocation flag and the workspace's server allowance.
  • Heartbeat every 20 seconds. On a drop, it reconnects with jittered backoff.
  • The credential rotates every 30 days over the open socket.
  • Frames are JSON and carry v: 1.

Frames: connector to Orpheus

FrameFieldsMeaning
helloos, hostLabel, version, capsSent on connect. Says what this connector is and can do.
sessionslistThe sessions the policy exposes.
paneid, seq, dataTerminal output of a subscribed session, in order.
transcriptsession, turnsConversation turns for the chat view, if shared.
livesession, stateWhether a session is working or waiting.
usagelogins[]Weekly and session percentage per login. Only when the local policy has usage: true (off by default).
askA question from an agent for you to answer.
resultreqId, ok, errThe outcome of a request from the server.

Frames: Orpheus to connector

FrameFieldsMeaning
subscribe / unsubscribesessionStart or stop streaming a session's output.
sendreqId, session, text, submitType text into an exposed session, and optionally press enter.
keyreqId, session, keyPress one key from the allowed list.
transcriptreqId, session, sinceAsk for turns after a point.
newSessionname, cmdStart a new agent session. cmd must be on the connector's allowed list.
usageNowAsk for a usage reading now.

The connector checks every send and key against the local policy before acting, and answers with result.

Allowed keys

up down left right enter escape space tab bspace

What is not in the protocol

  • No exec frame. Input reaches your machine only as tmux send-keys into an exposed session.
  • No frame that edits the policy.
  • No file read or write frames.