Capability

AI teammates inside Microsoft Teams and team chat

A colleague people can call, interrupt and invite to meetings, under an identity the organisation governs

C# media bridge · Rust voice engineMicrosoft 365 identitySpeech on my own GPUs
One identity · three surfaces · one brain at home
DE Digital employeeits own Microsoft 365 identity; the credential stays on the server
My GPUs
speech and the brain
Call audio never reaches a third-party AI cloud
  • 30 minTeams media soak from Azure to my own GPUs, zero receive stalls
  • 67 msround-trip media latency across the bridge at most, 65 ms at best, single probe
  • 13meeting actions, each with an exact schema, served under the employee's identity

I built a digital employee in my own Microsoft 365 tenant. It answers calls with speech models on my own GPUs, stops when a person talks over it, joins meetings and posts in chat as itself. Underneath is the real-time media bridge I built between Microsoft's Windows-only media stack and a Linux voice engine. Start with A self-hosted colleague in a Teams call.

One call, two operating systems, one audio seam
Azure · Windows
Media bridgejoins the call on Microsoft's real-time media SDK and moves 20 ms audio frames; it holds no intelligence
My GPUs · Linux
speech recognition, the conversation engine and the voice; the engine cannot tell a Teams call from a local microphone
The link · one authenticated binary channel per call

Written twice, in C# and in Rust, and proven byte-identical against golden vectors before either was trusted. The pale frame is a forced mid-call reconnect: one 250 ms retry, and the audio from the gap is dropped rather than replayed, so the colleague never answers a question from twenty seconds ago.

Microsoft hands raw call audio only to a Windows application; the brain stays on hardware I own.

I worked out the Microsoft identity layer from real tenant evidence where the documentation ran out.

Three principals, composed rather than forced
IDagent identity: answers calls under the employee's name
MEDtransport-only client: owns the media
BOTcalling bot: places outbound calls as itself, never spoofed
AIasks, naming the employee
server: holds the certificate, mints an employee-scoped token, checks it in-process
The model never holds a token. Microsoft remains the authority on what the employee may do.

In a meeting it is a participant, not a listener. See Solving the digital-employee identity and A meeting attendee that will not fake it.

The room
Stagea deck it drives from an installed stage app

It sees who is present and who has a hand up, and calls on them.

What it does there
Shares a screenterminal, browser or desktop, typed at a speed people can follow
Chats as itselfits messages are its own, bound to the employee
Joins and leavesand stops cleanly
Raises its own handunavailable: a typed refusal, never a flag kept locally
Where the platform offers no supported path, the action fails closed with a named reason.