Screenshots

A look at the Bor web console and agent in action

Dashboard

Fleet overview with node status indicators, OS distribution, policy counts, binding coverage by group, and certificate expiry tracking.

Bor Dashboard

Policies

Browse and manage desktop policies with search, filtering by type, status, and bindings. Each update creates a new immutable version.

Policies List

Creating a Policy

Create a new policy by selecting its type and initial state. Policies start in draft and are only delivered to agents once explicitly released.

Create Policy Dialog

Firefox Policy Configuration

Configure granular Firefox ESR settings organised by category — updates, privacy, network, security, homepage, and extensions — with per-key lock support.

Firefox Policy Configuration

dconf / GNOME Policy

Define dconf key-value entries that the agent writes to the managed GNOME desktop. Each entry can optionally be locked to prevent user override.

dconf GNOME Policy Configuration

KDE/KConfig — System Settings Restrictions

Restrict access to individual KDE System Settings modules by category — window manager, appearance, screen lock, security, and more. Modules marked as restricted are hidden from users entirely.

KDE KConfig System Settings Module Restrictions

Polkit Policy

Author Polkit rules through a structured form — define action IDs, groups, session requirements, and result (allow / deny / authenticate). Bor generates and deploys the JavaScript rule automatically.

Polkit Policy Configuration

Nodes

Monitor enrolled desktop agents with connectivity status, OS, desktop environment, group membership, and details such as FQDN, IP address, and agent version.

Nodes Management

Node Groups

Organise nodes into logical groups. One-time enrollment tokens are generated per group and expire after five minutes.

Node Groups and Enrollment Tokens

Policy Bindings

Assign policies to node groups. Nodes inherit all bindings from every group they belong to. A priority field controls which binding wins when multiple policies of the same type apply to the same node.

Policy Bindings

Creating a Policy Binding

Bind a policy to a node group in one step — select the policy, the target group, set the binding state and priority, and confirm. Changes are streamed to affected agents immediately.

Create Policy Binding Dialog

Audit Logs

Every administrative action is recorded with a timestamp, actor, source IP, resource type, and resource ID. Logs are searchable, filterable, and exportable as CSV or JSON.

Audit Logs with Event Detail

Desktop Notifications

The Bor agent notifies the user on the desktop when a policy is updated, prompting them to restart affected applications for the change to take effect.

Desktop Notification from Bor Agent

MFA Settings

Enforce TOTP multi-factor authentication for all local user accounts. The TOTP algorithm is configurable — SHA256 for broad compatibility or SHA512 for a higher security margin.

MFA Settings

Account Security

Users can secure their account with a second factor: a TOTP authenticator app (FreeOTP, Google Authenticator, or any compatible app) or a hardware or software security key via WebAuthn/FIDO2 (YubiKey, Bitwarden, 1Password).

Account Security — TOTP and WebAuthn setup

Dark Theme

The web console ships with a dark theme for comfortable use in low-light environments.

Dark Theme

High Contrast Theme

A high-contrast theme is available for improved accessibility and readability.

High Contrast Theme

Package Policy — Repositories

Add APT, DNF/YUM, or Zypper repositories to a Package policy. Fields adapt to the selected repository type; GPG key upload is supported for all types.

Package Policy — Repositories tab

Package Policy — Packages

Manage individual packages with desired state (present, absent, or latest), optional version pinning, and an optional flag for non-critical packages.

Package Policy — Packages tab

Ubuntu PPA Import

Enter a ppa:owner/name address and select an Ubuntu codename. The server fetches the repository URI and signing key from Launchpad automatically.

Add Ubuntu PPA dialog

openSUSE 1-Click (.ymp) Import

Upload a .ymp file and the server parses it, populating repositories and packages in one step. The banner confirms how many repositories and packages were imported.

openSUSE .ymp import result