{"id":50493899,"url":"https://github.com/excelano/checkin-cli","last_synced_at":"2026-06-08T00:05:40.540Z","repository":{"id":360208148,"uuid":"1237157693","full_name":"excelano/checkin-cli","owner":"excelano","description":"Command-line check-in for Microsoft 365: unread Outlook mail, Teams chats, and next meeting from one Go binary.","archived":false,"fork":false,"pushed_at":"2026-05-25T12:21:11.000Z","size":24,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-25T14:16:10.246Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","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/excelano.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"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-05-12T23:46:21.000Z","updated_at":"2026-05-25T12:13:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/excelano/checkin-cli","commit_stats":null,"previous_names":["excelano/checkin-cli"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/excelano/checkin-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/excelano%2Fcheckin-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/excelano%2Fcheckin-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/excelano%2Fcheckin-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/excelano%2Fcheckin-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/excelano","download_url":"https://codeload.github.com/excelano/checkin-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/excelano%2Fcheckin-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33807006,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-06-02T05:03:49.657Z","updated_at":"2026-06-08T00:05:40.534Z","avatar_url":"https://github.com/excelano.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# checkin\n\nCheck unread Outlook emails, Teams chats, and your next meeting from the terminal.\n\n## Install\n\nThe fastest path on Linux or macOS:\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/excelano/checkin-cli/main/install.sh | sh\n```\n\nThis downloads the latest release binary for your platform, verifies the SHA-256 checksum, and installs it to `/usr/local/bin` (or `~/.local/bin` if `/usr/local/bin` isn't writable). Override the destination with `CHECKIN_INSTALL_DIR=$HOME/bin sh`; pin to a specific tag with `CHECKIN_VERSION=v0.2.4 sh`.\n\nOn Debian and Ubuntu, add the [Excelano apt repository](https://excelano.com/apt/) once so updates flow through `apt upgrade`:\n\n```sh\ncurl -fsSL https://excelano.com/apt/setup.sh | sudo sh\nsudo apt install checkin\n```\n\nTo uninstall: `curl -fsSL https://raw.githubusercontent.com/excelano/checkin-cli/main/uninstall.sh | sh` (or `sudo apt remove checkin` if installed via apt).\n\n### Build from source\n\n```bash\ngit clone https://github.com/excelano/checkin-cli\ncd checkin-cli\ngo build -o checkin .\nmv checkin ~/bin/\n```\n\nRequires Go 1.25+.\n\n## Setup\n\nYou'll need an Azure app registration before `checkin` can authenticate. Both options below assume you've already installed the binary.\n\n### Option A: Automated (requires Azure CLI)\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/excelano/checkin-cli/main/setup.sh -o setup.sh\nchmod +x setup.sh\naz login\n./setup.sh\n```\n\n(Or if you installed via apt, `setup.sh` ships at `/usr/share/doc/checkin/setup.sh`.)\n\n### Option B: Manual (Azure portal)\n\n1. Go to [Azure Portal](https://portal.azure.com) → Azure Active Directory → App registrations\n2. **New registration**\n   - Name: `checkin`\n   - Supported account types: Accounts in this organizational directory only\n3. **Authentication** → Add a platform → Mobile and desktop applications\n   - Check `https://login.microsoftonline.com/common/oauth2/nativeclient`\n   - Enable **Allow public client flows** (required for device code flow)\n   - Save\n4. **API permissions** → Add a permission → Microsoft Graph → Delegated permissions:\n   - `User.Read`\n   - `Mail.ReadWrite`\n   - `Mail.Send`\n   - `Calendars.Read`\n   - `Chat.ReadWrite` ← requires admin consent\n5. Copy **Application (client) ID** and **Directory (tenant) ID** from the Overview page\n\nCreate the config file:\n\n```bash\nmkdir -p ~/.config/checkin\ncat \u003e ~/.config/checkin/config.json \u003c\u003c 'EOF'\n{\n    \"client_id\": \"YOUR_CLIENT_ID_HERE\",\n    \"tenant_id\": \"YOUR_TENANT_ID_HERE\",\n    \"enable_teams\": true\n}\nEOF\n```\n\n### Admin Consent\n\nMost enterprise tenants require admin consent for all permissions. Ask your IT admin to grant consent:\n\n```bash\naz ad app permission grant --id YOUR_CLIENT_ID --api 00000003-0000-0000-c000-000000000000 --scope \"User.Read Mail.ReadWrite Mail.Send Calendars.Read Chat.ReadWrite\"\n```\n\nWithout admin consent, checkin won't be able to authenticate at all in locked-down tenants. If only `Chat.ReadWrite` is blocked, set `\"enable_teams\": false` in config to use email and calendar without Teams.\n\n## Usage\n\n```\n$ checkin\n\n  📅 Standup with Tony — in 47 min · 10:30 AM — Online\n\n  📧 unread emails (3):\n    1. Alex K. — \"Deck revisions\"              (10 min ago · 9:42 AM)\n    2. Jordan R. — \"RE: Contract draft\"         (1 hour ago · 8:53 AM)\n    3. Newsletter — \"Weekly digest\"             (3 hours ago · 6:48 AM)\n\n  💬 pending chats (2):\n    4. Sam P. — \"quick question on timeline\"    (32 min ago · 9:20 AM)\n    5. Riley T. — \"can you check the numbers\"   (1 hour ago · 8:51 AM)\n\n  Commands:\n    \u003cN\u003e      view message      r\u003cN\u003e     reply\n    d\u003cN\u003e     mark read (done)   x       mark all read \u0026 quit\n    r        refresh            q       quit\n\ncheckin\u003e 1\n  (shows full email body)\n\ncheckin\u003e r4\n  Reply in Sam P.:\n  (end with `.` on a line by itself, or Ctrl-C to cancel)\n  \u003e Should be ready by EOD tomorrow.\n  \u003e Let me know if you want to walk through it on a call.\n  \u003e .\n  Sent.\n\ncheckin\u003e d3\n  Marked as read: Weekly digest\n\ncheckin\u003e x\n  All marked as read.\n```\n\n## Files\n\n- `~/.config/checkin/config.json` — client ID, tenant ID, and enable_teams flag\n- `~/.config/checkin/token.json` — cached OAuth token (auto-created)\n\n## Permissions\n\n| Permission | What it does | Admin consent? |\n|---|---|---|\n| User.Read | Verify authentication | No |\n| Mail.ReadWrite | Read and mark-read emails | No |\n| Mail.Send | Reply to emails | No |\n| Calendars.Read | Show next meeting | No |\n| Chat.ReadWrite | Read/reply Teams chats | Yes |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexcelano%2Fcheckin-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexcelano%2Fcheckin-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexcelano%2Fcheckin-cli/lists"}