Skip to content

Security

Short-code joins require both the 7-digit code and the generated join password. Send them through separate channels when possible.

The host is prompted before the guest can control the shell. Use --mode view when the guest should only watch, and use --mode approve when every input chunk should be approved by the host.

The guest controls the hosted shell after approval. Use a dedicated workspace and avoid sharing more access than needed.

Only one active guest is allowed per invite code. The same guest can reconnect after a transient disconnect without another approval prompt. A different guest requires fresh host approval before input is accepted. Additional guests are rejected while a guest is already connected.

Audit logs are enabled by default and record session lifecycle, resize events, byte counts, and permission decisions. Typed input is not recorded unless --audit-input is set.

Downloads are disabled unless the host starts with --downloads. When enabled, guests can download only files inside the workspace's controli-drive folder. Hosts can set --download-code, --s4d-code, CONTROLI_DOWNLOAD_CODE, or CONTROLI_S4D_CODE so guests can authorize downloads with a separate secret; blank or wrong codes fall back to host approval.

Run a Worker and Cloudflare Tunnel you control. Rotate invite codes and join passwords by stopping and starting the host session.

Tunnel mode keeps terminal traffic out of Durable Objects. Relay fallback uses Durable Objects for terminal traffic and should be reserved for short sessions because active relay WebSockets consume Durable Objects duration.

Released under the MIT license.