NVIDIA workstation
The full range, including HEVC 4:4:4 10-bit, on Linux and Windows.
Implementation reference
This page describes Arcen v0.19.0, released on 12 November 2026 from the public repository. It separates what was tested on real hardware, what ships as a preview and what does not exist yet. The release page and the repository README are the source of truth.
What's new in v0.19.0
Native tablet ships. A Wacom on the Mac's desk can be attached to the
remote desktop as if it were plugged into the host, so the host's own
tablet driver, pressure curves and side switches apply. Each row says
how far it is proven. Every addition is negotiated: v0.17.0 Decks
and Piers keep working with v0.19.0, without the new features. The
full notes are on the
release page
and in the repository's CHANGELOG.md.
| Change | What it does, and how far it is proven |
|---|---|
| Native tablet on Linux Piers | Administrator opt-in In every Linux Pier, off until an administrator runs the installer with --native-tablet or sets usb.native_tablet to "enabled". It uses the distribution's own signed USB/IP controller (vhci-hcd), not a self-built kernel module. LAN only; the tablet reaches only the signed-in desktop, never the login screen. |
| X11: on the first connection | Real Wacom The tablet joins the X11 desktop the moment the Deck connects: no sign-out, no restart, no waiting screen. Proven with a real Wacom Intuos5 bridged from a Mac to a Rocky Linux 9 X11 Pier: first-connection hot-plug, drawing with pressure, the Deck's pen dot and hand-back to the Mac. After installing, restart the display manager once (or reboot) before the first connection. |
| Wayland (GNOME, native seat) | Real Wacom A native-seat GNOME Wayland desktop takes the bridged tablet on its own seat, where GNOME adds it like a tablet plugged in there. Proven with a real Wacom Intuos5 on a Rocky Linux 10 GNOME Pier: hot-plug, drawing with pressure, the pen dot and hand-back. Headless Wayland desktops refuse Native tablet with a reason. |
| One pen dot, on every Pier | Linux, macOS Piers The Pier reads the pen's own reports and the Deck draws a pen dot where the pen points, so the dot follows the pen instead of the host's smoothed pointer. Measured with an emulated Intuos5 on an X11 host at one pen report per 41 ms round trip, the dot reaches the Deck a median 16 ms behind the pen, against 80 ms when it followed the X pointer. Any Mac mouse motion takes the cursor back at once, and the Mac pointer is never warped. Recommended pairing: Native tablet with Local cursor rendering. |
| Hand-back to the Mac | Real Wacom When the session ends the Deck resets the tablet before releasing it, so macOS sees an unplug and replug and the Mac's Wacom driver takes it back. Before, the tablet could stay dead on the Mac until the Wacom agent restarted. |
| Native tablet on a macOS Pier | Preview For the Wacom Intuos5 touch L the Pier reads the bridged pen itself and posts macOS tablet events with pressure, tilt, eraser and barrel buttons: measured with an emulated pen (pressure 0.059 to 1.0), then proven with a real Intuos5. Other tablet models are refused with their ids, and the Deck keeps the tablet for Tablet support. Touch and ExpressKeys do not reach a macOS Pier. Works on the first connection, never at the login window. |
| Windows Piers | Native tablet is refused by design: it would need a signed kernel driver. The pen works through Windows Ink (Tablet support); Wintab is not supported. The eraser now erases only in contact, both barrel buttons press the Windows Ink barrel, and a pen on a display left of or above the primary lands where it should. The first sign-in after a sign-out no longer fails to start the session. |
| macOS Pier typing and health | The macOS Pier types text from input methods, Characters mode and Paste as Keystrokes, whatever the Mac's layout, emoji and accents included (not at the login window). Tablet support pressure now reaches macOS applications (before, every stroke read as full pressure). The Deck's Connection Health now shows a macOS Pier's delivery and network path. |
| Deck | Option keys get an Automatic setting, the new default. Stream Statistics and Lossless Tile View are in the Session menu, off by default; lossless refinement itself is not enabled in this release. A user guide for artists and editors is in the repository (docs/user-guide.md). |
| Licensing and builds | Arcen's copyright holder is TUTTIFRUTTI AS. Pier and Deck are licensed AGPL-3.0-only, with a store distribution exception; the exception, contributor licence agreement, trademark policy and notice are final (version 1.0). Official builds carry an ID stamped from the published release tag. |
xf86-input-wacom's smoothed pointer, which averages several samples and receives one report per network round trip.--native-tablet; an upgrade keeps the current choice. On X11, restart the display manager once while nobody is signed in at the console, or reboot.Install
Download the files for your platforms from
GitHub Releases
and check them against SHA256SUMS.txt. There is no
runtime to install first, no package repository to add and no service
file to write.
| Component | Release file | Install | Requirements and notes |
|---|---|---|---|
| Linux Pier | install-arcen-pier-0.19.0-linux-x86_64 |
sudo ./install-arcen-pier |
x86_64, systemd, openssl and root. An installed Xorg server keeps the dedicated X11 desktop; without Xorg, a GNOME Shell/Mutter desktop is qualified for Wayland before the service starts. An NVIDIA GPU with NVENC enables the hardware paths; without one, the Pier uses OpenH264. Add --native-tablet to offer Native tablet. |
| Windows Pier | install-arcen-pier-0.19.0-windows-x64.exe |
In PowerShell as Administrator: .\install-arcen-pier.exe, then reboot. |
x64 Windows. The reboot makes the Arcen credential provider visible at the login screen; without it, the first remote sign-in fails. |
| macOS Pier Preview | ArcenPier-0.19.0.pkg |
Open in Installer.app on the Mac being installed. The command-line installer is refused. |
macOS 14.2 or later. Installs a network service under a hidden _arcen account and an Agent Helper in each signed-in session. The helper asks for System Audio Recording, Accessibility and Screen Recording, one at a time. |
| macOS Deck | Arcen-Deck-0.19.0-macOS.zip |
Unzip and drag Arcen Deck to /Applications. |
Apple silicon, macOS 12 or later. Signed and notarised, so it opens normally. AV1 decode needs M3 or later. Native tablet needs macOS 13. |
| macOS Deck Intel | Arcen-Deck-Intel-0.19.0-macOS.zip |
Unzip and drag Arcen Deck Intel to /Applications. |
Intel Macs, macOS 12 or later. Install only the app that matches your Mac; both share one bundle identifier. No AV1. Native tablet needs macOS 13 and is untested on Intel hardware. |
--dry-run shows the plan, --uninstall --purge removes everything, --extra-san <name> adds certificate names and --force replaces an existing certificate.--native-tablet sets usb.native_tablet to "enabled" and, on Rocky Linux and RHEL, installs kernel-modules-internal for the running kernel; --no-native-tablet turns it off and removes that package if the installer added it. On an X11 host, restart the display manager once while nobody is signed in at the console, or reboot.uninstall.sh --purge also resets the privacy approvals given to Arcen./etc/arcen/pier.json on Linux and C:\ProgramData\Arcen\pier.json on Windows.18444.
To check a host from a terminal, run
"/Applications/Arcen Deck.app/Contents/MacOS/arcen-deck" --connect <host> 18444 --credentials-stdin --frames 120 --timeout-secs 60.
It reads the username and password as two lines from standard input
and logs to ~/Library/Logs/Arcen/. Add
--max-fps 60 to request 60 fps.
Default configuration
The Linux, Windows and macOS installers write identical common sections, and a shared contract check fails the build if they drift. Existing configurations are kept on upgrade.
| Setting | Default | Choice |
|---|---|---|
video.bit_depth | "10" | Allows the 10-bit Grading and HDR pipelines when the host can supply them. |
video.encoder | "auto" | Uses NVENC when present; "software-h264" forces OpenH264. |
audio.enabled / audio.compressed | true / true | Opus by default; set compressed to false for uncompressed PCM. |
audio.local_playback | Host speakers silent | Nobody beside the host hears the remote session. |
microphone_input.enabled | true | Works on Linux hosts, and on the macOS Pier preview through a virtual microphone. The Deck still asks for consent on every launch. |
clipboard | Both directions, all content, 8 MiB | One direction, text only or off; maximum 1–20 MiB. |
redirection.timezone | true | The session follows the Deck's time zone on every host. |
platform.multi_monitor.advertise_enabled | true | false turns multi-display off. |
platform.multi_monitor.excluded_adapters | [] | Windows: reserve GPUs, such as an RTX card, for other work. |
platform.multi_monitor.allow_software_fallback | true | Monitors that miss NVENC admission can drop to OpenH264; 4:4:4 monitors cannot. |
platform.desktop.deskside.enabled | false | Blanks the physical screen and locks local input during a session. |
auth.disclaimer.enabled | false | Shows an operator-written notice that must be accepted before credentials are collected. |
tls | Generated PEM, TLS 1.3 | Use your own PEM certificate and key; expected_sans refuses to start on a wrong-name certificate. |
Streaming presets
Auto, Speed, Grading and HDR select separate capture and conversion pipelines with their own admission rules. They are not one 8-bit capture path relabelled. If a host cannot serve the requested result, it reports the lower-fidelity plan to the Deck instead of hiding it.
| Preset | Requested stream | Windows Pier | Linux Pier (Xorg) | macOS Pier (preview) | Deck presentation |
|---|---|---|---|---|---|
| Auto | 30 fps, adaptive 4:2:0 8-bit | DXGI Desktop Duplication when it proves real frames, otherwise WGC BGRA8 | NvFBC → CUDA → NVENC, device-to-device | ScreenCaptureKit → VideoToolbox | SDR VideoToolbox path |
| Speed | 60 fps, adaptive 4:2:0 8-bit | Same 8-bit path at the higher cadence | Same NvFBC path at the higher cadence | Same 8-bit path at the higher cadence | SDR VideoToolbox path |
| Grading | 30 fps, HEVC 4:4:4 10-bit, full-range BT.709 | WGC FP16 scRGB → SDR OETF/matrix → NVENC P16 | Depth-30 Xorg → XShm RGB10 → CUDA upload → NVENC P16 | ScreenCaptureKit 10-bit 4:4:4 → VideoToolbox | Dedicated 10-bit RGB10A2Unorm Metal layer, SDR |
| HDR | 30 fps, HEVC 4:4:4 10-bit, full-range BT.2020/PQ | Provisions and verifies an HDR display, then WGC FP16 → PQ/BT.2020 → NVENC P16 | Only for a declared rec2100-pq desktop; otherwise served as Grading and reported |
Served when the captured display has HDR headroom; otherwise served as Grading | Same Metal layer with PQ and EDR only for a host-confirmed HDR stream |
Codec negotiation
At startup, the Deck builds a real VideoToolbox decode session for each format and reports only what succeeded, separately for 4:4:4, 10-bit, 12-bit and colour range. The Pier sends only what the Deck has proven it can decode.
| Host has | Deck can decode | Arcen uses |
|---|---|---|
| Modern NVIDIA GPU | AV1 (Apple silicon M3 or later) | AV1, encoded and decoded in hardware |
| Modern NVIDIA GPU | No AV1 (M1, M2, Intel) | Hardware HEVC |
| Older NVIDIA GPU | HEVC | Hardware HEVC, then H.264 |
| Any NVENC GPU | HEVC 4:4:4 10-bit | HEVC Range Extensions 4:4:4 10-bit for colour-critical work |
| No usable GPU encoder | H.264 | Source-built OpenH264 on the host, still hardware-decoded on the Mac |
The full range, including HEVC 4:4:4 10-bit, on Linux and Windows.
Proxmox, VMware and similar guests usually have no encoder. OpenH264 is a first-class path: you lose 4:4:4 and 10-bit, not the protocol or encryption.
Needs something that presents a display. On supported NVIDIA Windows hosts, Arcen can provision unused display IDs with session-scoped EDIDs and restore them afterwards.
ScreenCaptureKit and VideoToolbox on the Mac itself. Preview only.
Keel
Keel is the part of every Pier that decides whether a frame is worth sending. A still desktop should cost almost nothing, and a busy one should spend its bits where the picture is moving. It works at two levels, and they are easy to confuse.
An encoder submits a frame when the desktop changed, when the Deck asked for a keyframe, once more to flush NVENC's one-deep output queue, and otherwise once a second as a keepalive. A still desktop therefore costs a fraction of a megabit instead of a full stream. A Windows RTX session measured 150 to 400 kbit/s while idle and 5 to 9 Mbit/s while a video played. Each Pier gets the change signal from its own operating system.
| Pier | Where the change signal comes from |
|---|---|
| Linux, Auto and Speed | NvFBC's new-frame flag. This path has frame-level gating only, because the CUDA capture interface has no per-block damage. |
| Linux, Grading and HDR | X Damage events. |
| Windows, every preset | Desktop Duplication and Windows Graphics Capture deliver a frame only when the desktop changed. Their dirty and move rectangles feed the QP map without a CPU readback. |
| macOS (preview) | ScreenCaptureKit dirty rectangles. |
| Software fallback | Keel's own 16 x 16 block hash, which also skips unchanged rows during colour conversion. |
With video.qp_map set, Keel turns the same damage into an
NVENC QP map so the blocks that changed get the bits. The setting takes
one value (off, neutral or on)
or one per pipeline, for example {"auto": "on", "speed": "on"}.
The packaged Pier configuration templates turn it on for Auto and
Speed; the built-in default stays off, and existing installs keep their
own configuration.
QP map policy=… engaged=… damage_source=…, so whether it ran is never a guess. Linux also reports per-second biased and neutral block counts.
Both the 8-bit and the 10-bit streams present decoded
IOSurface frames through a dedicated
CAMetalLayer with no CPU copy. A shared pacer driven by
the window's CVDisplayLink shows at most one new picture
per refresh from a queue of at most three. It drops the oldest frame
on overflow and discards anything stale after a stall. Two lessons
from real sessions are built in.
When every drawable is still in flight, the refresh waits and the frame stays queued for the next one. Taking it anyway threw away about one frame in four on a 60 Hz panel.
A 250 to 300 ms Wi-Fi or VPN stall releases every frame produced meanwhile at once. The Deck inbox holds about half a second, so the burst is decoded and the newest frame shown, instead of clearing the queue and asking for a large keyframe.
The Deck logs presenter telemetry every second: received, submitted and confirmed frames, drops by cause, slot waits and refresh intervals. The host's health check compares decoded against presented frames, so a presentation problem shows up even when nobody notices it on screen. Hardware encoders also no longer insert a keyframe every two seconds. They rely on Deck-requested recovery, and the Pier coalesces requests that arrive close together instead of dropping them.
Resolution and multi-monitor
One to four monitors are negotiated as one topology, and the Deck can match its own display layout. Multi-display is on by default wherever the host can prove it. No installer-time allow-list is needed.
| Host | How displays are found | Operator control |
|---|---|---|
| Linux Pier | At service start, a short Xorg probe discovers NVIDIA DFP-N heads and ranks them by maximum pixel clock. | An empty heads list means automatic; a non-empty list is an override. |
| Windows Pier | At start, picks an eligible NVIDIA/NVENC adapter from live DXGI and NVAPI inventory. Headless NVIDIA provisioning is automatic. | allowed_adapters, excluded_adapters, and forcing headless provisioning on or off. |
| macOS Pier | Creates one virtual display per Deck display. | Not yet qualified with physical monitors attached to the Mac. |
nvenc_session_limit as a hard ceiling.Keyboard, pointer, trackpad and pen
| Input | Behaviour | Hosts |
|---|---|---|
| Keyboard and pointer | Absolute and relative motion. Negotiated cursor authority: either the host or the client draws the cursor, never both. | Linux kernel input layer, Windows injection API, macOS event injection (keyboard needs Accessibility) |
| Trackpad scrolling | Precise end to end: phased deltas on macOS, high-resolution wheel on Linux, fractional and horizontal wheel on Windows. | All |
| Trackpad gestures | Magnify, smart zoom and swipe are negotiated separately. Rotate is declined without ending the session. | macOS Pier today |
| Tablet support (default) | The Mac's Wacom driver reads the pen and Arcen sends finished pen events: pressure, tilt, rotation, eraser, proximity and barrel buttons. Works at any distance; no Wacom driver is needed on the host. | All. On a headless Wayland desktop the pen acts as a mouse; a native-seat Wayland desktop gets a real pen. |
| Native tablet (USB bridged) | A privileged macOS helper forwards raw USB so the host's own Wacom driver claims the whole device, including touch and tablet buttons. LAN only; Mac applications lose the tablet until disconnect, and get it back when the session ends. With Local cursor rendering, the Deck draws a pen dot that follows the pen (Linux and macOS Piers). | Linux Piers as an administrator opt-in: X11 desktops from the first connection, native-seat GNOME Wayland desktops; refused by headless Wayland desktops. macOS Pier preview: the Wacom Intuos5 touch L, other models refused. Refused on Windows by design. |
| Mouse compatibility | No pen redirection; the pen acts as a mouse. | All |
The native-tablet helper is a small root daemon registered through
SMAppService with one approval in Login Items; Arcen Deck
itself never runs as root, and the release Deck captures the tablet
with Apple's IOUSBHost. Native tablet needs macOS 13 on the Deck and
is untested on Intel Macs. Windows hosts take the pen through Windows
Ink only. Webcam redirection and general USB passthrough are not
supported.
Session features
| Feature | Linux Pier | Windows Pier | macOS Pier (preview) |
|---|---|---|---|
| Audio out: 48 kHz stereo, Opus or PCM | Yes | Yes | Yes, after System Audio Recording is approved |
| Microphone in: Opus or PCM | Yes, through a PulseAudio virtual source | No; needs a signed driver not yet shipped | Virtual microphone installed; end-to-end capture not yet qualified |
| Clipboard: text and images | Yes | Yes | Yes |
| Time-zone redirection | Yes | Yes, by temporarily changing the system time zone | Yes, for apps launched during the session |
| Deskside privacy | Yes | Yes | Not yet |
| Login banner before credentials | Host option, off by default; the accepted text is recorded. | ||
| Reconnection | A dropped connection resumes the same session with a signed grant, without asking for the password again. | ||
| Sessions per Pier | One. A Pier drives one physical desktop and refuses a second session. | ||
Transport and wire
Quinn 0.11 QUIC over UDP 18444.
rustls 0.23, TLS 1.3 only, ALPN arcen-quic-v1.
BBR, with a dedicated priority stream for audio.
None. There is no TCP fallback and no unencrypted mode.
4, defined once in arcen-protocol for every Pier and Deck.Trust and authentication
| Deck trust mode | Behaviour |
|---|---|
| Trust on first use (default) | Shows the certificate and public-key fingerprints, validity and address; offers cancel, trust once or trust and remember. |
| Pinned | A remembered host is pinned to its host and port. A changed identity is a hard error; Forget and Verify shows the new fingerprint to compare. |
| System CA | Ordinary certificate checking, chosen as High in Advanced settings. Correctly refuses a self-signed Pier. |
| Private CA | Checks against your organisation's CA bundle with --ca-bundle. Command line only today. |
| Insecure | Development only; needs both a setting and ARCEN_ACCEPT_INSECURE, with a permanent banner. |
pam_faillock or Windows account-lockout policy already enforces._arcen, cannot see the screen and refuses to run as root. The login-window agent still runs as root; narrowing it is open work.Arcen does not operate an identity provider, certificate authority, session broker or online service. Report vulnerabilities privately as described in SECURITY.md.
Shared component boundaries
shared/ unless the operating system forbids it.Eleven pure-Rust shared crates hold the logic, with no operating-system calls. CI enforces that shared crates never depend on a host, client or packaging, and that they stay light. Platform code only captures pixels, drives encoders, injects input, authenticates users and puts a window on screen.
| Crate | Responsibility |
|---|---|
protocol | The wire format: the single source of truth for what a Pier and a Deck say to each other. |
transport | QUIC and TLS: certificate lifecycle, validation and pinning. |
media | Codec negotiation, colour, rate control, clipboard rules and video plane maths. |
input | Mouse, keyboard and pen motion, ordering and cursor authority. |
outputs | Monitor lifecycle and multi-display arrangement. |
session | Reconnection and session-restore decisions. |
identity | Resume grants and acknowledgement evidence. |
keel | Damage tracking: which 16 x 16 blocks changed. |
telemetry | The event vocabulary. |
observability | Structured logging that cannot block a video thread. |
usb-bridge | USB passthrough policy and state. |
Release status
| Area | State in v0.19.0 |
|---|---|
| Linux Pier, X11 | Works Tested on an Autodesk Flame workstation with GRID V100D-16Q: Auto and Speed on NvFBC, Grading on genuine depth-30 capture, and HDR reported as 10-bit SDR. |
| Linux Pier, Wayland | Works GNOME Shell/Mutter, since v0.17.0. Verified on Rocky Linux 10.2 / GNOME 49 with an NVIDIA GRID vGPU: Auto everywhere, Speed where the host's qualification proves it, Grading and HDR on GNOME/Mutter 50 or newer. Anything Wayland cannot do yet is served visibly lower, with the reason. |
| Windows Pier | Works Tested on a DaVinci Resolve grading workstation with GRID V100D-16Q: Auto, Speed, Grading and HDR completed end to end. |
| Windows Pier without a GPU | Works Source-built OpenH264, hardware-decoded on the Mac. |
| macOS Deck | Works Signed and notarised, for Apple silicon and, as a separate app, Intel Macs; H.264, HEVC 4:4:4 10-bit, and AV1 on M3 or later. |
| Automatic multi-display | Works The Linux Pier found four heads with nothing configured; the Windows Pier kept an excluded RTX 6000 free for other work. |
| Native tablet (USB bridged) | Linux, opt-in Proven with a real Wacom Intuos5 on X11 and native-seat GNOME Wayland: first-connection hot-plug, drawing with pressure, the pen dot and hand-back to the Mac. macOS Pier: preview, the Intuos5 touch L with pressure (real tablet proven), other models refused. Refused on Windows by design. Untested on an Intel Deck. |
| macOS Pier | Preview Qualified on one test Mac. Types text and reports Connection Health since v0.19.0. Microphone capture is built but not yet qualified. Missing: deskside privacy; cold-boot login window and physical multi-display unqualified; FileVault pre-boot cannot be served. |
| Windows microphone | Blocked Needs a signed kernel driver. The driver source exists but is excluded from releases. |
| Windows Native tablet | Not planned It would need a signed kernel driver; Windows hosts take the pen through Windows Ink. |
| Linux and Windows Deck | Does not exist About 11,600 of roughly 70,000 Deck lines are macOS-specific; the UI uses egui. |
| Internet gateway | Not shipped Designed and partly built, then cut before publication; the decision records remain. |
| Arcen Span and enterprise | Under consideration Not part of the current product; scope and availability are undecided. |
The Linux and Windows Piers in the release matrix were Active Directory-joined, so domain credentials crossed the wire. The matrix also covered audio, keyboard and pointer input, both cursor authorities, display restore and credential-free reconnect.
SUPPORT.md.