Chats, complete
List, unread, history, send, quote replies, reactions, edit, delete and mark read. Start new chats, @mention people and send files through OneDrive.
A fast, native client for Microsoft Teams chats, channels and meetings. Rust and egui. No browser engine. Official Microsoft Graph APIs only.
Works with Microsoft Teams. Not affiliated with or endorsed by Microsoft.
Microsoft's Teams client is a large web application. Wren is a purpose-built native messaging client: a window that draws only when something changes, bounded image caches, and every view served from a local cache first.
List, unread, history, send, quote replies, reactions, edit, delete and mark read. Start new chats, @mention people and send files through OneDrive.
Threaded posts and replies. Reading channel posts needs admin consent in your tenant.
Mentions, emoji, links, code and inline images, drawn from Teams HTML without a browser engine. Click any image for a full preview with fit and 100% views.
Local full-text search plus Microsoft Search, and a ⌘K switcher to jump anywhere.
Meeting reminders and Join. Calls open in Teams on the web in their own window beside Wren, with the meeting chat and a call bar in Wren.
Presence and photos, switching accounts, and setting your availability and status message.
Light, dark and system themes, 8 palettes, keyboard shortcuts, tray and notifications.
Refreshes on open, focus and refresh. Push arrives through a self-hostable wren-relay, since Microsoft forbids polling.
Daily checks and verified downloads from GitHub releases. Restart when you're ready.
Screenshots from the repository. Run the offline demo, wren --demo, to see it yourself without an account.




Wren uses only official, documented Microsoft APIs. Where those APIs stop, Wren says so instead of working around them.
Join meetings and start audio or video calls in Teams on the web, in its own Edge or Chrome window beside Wren. It's free, since the call runs in Microsoft's client.
Audio and video in Wren's own window, and incoming calls: there is no free official way. Microsoft's licence covers call media only in its own clients, and Graph's calling API is meant for bots.
Polling Graph for Teams changes breaks the Microsoft APIs Terms of Use. Run the small wren-relay on any HTTPS host: it forwards Graph's content-free change notifications to Wren.
In most tenants an administrator must approve Wren's permissions. Wren shows an admin-consent link under Settings.
Personal Microsoft accounts and Teams (free) are not supported; Graph's Teams APIs serve work and school accounts only.
There is nothing between you and Microsoft Graph that Wren operates.
Refresh tokens live in the OS credential store, never in files.
Your messages are cached only on your computer, and signing out deletes them.
Build from source on macOS, Linux or Windows. Try the offline demo first, then point it at your Microsoft 365 work or school account.
No account needed.
Linux needs libxkbcommon-dev libwayland-dev libgl1-mesa-dev (Debian and Ubuntu package names) to build.
Wren signs in through an app registration in your organisation's Entra ID. It ships no shared client ID.
WREN_CLIENT_ID and WREN_TENANT.Chat.ReadWrite, Calendars.Read and ChannelMessage.Read.All. Every permission explained.CI builds all three platforms on every push to main.
Signed-in use needs a persistent code-signing identity so Keychain approval survives updates. Why.
⌘ is Ctrl on Windows and Linux.
Wren is open source under the MIT licence. Read the code, try the demo, or follow along on GitHub.