https://github.com/ericboehs/teems
https://github.com/ericboehs/teems
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/ericboehs/teems
- Owner: ericboehs
- License: mit
- Created: 2026-03-02T16:49:18.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-04-11T01:34:07.000Z (2 months ago)
- Last Synced: 2026-04-11T02:24:39.456Z (2 months ago)
- Language: Ruby
- Size: 636 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Support: support/token_helper.swift
Awesome Lists containing this project
README
# teems
A command-line interface for Microsoft Teams. Read messages, manage your calendar, set out-of-office, and more — all from the terminal.
Pure Ruby, no runtime dependencies. macOS only (uses Safari for authentication).
## Installation
```bash
gem install teems
```
Or build from source:
```bash
git clone https://github.com/ericboehs/teems
cd teems
gem build teems.gemspec
gem install teems-*.gem
```
## Requirements
- Ruby 3.2+
- macOS (for Safari/WKWebView token extraction)
- Microsoft Teams account
## Authentication
```bash
teems auth login # Authenticate (headless or Safari)
teems auth status # Check if authenticated
teems auth logout # Clear stored tokens
```
Tokens refresh automatically when you run commands. If they expire (~24 hours of inactivity), just run `teems auth login` again.
## Commands
### Calendar
```bash
teems cal # Today's events
teems cal tomorrow # Tomorrow's events
teems cal --week # This week's events
teems cal show 3 # View details for event #3
teems cal accept 3 # Accept event #3
teems cal decline 3 # Decline event #3
teems cal create "Standup" --start "tomorrow 09:00" --attendees alice@example.com
teems cal delete 3 # Delete event #3
```
### Messages
```bash
teems messages # Read from a chat
teems messages -t # Read from a channel
teems messages -n 50 # Show more messages
```
### Channels and Chats
```bash
teems channels # List joined teams and channels
teems chats # List recent chats
teems chats -n 50 # Show 50 chats
```
### Out of Office
```bash
teems ooo # Check OOO status
teems ooo on # Enable OOO (auto-reply + presence)
teems ooo on --message "Vacation" # Custom message
teems ooo on --start 2025-12-22 --end 2025-12-26 # Scheduled
teems ooo on --event # Also create a calendar event for your notify list
teems ooo off # Disable OOO
teems ooo config # Show OOO configuration
```
### Meetings
```bash
teems meeting # View meeting summary
teems meeting --chat # Show meeting chat
teems meeting --transcript -o ~/Downloads # Download transcript (VTT)
teems meeting --recording -o ~/Downloads # Download recording (MP4)
teems meeting --recording --transcript -o ~/Downloads # Both, with embedded subtitles
teems meeting # By calendar event ID (AAMk...)
teems meeting "https://teams.microsoft.com/..." # By Teams URL or recap link
```
Recording download requires `ffmpeg` (`brew install ffmpeg`) and downloads via DASH streaming with 5 parallel threads. No browser required.
### People
```bash
teems who # Show your profile
teems who john # Search for a user
teems org # Show your org chart
teems org john # Org chart for "john"
```
### Status and Activity
```bash
teems status # Show your presence
teems status --presence available # Set presence
teems status --message "In a meeting" # Set status message
teems activity # Show activity feed
```
### Sync
```bash
teems sync # Sync chat history locally
```
## Global Options
| Option | Description |
|--------|-------------|
| `-n, --limit N` | Number of items to show (default: 20) |
| `-v, --verbose` | Show debug output |
| `-q, --quiet` | Suppress output |
| `--json` | Output as JSON |
| `-h, --help` | Show help |
## Configuration
Configuration is stored in XDG-compliant directories:
- Config: `~/.config/teems/config.json`
- Tokens: `~/.config/teems/tokens.json`
- Cache: `~/.cache/teems/`
### OOO Defaults
Set default messages and a notify list for the `ooo` command:
```json
{
"ooo": {
"internal_message": "I'm currently out of office.",
"external_message": "Thank you for your message. I'm out of office.",
"external_audience": "all",
"status_message": "Out of Office",
"notify": ["manager@example.com", "team@example.com"]
}
}
```
### Custom Endpoints
By default, teems connects to commercial Microsoft Teams endpoints. To use a different environment (e.g., GCC, GCC High), add an `endpoints` section to your config:
```json
{
"endpoints": {
"msgservice": "https://ng.msg.gcc.teams.microsoft.com",
"presence": "https://presence.gcc.teams.microsoft.com"
}
}
```
Available endpoint keys: `graph`, `teams`, `msgservice`, `presence`.
## Development
```bash
git clone https://github.com/ericboehs/teems
cd teems
bundle install
rake test # Run tests
rake console # Interactive console
```
## License
MIT License. See [LICENSE](LICENSE).