Keyboard-to-keyboard real-time communication over WebSockets. No GUI. No middleman app.
- Streamers type anywhere on their system → keystrokes are captured and broadcast to all listeners in the room.
- Listeners receive those keystrokes → injected directly into their active window.
- Admin (first joiner / room creator) controls who speaks and who listens.
pip install websockets pynputpython3 server.pyExpose via Cloudflare Tunnel:
cloudflared tunnel --url ws://localhost:8765python3 client.py- Enter the server URL (e.g.
ws://localhost:8765or your CF tunnel URL) - Leave room code blank to CREATE a new room (you become admin + streamer)
- Enter a room code to JOIN an existing room (you start as listener)
| Command | Effect |
|---|---|
list |
List all users and roles |
mute <id> |
Set user to listener |
unmute <id> |
Set user to streamer |
kick <id> |
Remove user from room |
exit |
Disconnect |
ESC— disconnect from room (streamer)- All printable characters, space, enter, backspace, tab are captured and injected.
keycoms/
├── server.py — WebSocket server
├── client.py — Keystroke capture + injection client
└── README.md