Multi-user shared terminal
Project description
Concordia
Concordia is a live, multi-user terminal sharing tool for interactive TUI apps.
Think of it like Google Docs for terminal sessions: one host runs a program, other users join with an invite link, and everyone sees the same live screen and can collaborate in real time.
Why Concordia instead of tmux/ssh
- Internet-first collaboration with invite codes (no manual SSH account setup per guest).
- One host-managed runtime for quick pair/mob sessions.
- Shared live view for all participants, including the host's own terminal stream.
- Better for ad-hoc collaborative sessions than managing remote shell access and key distribution.
Use tmux/ssh when you want full server administration and long-lived personal shells. Use Concordia when you want fast collaborative live sessions.
Quickstart
- Install:
bash install.sh
- Set ngrok auth token on the host (required):
export NGROK_AUTHTOKEN=YOUR_NGROK_TOKEN
- Start a party and choose the shared program:
concordia_host --program "bash"
-
Share the invite code printed by host.
-
Join from another machine:
concordia_client <paste-invite-code> --user alice
What can be shared
Any interactive terminal program that runs on the host, for example:
bash,zsh,fishpython3 -q,ipythonhtop,btopvim,nvimlazygit- custom internal TUIs
Common commands
# Share a shell
concordia_host --program "bash"
# Share a Python REPL in a specific project
concordia_host --project-dir ~/my-project --program "python3 -q"
# Share a TUI app
concordia_host --program "lazygit"
# Join
concordia_client concordia://<ngrok-host>:<ngrok-port>/<token> --user bob
How it works
- Host starts a websocket server and launches the chosen program inside a PTY.
- Clients connect with invite token.
- Client input bytes are forwarded to host PTY stdin.
- PTY output bytes are broadcast to all connected clients.
- Control messages (
invite,participants,system,error) are sent as JSON.
Requirements
- Python 3.9+ on host and clients
- ngrok auth token on host (
NGROK_AUTHTOKEN) - The shared program installed on host and available on
PATH
Install (global)
pipx install .
If you do not use pipx:
python3 -m pip install --user .
Host and client apps
- Host command:
concordia_host - Client command:
concordia_client - Use
--plainfor legacy non-TUI mode.
Notes
--programis required when creating a party.--project-dirsets the working directory for the shared program process.--no-local-replruns server without auto-connecting host client.- ngrok is required for hosting; invite host/port come from the ngrok tunnel.
--public-hostand--ngrokare deprecated and ignored.
Docker
docker build -t concordia .
docker run --rm -it \
-p 8765:8765 \
--env NGROK_AUTHTOKEN=YOUR_NGROK_TOKEN \
concordia \
concordia --create-party --host 0.0.0.0 --program "bash"
Or:
docker compose up --build
Join from another machine:
concordia_client concordia://<ngrok-host>:<ngrok-port>/TOKEN --user alice
Bundled install (standalone)
./scripts/build_bundle.sh
./dist/concordia.pyz --create-party --program "bash"
Releases
./scripts/build_release.sh
Upload artifacts in dist/ to GitHub Releases.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file concordia_tui-0.0.6.tar.gz.
File metadata
- Download URL: concordia_tui-0.0.6.tar.gz
- Upload date:
- Size: 19.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
199dd653e9dbeba7cfbcba7bdf00e56b42fa014664f5bab757e4fa4613727513
|
|
| MD5 |
1704242c236b1681d07cd0015a8b33d6
|
|
| BLAKE2b-256 |
4fbd0292ce3b93434033cf98dce58b5e5129c33ff8191922bc90fa6def23c84b
|
File details
Details for the file concordia_tui-0.0.6-py3-none-any.whl.
File metadata
- Download URL: concordia_tui-0.0.6-py3-none-any.whl
- Upload date:
- Size: 21.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5a9e5622732d8f65fb278d50cce3b3d62bb9846c325cbc57c9d23174eeb22dd
|
|
| MD5 |
315e8283ccbbcb9f99ae012a7ec75b14
|
|
| BLAKE2b-256 |
ecbb0b009650f6b0bfccbd7f9700a3437ef66869ce0ca2c0acb5ba44648400bc
|