You're screensharing. They need to run a command. Stop dictating characters. Give them a session code and let them type directly.
"Capital D, dash, dash, no-cache, space, dot, no the other dot..."
Request control, wait for approval, fumble with resolution differences, give it back.
VS Code Live Share, tmate, tmux — all overkill for "let me just type this one command."
Share a code. They type. You see it live on your screenshare. Done.
Developer screensharing.
Runs keytun host
Stateless broker.
Bridges connections.
Helper colleague.
Runs keytun join <code>
Run keytun host. A PTY spawns your shell. You get a session code like keen-fox-42.
You get a direct join link like keytun.com/s/keen-fox-42. Drop it in chat — your colleague opens it in their browser. No install needed.
They can join from the browser or via CLI. Raw key bytes flow through the relay to the host's PTY. Arrow keys, tab completion, Ctrl+C — everything works.
Both local and remote input appear in the same terminal. Your screenshare shows everything in real time.
Choose the mode that fits your workflow.
Spawns a full PTY session with your shell. Your colleague types directly into a real terminal — arrow keys, tab completion, Ctrl sequences all work.
Injects keystrokes at the OS level into any application. Target a specific window by name — your colleague types into your IDE, editor, or any focused app.
Go binary. No runtime, no dependencies. Download and run.
Wordlist-based codes like keen-fox-42. Easy to say over a call.
X25519 key exchange + AES-256-GCM. The relay is a dumb pipe — it never sees your keystrokes or output.
Stateless WebSocket broker. Deploy on Fly.io, Railway, or any container host.
Your colleague doesn't need to install anything. Share a link and they join straight from the browser.
No database, no auth tokens, no persistence. Sessions live in memory.
Connects to relay.keytun.com by default — all traffic is end-to-end encrypted. The relay only sees ciphertext.
What's coming next.
Host sets a password when starting a session. Clients must enter it before keystrokes flow.
Join as a viewer — see the terminal output without being able to type. Great for demos and teaching.
OS-level keystroke injection on Linux via xdotool/ydotool, matching the existing macOS system mode.
Audible and visual notifications when a client joins or leaves your session.
Round-trip time in the client status bar so you know whether lag is keytun or your connection.
Host approves each client before keystrokes start flowing. Full control over who gets access.