webex-tui is an unofficial Webex chat client for the terminal.
It is work in progress but usable to some extent. Feedback is welcome.
webex-tui is a client of the local webex-bridge daemon. The daemon owns the only Webex connection (login, real-time events, an encrypted local mirror); webex-tui talks to it over a private Unix socket and holds no Webex credentials. webex-tui never installs, starts or stops the daemon. macOS only.
- View a list of rooms, with team names, unread marks and filters
- Select a room and send, reply to, edit and delete messages
- Live incoming messages, edits and deletes
- Nested conversations (threads), with older history and threads loaded on demand
- Browse the mirrored rooms while Webex is offline (writes are disabled)
-
Install, start and log in the daemon (once), from a webex-bridge checkout next to this one.
mise run service:startbuilds and signs it, copies the signed binaries into its private directory and installs the LaunchAgent:cd ../webex-bridge mise run service:start "$HOME/Library/Application Support/webex-bridge/bin/webex-bridge" login "$HOME/Library/Application Support/webex-bridge/bin/webex-bridge" health
-
Build and start the signed webex-tui (see Installing). On the first start the daemon shows a macOS dialog: "Allow full access to your Webex mirror?" Click Allow. webex-tui stores its pairing secret in your login Keychain (
com.cisco.webex-tui.ui-pairing); later starts reuse it without a dialog.
If the daemon is not running, webex-tui prints the exact install-service
command and exits. Denying the dialog (or not answering within 60 s) pairs
nothing; the next start asks again.
To unpair: webex-bridge ui pairings, then webex-bridge ui unpair <path>.
Quit with q or Ctrl-C; a write still being sent is finished (up to 35 s)
and a one-line, content-free summary of unfinished writes is printed.
Older webex-tui versions connected to Webex themselves with their own
integration (~/.config/webex-tui/client.yml) and token cache. This version
ignores those files; it does not read, import or delete them. Quit any old
webex-tui first: it would register its own Webex device next to the daemon.
Optional cleanup, once you no longer need the old version:
rm -f ~/.config/webex-tui/client.yml # old integration client ID/secret
rm -rf ~/Library/Caches/webex-tui # old OAuth token cache (tokens*.json)You may also delete the old webex-tui integration on developer.webex.com. Do not delete the webex-bridge integration or its Keychain items.
webex-tui must run as a binary signed with a persistent identity, so that the
Keychain recognises it (see
CONFIGURATION.md). With
Rust, just
and a Code Signing certificate, in a checkout next to webex-bridge:
git clone https://github.com/sgrimee/webex-tui
cd webex-tui
just build-signed # cargo build + codesign as com.sgrimee.webex-tui
./target/debug/webex-tui # or: just run (build, sign and run with a log file)Run the signed binary directly, never cargo run or cargo install (both
leave an ad-hoc signature). Each rebuild or upgrade is a new binary to macOS:
its first start asks once for Keychain access (choose Always Allow). The
pairing itself is kept (it belongs to the secret, not the binary), so no new
daemon dialog appears. A binary signed with another identity cannot read the
secret and has to be paired anew.
brew install sgrimee/tap/webex-tui and the binaries on the
releases page are the older,
standalone (OAuth) versions and are not signed for the Keychain. They stay
legacy until there is a signing pipeline for this version.
Themes, page size and debug logging: see CONFIGURATION.md and THEMING.md.
- This tutorial on TUI
- This article on concurrency with TUI
- The webex-rust crate and its authors
- Initial work for webexterm
- spotify-tui
This crate is not maintained by Cisco, and not an official SDK. The authors are current developers at Cisco, but have no direct affiliation with the Webex development team.
webex-tui is provided under the MIT license. See LICENSE.