Build1 distinct publisher3 min readPublished
FreeRDP has spoken AVD's ARM gateway for a while. What Linux lacked was something to sign into Entra ID and pull each resource's .rdp file. An unofficial MIT-licensed Flatpak now does that, and ships its own FreeRDP.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
Getting a token is the hard part of feed discovery, not the GET. AVD Feed + Connect runs the OAuth2 authorization-code flow with PKCE inside an embedded WebKit view, which the developer describes as the same flow the official clients use [11]. The reason given is specific: many tenants run Conditional Access policies that block the device-code flow, and device code is what most CLI tools reach for [12]. The cheap implementation, print a code and send the user to a browser, therefore fails at sign-in in exactly the locked-down tenants that buy AVD in the first place.
With a token in hand, the app calls rdweb.wvd.microsoft.com/api/arm/feeddiscovery, and because the service checks for an approved X-MS-User-Agent value, the app sends one it accepts [13]. The response carries the workspaces, the resources and their icons [14]. A double-click downloads that resource's .rdp and launches a bundled sdl-freerdp with /gateway:type:arm /sec:aad [15]. Those two flags have been in recent FreeRDP builds for a while [4], which is the whole argument for where the gap was: the protocol was handled, and the per-resource gateway address and identity that live inside each feed-issued .rdp file were not, because nothing on Linux fetched them [5][6]. Access tokens are renewed with the standard refresh_token grant and offline_access, so a session does not re-prompt every hour [16].
The bundling decision is the part I would have pushed back on at review, and the reasoning holds up. Shelling out to whatever xfreerdp sits on PATH inherits two defects that surface during Teams calls [18]. Plugging or unplugging headphones mid-call can drive the PulseAudio backend into a busy loop in rdpsnd that freezes the whole session; the bundled build carries the fix from FreeRDP#13334 [19]. Stock builds also have no camera redirection, so this one is compiled with CHANNEL_RDPECAM_CLIENT, with microphone and multi-monitor enabled [20]. Packaging as a Flatpak pins that exact build regardless of distro, and keeps it from colliding with a system FreeRDP used for other work [21].
Adopting it means taking on three moving parts with one person behind them: a signed remote on GitHub Pages that normal flatpak update pulls from [22], a FreeRDP build carrying a patch, and an embedded browser view that handles enterprise credentials [11].
For the sign-in claim to transfer to your tenant, your Conditional Access configuration has to be the kind the post actually exercised. It reports working where policy blocks the device-code flow [12]. It does not report behaviour under a policy that requires a compliant device or an approved client application [26].
The developer's own line about the alternative is the fairest sentence in the post: the web client is what you fall back to when you have given up [28]. That is the bar here, and on local audio devices, camera, multi-monitor and clipboard richness the native client clears it [7]. What the write-up leaves unsettled is who rebuilds the Flatpak the week a new FreeRDP release changes behaviour underneath it [25].
Ranked by verification strength, evidence, and original report placement.
Microsoft ships Azure Virtual Desktop and Windows 365 clients for Windows, macOS, iOS, Android and the web, and nothing for Linux.
AVD Feed + Connect is an unofficial, MIT-licensed, native Linux client for AVD and Windows 365 that signs in with an Entra ID account and shows the desktops and remote apps the account is entitled to.
Installation is a single flatpak install --user command against a .flatpakref at shakeelosmani.github.io, and the app runs as io.github.shakeelosmani.avd_feed_connect.
Recent FreeRDP versions speak AVD's ARM gateway and Entra ID auth using the flags /gateway:type:arm /sec:aad.
AVD is a feed rather than a direct RDP host: the client calls a discovery endpoint, gets the list of assigned workspaces, and for each resource downloads an .rdp file carrying a per-resource gateway address and identity.
Nothing on Linux fetches those per-resource .rdp files for you, according to the developer's post.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · September 4, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
security
Stolen logins, not a SaaS breach: nine enterprises' Entra directories are now for sale5 distinct publishers
build
Same-day GPT-5.6 on Azure kills the parity argument, leaving auth and residency to decide1 distinct publisher
build
Epic confirms a native Linux launcher, but the anti-cheat job posting is the real tell1 distinct publisher
build
Bind the consent policy, not the admin role: Entra's answer to the agent consent queue1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One post, unusually checkable
Every fact here traces to the maintainer's own dev.to post, and that post is more falsifiable than most launch write-ups: a reverse-DNS app id, a discovery URL, a named FreeRDP pull request, a compile flag, two CLI invocations. Primary detail is not corroboration, though. Nobody outside the project has run this against a tenant the developer does not control, and the claims that describe Microsoft's side — that the feed endpoint gates on X-MS-User-Agent, that many tenants block device-code sign-in — rest on his testing alone.
A launch and a help-wanted list
What exists is one release announced by its author. He calls the project early, marks remote-app support as unfinished, wants testers across distros and Conditional Access setups, and lists a Flathub listing as planned. No install counts, issue traffic, packaging by a distro, or named user appears anywhere in this reporting.
Title outruns the shipped surface
'The Linux client Microsoft never shipped' is a bigger promise than the software makes: full desktops are the working path, remote apps still need polish, and enterprise sign-in has been proven in the tenants one person can reach. The technical claims underneath the title stay narrow and specific, which keeps the overshoot modest rather than serious.
The maintainer's own launch post
The sole account of this project is its author's, published on a developer platform and closing with a repo link and a request for testers. He is candid about what does not work, which counts for something, but the comparison that frames the piece — web client hobbled, Remmina insufficient, hand-authored .rdp files fragile — is drawn by the person with a client to place.
Solid on mechanics, thin on durability
The mechanics are safe to rely on: the install path, the auth flow, the discovery call and the bundled FreeRDP are stated precisely and by the person who wrote them. Where the reading weakens is anything requiring a second party — tenant policies the developer cannot reach, Microsoft's tolerance for the header the app sends, and who keeps the Flatpak building after the next FreeRDP release.