A Rust-based Terminal User Interface (TUI) for Microsoft Teams, built around keyboard-driven navigation.
Use arrow keys (or h/j) to switch chats, press i to enter message-input mode, and enjoy a fast, distraction-free Teams experience inside the terminal.
- 🔐 Secure OAuth2 authentication (Device Code Flow)
- 💬 View your Teams chats
- ⌨️ Keyboard navigation (Vim-style or arrow keys)
- 🎨 Modern, colorful terminal UI
- 💾 Token persistence (no need to re-authenticate)
Important: You need to register your own Azure AD application first!
(or if you already have one, you can skip to step 2)
Follow the detailed guide in AZURE_SETUP.md to:
- Register an app in Azure Portal
- Get your Client ID
- Configure permissions
Create a config.json file in ~/.config/teams-tui/ directory:
{
"client_id": "your-client-id-here"
}Replace your-client-id-here with your actual Client ID from Azure.
Alternatively, you can use a .env file.
Create a .env file in this directory:
cp .env.example .envReplace your-client-id-here with your actual Client ID from Azure.
# Run the application
cargo run
# Or build and run the binary
cargo build --release
./target/release/teams-tui
# you can also copy binary wherever you want, eg
cp ./target/release/teams-tui /usr/local/bin/teams-tui
# and run from anywhere
teams-tuiImoportant: If you use .env file, make sure to run the app from the same directory where .env is located (still preferred way is to use config.json for settings).
- Run the app
- Open the displayed URL in your browser
- Enter the code shown in the terminal
- Sign in with your Microsoft account
- Grant permissions
↑/k- Move up↓/j- Move downPgUp/PgDn/K/J- Scroll chati- Compose messagen- Toggle notifications (None/Console/System/Both)q- Quit
- Rust 1.70+ (2021 edition)
- Microsoft account with Teams access
This app uses:
- Microsoft Graph API to fetch Teams data
- Ratatui for the terminal UI
- OAuth2 Device Code Flow for authentication
Tokens are saved to ~/.config/teams-tui/token.json and automatically refreshed.
Your profile is saved to ~/.config/teams-tui/profile.json (limits API calls).
If at some point you want/need to re-authenticate, just delete the token.json file (and eventually profile.json).
- Showing images
- Yanking urls (eventually adding some kind of vim mode to select/yank any text)
- Notification when new message will arrive (Console/System/Both modes added)
TeamsTUI is licensed under the MIT License. See LICENSE for details.
Hope you liked it. Wanna buy Me a coffee?
