Early preview · 0.1 · MIT

Teams, light as a bird.

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.

Wren's chat view in light mode, with the conversation list on the left and a conversation on the right Wren's chat view in dark mode, with the conversation list on the left and a conversation on the right
Fig. 1 Chats, demo data1280 × 800
Launch to first frame
101–120ms
across six demo launches
Idle CPU, window open
0.0%
draws only when something changes
Memory footprint
57MiB
settled offline demo
Binary / app bundle
~16MiB
one small binary
Measured on a Mac mini (Apple Silicon, macOS 27), release build with demo data. Details and method.
01 · Features

Everything you open Teams for.

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.

Chats, complete

List, unread, history, send, quote replies, reactions, edit, delete and mark read. Start new chats, @mention people and send files through OneDrive.

Teams and channels

Threaded posts and replies. Reading channel posts needs admin consent in your tenant.

Rich text, rendered natively

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.

Search, local first

Local full-text search plus Microsoft Search, and a ⌘K switcher to jump anywhere.

Calendar and meetings

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.

Multiple accounts

Presence and photos, switching accounts, and setting your availability and status message.

Yours to tune

Light, dark and system themes, 8 palettes, keyboard shortcuts, tray and notifications.

Real-time, by the rules Push: experimental

Refreshes on open, focus and refresh. Push arrives through a self-hostable wren-relay, since Microsoft forbids polling.

Verified updates

Daily checks and verified downloads from GitHub releases. Restart when you're ready.

02 · Screens

Dense, calm, readable.

Screenshots from the repository. Run the offline demo, wren --demo, to see it yourself without an account.

03 · Field notes

What it won't pretend to do.

Wren uses only official, documented Microsoft APIs. Where those APIs stop, Wren says so instead of working around them.

Calls and meetings

Works

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.

Calls inside Wren

Not possible

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.

Real-time push

Experimental

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.

Consent

Expect it

In most tenants an administrator must approve Wren's permissions. Wren shows an admin-consent link under Settings.

Personal accounts

Unsupported

Personal Microsoft accounts and Teams (free) are not supported; Graph's Teams APIs serve work and school accounts only.

No telemetry, no Wren server

There is nothing between you and Microsoft Graph that Wren operates.

Tokens in the OS keychain

Refresh tokens live in the OS credential store, never in files.

Messages stay local

Your messages are cached only on your computer, and signing out deletes them.

04 · Install

From clone to demo.

Build from source on macOS, Linux or Windows. Try the offline demo first, then point it at your Microsoft 365 work or school account.

Try the demo

No account needed.

$ git clone https://github.com/MaxTheTurtle0/wren && cd wren $ cargo run --release -- --demo

Linux needs libxkbcommon-dev libwayland-dev libgl1-mesa-dev (Debian and Ubuntu package names) to build.

Use your account

Wren signs in through an app registration in your organisation's Entra ID. It ships no shared client ID.

  1. Register the app (about five minutes, no secrets): azure-app-registration.md.
  2. Start Wren, enter the Application (client) ID and your tenant, and select Sign in with Microsoft. Or set WREN_CLIENT_ID and WREN_TENANT.
  3. Get consent. An administrator usually approves Chat.ReadWrite, Calendars.Read and ChannelMessage.Read.All. Every permission explained.

Build packages

CI builds all three platforms on every push to main.

# set CODESIGN_IDENTITY first $ cargo build --release && packaging/macos/bundle.sh target/release/wren Wren.app 0.1.0

Signed-in use needs a persistent code-signing identity so Keychain approval survives updates. Why.

Nothing is published as a release yet. Version tags will create a signed draft release with packages that support automatic updates. Until then, build from source or grab a CI workflow artifact.
05 · Keyboard

Hands stay on the keys.

⌘ is Ctrl on Windows and Linux.

Jump anywhere or search ⌘K
New chat ⌘N
Sections ⌘1–4
Previous or next conversation Alt ↑/↓
Next account ⌘⇧A
Edit last message ↑
New line Shift Enter
Refresh ⌘R
All shortcuts ⌘/

Small binary. Big relief.

Wren is open source under the MIT licence. Read the code, try the demo, or follow along on GitHub.