Manage Microsoft Teams telephony — auto attendants, call queues, and phone numbers — from one desktop app.
PhoneDesk is a self-contained .NET desktop app for administering Microsoft Teams Phone without writing PowerShell.
- Auto attendants, call queues, holidays, resource accounts, and Microsoft 365 Groups
- Guided setup, bulk operations, and tenant documentation
- Native Windows, macOS, and Linux builds with dark and light themes
More screenshots — setup wizard, call queues, auto attendants, holidays, bulk operations, and more
Setup wizard |
Get started |
Call queues |
Auto attendants |
Holidays |
Bulk operations |
Microsoft 365 Groups |
Variables |
Documentation |
Light theme |
Download the latest build from GitHub Releases. PowerShell 7 and the required Microsoft modules are included.
Run phonedesk-win-x64-setup.exe. It supports per-user and all-users
installation and upgrades in place. Until code signing is enabled, Windows may show a
SmartScreen warning.
Portable alternative: download phonedesk-win-x64.zip, extract, run
phonedesk.exe.
For Intune, Configuration Manager, or an RMM:
.\phonedesk-win-x64-setup.exe /ALLUSERS /DIR="C:\Program Files\PhoneDesk" /VERYSILENT /SUPPRESSMSGBOXES /NORESTARTUse /CURRENTUSER for per-user deployment and /DIR="C:\Path" for a managed install
location. Keep the same scope and path when upgrading.
brew tap realgarit/tap
brew trust realgarit/tap
brew install --cask phonedeskUpdate with brew upgrade --cask phonedesk. Manual Apple Silicon and Intel
downloads are also available on the releases page.
Download phonedesk-linux-x64.zip, extract, then:
chmod +x phonedesk
./phonedeskThe app checks GitHub Releases at startup and shows a non-blocking update indicator. On Windows, updates can be downloaded, SHA-256 verified, and installed in the app. macOS and Linux updates continue through Homebrew or GitHub Releases.
Requires the .NET 10 SDK.
dotnet restore
dotnet build
dotnet test PhoneDesk.Tests/PhoneDesk.Tests.csproj
dotnet runBuilt with Avalonia, CommunityToolkit.Mvvm, Microsoft.PowerShell.SDK, and MSAL.
Releases use Conventional Commit PR titles. Release Please opens the version PR; merging it creates the tag, release notes, platform packages, and Homebrew update.
The app ships with pinned versions of MicrosoftTeams and the Microsoft.Graph.* modules it
needs, declared in Scripts/module-versions.json. CI reads
this file at build time (Scripts/download-modules.ps1 / .sh) to download exactly those
versions into Modules/, which are bundled into every published build. The pinned versions
are also surfaced in the app itself, in Settings → About, alongside the bundled
PowerShell SDK version.
The module-compatibility.yml workflow runs
weekly (and on manual dispatch) to check the PowerShell Gallery for newer releases of the
pinned modules. When a newer version is found, it bumps module-versions.json, builds and
tests against the update, and opens a pull request if that succeeds (or an issue with the
failure details if it doesn't) — the pins are never bumped automatically without a passing
build.
To bump a pinned version manually: edit Scripts/module-versions.json and either run
Scripts/download-modules.ps1 / .sh locally to re-download Modules/, or just push the
change — the next CI build downloads the updated versions automatically.
MIT © 2026 Patrik Lleshaj. See LICENSE.










