Skip to content
Dev Tools Article

Bor Wants to Be Group Policy for Linux Desktops

An LGPL server-and-agent stack streams typed policies over mTLS in real time — and refuses to run scripts.

Rachel Goldstein
Rachel Goldstein
Dev Tools Editor · Aug 3, 2026 · 4 min read
Bor Wants to Be Group Policy for Linux Desktops

Managing a fleet of corporate Linux desktops has always meant assembling your own tooling out of parts designed for servers. Windows admins get Group Policy and Intune; Mac admins get MDM profiles. Linux admins get a cron job running ansible-pull and a prayer that nobody edits the dconf database between runs. Bor, an LGPL-licensed policy manager that just shipped v0.8.0 and hit the Hacker News front page this weekend, is the most credible open-source attempt in years to close that gap — and the most interesting thing about it is what it refuses to do.

A policy engine, not a remote shell

Bor's architecture is deliberately small: a single Go server binary backed by PostgreSQL, and a lightweight Go agent on each endpoint. Agents hold a persistent mTLS/gRPC stream open to the server (TLS 1.3, client certs from an auto-generated internal CA, one-time token enrollment), and policy changes are pushed down the moment they're released — no polling interval, no convergence loop. The agent translates typed policies into native formats: a managed policies.json for Firefox, dconf keys with lockdown for GNOME, KDE Kiosk restrictions, polkit rules, firewalld zones.

The v0.8.0 release adds Thunderbird, Microsoft Edge for Business, and firewalld zone policies, plus per-action RBAC and a rebuilt web UI. Older agents simply ignore policy types they don't understand, which is the right call for staged fleet upgrades.

But the design decision that defines the project is this one, from creator Blagovest Petrov in the HN thread: "Once a management agent runs arbitrary scripts as root, it stops being a policy system and becomes remote-code-execution-as-a-service."

That's a direct shot at how every general-purpose configuration tool works. Ansible, Puppet, and Salt are Turing-complete by design — enormously flexible, and exactly why a compromised control node is a fleet-wide catastrophe. The 2021 Kaseya incident demonstrated what happens when management agents with arbitrary execution become supply-chain targets. Bor's agent can only write a closed set of policy file formats. That constrains what it can manage, but it also means the blast radius of a compromised Bor server is "your browsers get bad settings," not "every workstation runs attacker code as root." For the security-review conversation you'll have before deploying any root agent on employee laptops, that's a meaningfully different pitch.

The enforcement model matches Windows semantics more than Unix ones, too. The agent watches managed files with inotify and reverts local modifications immediately, with the drift event audited server-side. That's Group Policy's "the platform owns this setting" behavior — not Ansible's "we'll fix it on the next run, whenever that is."

The graveyard Bor is walking through

Skepticism is warranted here, because this problem has killed projects before. Red Hat's Fleet Commander promised centrally managed GNOME desktop profiles and quietly stalled years ago. Samba has long advertised Group Policy support for Linux clients, but as Petrov argued on HN, it's never matured into something you'd bet a fleet on — and it inherits all of Active Directory's baggage. Canonical's Landscape is the closest commercial analogue, but it's proprietary, subscription-gated, and Ubuntu-first. FreeIPA handles identity, sudo rules, and host-based access control beautifully while having essentially nothing to say about browser settings or desktop lockdown. And Microsoft Intune's Linux support remains compliance-check theater compared to what it does on Windows.

So the field is genuinely open. What's changed since Fleet Commander's era is that the policy surfaces worth managing have standardized: Mozilla's policy templates give Firefox real enterprise policy files, Chromium and Edge honor managed-policy JSON on Linux, and dconf lockdown and KDE Kiosk are stable. Bor isn't inventing enforcement mechanisms; it's putting a distribution and audit layer over ones the platforms already ship. That's a much better bet than what earlier projects attempted.

Adopting it, and what should stop you

The on-ramp is short: the server runs via Podman or Docker Compose with PostgreSQL, agents install from native packages for Debian/Ubuntu, RHEL/Fedora/SUSE, Alpine, and Arch (x86_64, aarch64, even ppc64le), and enrollment is a one-time token. LDAP, Kerberos, and WebAuthn are already supported for admin auth; OAuth/SAML SSO is planned but not there yet. If you're currently maintaining a repo of Ansible roles whose only job is templating policies.json files and dconf profiles onto workstations, Bor replaces that directly — with real-time push, tamper reversion, and an audit log you can hand to an auditor instead of a git history.

The honest counterweights: this is a pre-1.0 project from a single small company (Vute Tech), first announced publicly this spring, with a GitHub repo sitting around a hundred stars. The no-scripts principle means real coverage gaps — no disk-encryption attestation, no OS patching orchestration, no compliance reporting engine — so it complements rather than replaces your patching and inventory tooling. And if your fleet is mixed-OS, Bor solves exactly one third of your problem, which is why Intune limps along in so many shops despite being bad at Linux.

Verdict

Bor is doing the unfashionable thing correctly: a narrow tool with a defensible security model, native packaging, boring dependencies, and an LGPL license, aimed at a real hole in the Linux ecosystem. It is not production-armor yet — the version number, the bus factor, and the policy coverage all say "pilot, don't standardize." But the design taste on display is exactly what this niche has been missing since Fleet Commander died. If you run more than a few dozen Linux desktops, enroll a test group now; if the project survives to 1.0 with a community bigger than its sponsor, it becomes the default answer to a question that's gone unanswered for fifteen years.

Sources & further reading

  1. Bor v0.8.0 released — getbor.dev
  2. Show HN: Bor - Open-source policy management for Linux desktops — news.ycombinator.com
  3. VuteTech/bor: Bor Enterprise Linux Desktop Policy Management — github.com
  4. Bor - Enterprise Linux Desktop Policy Management — getbor.dev
Rachel Goldstein
Written by
Rachel Goldstein · Dev Tools Editor

Rachel has been embedded in the developer tooling ecosystem for nearly eight years, covering everything from IDE wars and package-manager drama to the quiet rise of AI-assisted coding. She has a soft spot for open-source maintainers and an unhealthy number of terminal emulators installed on a single laptop.

Discussion 0

Join the discussion

Sign in or create an account to comment and vote.

No comments yet

Be the first to weigh in.

Related Reading