{"id":48890673,"url":"https://github.com/ericboehs/teems","last_synced_at":"2026-04-16T07:36:42.098Z","repository":{"id":350575558,"uuid":"1170903578","full_name":"ericboehs/teems","owner":"ericboehs","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-11T01:34:07.000Z","size":651,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-11T02:24:39.456Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ericboehs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support/token_helper.swift","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-02T16:49:18.000Z","updated_at":"2026-04-11T01:34:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ericboehs/teems","commit_stats":null,"previous_names":["ericboehs/teems"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ericboehs/teems","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericboehs%2Fteems","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericboehs%2Fteems/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericboehs%2Fteems/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericboehs%2Fteems/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ericboehs","download_url":"https://codeload.github.com/ericboehs/teems/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericboehs%2Fteems/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31876803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T07:36:03.521Z","status":"ssl_error","status_checked_at":"2026-04-16T07:35:53.576Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-16T07:36:41.543Z","updated_at":"2026-04-16T07:36:42.092Z","avatar_url":"https://github.com/ericboehs.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# teems\n\nA command-line interface for Microsoft Teams. Read messages, manage your calendar, set out-of-office, and more — all from the terminal.\n\nPure Ruby, no runtime dependencies. macOS only (uses Safari for authentication).\n\n## Installation\n\n```bash\ngem install teems\n```\n\nOr build from source:\n\n```bash\ngit clone https://github.com/ericboehs/teems\ncd teems\ngem build teems.gemspec\ngem install teems-*.gem\n```\n\n## Requirements\n\n- Ruby 3.2+\n- macOS (for Safari/WKWebView token extraction)\n- Microsoft Teams account\n\n## Authentication\n\n```bash\nteems auth login     # Authenticate (headless or Safari)\nteems auth status    # Check if authenticated\nteems auth logout    # Clear stored tokens\n```\n\nTokens refresh automatically when you run commands. If they expire (~24 hours of inactivity), just run `teems auth login` again.\n\n## Commands\n\n### Calendar\n\n```bash\nteems cal                    # Today's events\nteems cal tomorrow           # Tomorrow's events\nteems cal --week             # This week's events\nteems cal show 3             # View details for event #3\nteems cal accept 3           # Accept event #3\nteems cal decline 3          # Decline event #3\nteems cal create \"Standup\" --start \"tomorrow 09:00\" --attendees alice@example.com\nteems cal delete 3           # Delete event #3\n```\n\n### Messages\n\n```bash\nteems messages \u003cchat-id\u003e                    # Read from a chat\nteems messages \u003cchannel-id\u003e -t \u003cteam-id\u003e    # Read from a channel\nteems messages \u003cchat-id\u003e -n 50              # Show more messages\n```\n\n### Channels and Chats\n\n```bash\nteems channels       # List joined teams and channels\nteems chats          # List recent chats\nteems chats -n 50    # Show 50 chats\n```\n\n### Out of Office\n\n```bash\nteems ooo                          # Check OOO status\nteems ooo on                       # Enable OOO (auto-reply + presence)\nteems ooo on --message \"Vacation\"  # Custom message\nteems ooo on --start 2025-12-22 --end 2025-12-26  # Scheduled\nteems ooo on --event               # Also create a calendar event for your notify list\nteems ooo off                      # Disable OOO\nteems ooo config                   # Show OOO configuration\n```\n\n### Meetings\n\n```bash\nteems meeting \u003cthread-id\u003e                          # View meeting summary\nteems meeting \u003cthread-id\u003e --chat                   # Show meeting chat\nteems meeting \u003cthread-id\u003e --transcript -o ~/Downloads  # Download transcript (VTT)\nteems meeting \u003cthread-id\u003e --recording -o ~/Downloads   # Download recording (MP4)\nteems meeting \u003cthread-id\u003e --recording --transcript -o ~/Downloads  # Both, with embedded subtitles\nteems meeting \u003cevent-id\u003e                           # By calendar event ID (AAMk...)\nteems meeting \"https://teams.microsoft.com/...\"    # By Teams URL or recap link\n```\n\nRecording download requires `ffmpeg` (`brew install ffmpeg`) and downloads via DASH streaming with 5 parallel threads. No browser required.\n\n### People\n\n```bash\nteems who              # Show your profile\nteems who john         # Search for a user\nteems org              # Show your org chart\nteems org john         # Org chart for \"john\"\n```\n\n### Status and Activity\n\n```bash\nteems status                          # Show your presence\nteems status --presence available     # Set presence\nteems status --message \"In a meeting\" # Set status message\nteems activity                        # Show activity feed\n```\n\n### Sync\n\n```bash\nteems sync             # Sync chat history locally\n```\n\n## Global Options\n\n| Option | Description |\n|--------|-------------|\n| `-n, --limit N` | Number of items to show (default: 20) |\n| `-v, --verbose` | Show debug output |\n| `-q, --quiet` | Suppress output |\n| `--json` | Output as JSON |\n| `-h, --help` | Show help |\n\n## Configuration\n\nConfiguration is stored in XDG-compliant directories:\n\n- Config: `~/.config/teems/config.json`\n- Tokens: `~/.config/teems/tokens.json`\n- Cache: `~/.cache/teems/`\n\n### OOO Defaults\n\nSet default messages and a notify list for the `ooo` command:\n\n```json\n{\n  \"ooo\": {\n    \"internal_message\": \"I'm currently out of office.\",\n    \"external_message\": \"Thank you for your message. I'm out of office.\",\n    \"external_audience\": \"all\",\n    \"status_message\": \"Out of Office\",\n    \"notify\": [\"manager@example.com\", \"team@example.com\"]\n  }\n}\n```\n\n### Custom Endpoints\n\nBy 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:\n\n```json\n{\n  \"endpoints\": {\n    \"msgservice\": \"https://ng.msg.gcc.teams.microsoft.com\",\n    \"presence\": \"https://presence.gcc.teams.microsoft.com\"\n  }\n}\n```\n\nAvailable endpoint keys: `graph`, `teams`, `msgservice`, `presence`.\n\n## Development\n\n```bash\ngit clone https://github.com/ericboehs/teems\ncd teems\nbundle install\nrake test        # Run tests\nrake console     # Interactive console\n```\n\n## License\n\nMIT License. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericboehs%2Fteems","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fericboehs%2Fteems","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericboehs%2Fteems/lists"}