Skip to content

Getting Started ​

LazyTeams is a fast, keyboard-driven Microsoft Teams client that runs entirely in the terminal. No Electron, no browser — just a single static Go binary.

Requirements ​

  • OS: Linux, macOS, or Windows
  • Go: 1.26.6+ (to compile)
  • Microsoft Teams account: university or enterprise - does not work on personal accounts
  • Firefox: required by the auth helper (Playwright)

Installation ​

Clone, build the TUI and the auth helper, and put both in your PATH:

bash
git clone https://github.com/agmonetti/lazyteams.git
cd lazyteams
go build -o lazyteams .
go build -o lazyteams-auth ./cmd/auth-helper/
mkdir -p ~/.local/bin
mv lazyteams lazyteams-auth ~/.local/bin/

Ensure ~/.local/bin is in your $PATH.

Note: Binaries built directly with go build report dev as their version. Build through make build VERSION=v1.2.3 or make dist VERSION=v1.2.3 to embed a version (shown by ./lazyteams --version).

First-time setup ​

1. Grant Microsoft Graph permissions (one-time) ​

Before running the auth helper for the first time, grant permissions manually via Graph Explorer:

  1. Sign in with your Microsoft/organizational account.
  2. Go to the Modify permissions tab.
  3. Enable each permission below.
PermissionPurpose
User.ReadRead your profile
User.Read.AllSearch users for DMs, @mentions, member management
Team.ReadBasic.AllList your teams
Channel.ReadBasic.AllList channels
Chat.ReadBasicRead chat names and members
GroupMember.Read.AllRead team members
Team.Create(Optional) Create teams (N)
Presence.Read.AllRead presence status
Presence.ReadWriteSet your presence
Files.ReadWrite.AllAccess and upload files
Sites.Read.AllAccess SharePoint sites (Class Materials, etc.)

Note: Some organizations (e.g. universities) restrict which permissions users can consent to. If Chat.ReadBasic shows "Need admin approval", contact your IT administrator.

2. Capture tokens ​

bash
lazyteams-auth

A browser window opens for login and captures the required tokens automatically (~90 seconds the first time). On later runs it goes headless and renews expired tokens on its own.

Auth process demo ​

Watch the full first-time auth flow — browser login, automatic token capture, and the saved session:

A signed-in session looks like this:

LazyTeams main interface after login showing authenticated Teams and channels workspace

3. Run ​

bash
lazyteams

If you see an error like:

HTTP 403: Missing scope permissions on Chat. API requires one of 'Chat.ReadBasic, Chat.Read, Chat.ReadWrite'

re-check the permissions in step 1 and make sure Chat.ReadBasic has been consented.

See it in action ​

LazyTeams terminal UI interactive demonstration showing fast message navigation and replies

CLI reference ​

lazyteams ​

CommandDescription
lazyteamsStart the TUI
lazyteams --debugStart the TUI with diagnostic mode enabled
lazyteams --updateCheck for and install the latest release (TUI + auth helper)
lazyteams --version / -vShow the build version
lazyteams --help / -hShow usage, auth commands, and config paths

lazyteams-auth ​

CommandDescription
lazyteams-authFull token capture (first run)
lazyteams-auth --renew graphRenew MS Graph token (opens browser)
lazyteams-auth --renew fabricRenew Fabric token (opens browser)
lazyteams-auth --renew webRenew Teams Web token (headless)
lazyteams-auth --renew eduRenew EDU/Assignments token (headless)
lazyteams-auth --renew notifRenew Notifications token (headless)
lazyteams-auth --showForce browser visible
lazyteams-auth --headlessForce headless mode
lazyteams-auth --debugEnable detailed diagnostic output (written to auth-helper.log by default)
lazyteams-auth --version / -vShow the build version
lazyteams-auth --clear-sessionDelete browser session (forces re-login)
lazyteams-auth --clear-tokensDelete saved tokens

--clear-session and --clear-tokens can be combined: lazyteams-auth --clear-session --clear-tokens resets the entire installation.

Next steps ​