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
Call
stops when a person talks
Meeting
presents, calls on hands
Chat
posts as itself
DEDigital 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.