Implementation reference

Install, codecs, displays, input and current limits.

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.

Release
v0.19.0, free under AGPL-3.0
Deck
macOS 12 or later, signed and notarised
Pier
Linux (X11 and Wayland) and Windows; macOS as a preview
Transport
QUIC with TLS 1.3 on UDP 18444
Presets
Auto, Speed, Grading and HDR
Codecs
H.264, HEVC including 4:4:4 10-bit, AV1
Displays
1 to 4, on by default on every host
Internet
Not required; LAN or VPN only

What's new in v0.19.0

The tablet on your Mac's desk, plugged into the host.

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.

ChangeWhat it does, and how far it is proven
Native tablet on Linux PiersAdministrator 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 connectionReal 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 PierLinux, 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 MacReal 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 PierPreview 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 PiersNative 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 healthThe 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.
DeckOption 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 buildsArcen'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.

Native tablet: known limitations

  • Ink on X11 trails the dot on a slow link. The pen dot follows the pen's own reports, but X11 applications draw from xf86-input-wacom's smoothed pointer, which averages several samples and receives one report per network round trip.
  • GNOME Wayland draws thinner lines. GNOME squares stylus pressure on its default curve; raise the stylus pressure curve in GNOME Settings › Wacom Tablet.
  • A held side switch looks like "pen but no ink" on GNOME X11: pressure shows and nothing draws. Lift the pen out of range and back, or remap the switch.
  • Safari reports every pen as a mouse, local or remote; test pen pages on a macOS Pier in Chrome or Firefox.
  • A tablet remapped in GNOME Settings offsets the pen dot on Wayland; keep the default mapping, or use host cursor rendering.
  • No pen dot positions from multi-output Wayland desktops, Windows Piers or secondary Deck viewports yet.
  • Untested on an Intel Deck. Native tablet needs macOS 13 or later on the Deck.

Upgrading

  • From v0.15 or v0.16: update the Deck and every Pier together. Since v0.17.0 they speak protocol v5, and a v0.16 Deck or Pier is refused with a message saying so. v0.17.0 also closed a polkit hole in every earlier Linux Pier, where a remote X11 desktop received the console's administrative rights.
  • From v0.17.0: Decks and Piers of either version work together; the new features need both ends at v0.19.0. With a macOS Deck and a macOS Pier, update both together so pen barrel buttons mean the same thing at each end.
  • Linux Native tablet: run the installer with --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.
  • Also in this release: 0.18.0 was not published separately, so its changes arrive with v0.19.0: a Mac keyboard on Windows hosts that behaves as Windows App makes it behave, typed text and Paste as Keystrokes on Windows and Linux hosts, the application's real cursor images, the Colour check and Test connection.

Install

One installer per host. One app on the Mac.

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.

ComponentRelease fileInstallRequirements 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.

What the host installers do

  • Create the directories, generate a TLS certificate, register and start the service, and open UDP 18444 on a firewall they recognise.
  • Succeed only when the Pier is proven running. On macOS, a missing privacy approval is onboarding, not an install failure.
  • Write the same all-on configuration on every host. An upgrade keeps the existing configuration and certificate, so remembered Decks keep trusting the host.
  • Linux and Windows flags: --dry-run shows the plan, --uninstall --purge removes everything, --extra-san <name> adds certificate names and --force replaces an existing certificate.
  • Linux Native tablet: --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.
  • macOS: uninstall.sh --purge also resets the privacy approvals given to Arcen.
  • Configuration lives in /etc/arcen/pier.json on Linux and C:\ProgramData\Arcen\pier.json on Windows.

First connection

  1. Open: start Arcen Deck on the Mac.
  2. Address: enter the Pier address. The port is 18444.
  3. Verify: compare the certificate fingerprint with the Pier, then choose trust and remember.
  4. Sign in: use an ordinary account on the host. Arcen keeps no user list of its own.

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

Everything is on. The file exists to turn things off.

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.

SettingDefaultChoice
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.compressedtrue / trueOpus by default; set compressed to false for uncompressed PCM.
audio.local_playbackHost speakers silentNobody beside the host hears the remote session.
microphone_input.enabledtrueWorks on Linux hosts, and on the macOS Pier preview through a virtual microphone. The Deck still asks for consent on every launch.
clipboardBoth directions, all content, 8 MiBOne direction, text only or off; maximum 1–20 MiB.
redirection.timezonetrueThe session follows the Deck's time zone on every host.
platform.multi_monitor.advertise_enabledtruefalse 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_fallbacktrueMonitors that miss NVENC admission can drop to OpenH264; 4:4:4 monitors cannot.
platform.desktop.deskside.enabledfalseBlanks the physical screen and locks local input during a session.
auth.disclaimer.enabledfalseShows an operator-written notice that must be accepted before credentials are collected.
tlsGenerated PEM, TLS 1.3Use your own PEM certificate and key; expected_sans refuses to start on a wrong-name certificate.

Streaming presets

The Deck asks for a result. The Pier picks the pipeline.

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.

PresetRequested streamWindows PierLinux 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
  • 10-bit is not HDR: Grading is 10-bit SDR. Bit depth alone is never treated as proof of HDR.
  • Genuine sources: Linux Grading reads real depth-30 Xorg codes; Windows Grading and HDR read FP16 scRGB. If WGC refuses the FP16 pool, the session fails rather than silently falling back to 8-bit.
  • Linux Wayland: the same presets run as separate Mutter ScreenCast pipelines. Speed only where the host's qualification measured the rate; Grading and HDR on GNOME/Mutter 50 or newer after a per-host precision proof, on one output. Otherwise the stream is served visibly as Auto, with the reason.
  • HDR white point: SDR white is mapped to 203 nits.
  • Frame rate: the Deck's Standard mode requests 30 fps and High requests 60. On a macOS Pier, 60 fps cut frame age on arrival from 27 ms to 6 ms in the published measurement, at about 7.4 Mbps instead of 4.6 Mbps.

Codec negotiation

Codec choice follows the hardware at both ends.

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 hasDeck can decodeArcen uses
Modern NVIDIA GPUAV1 (Apple silicon M3 or later)AV1, encoded and decoded in hardware
Modern NVIDIA GPUNo AV1 (M1, M2, Intel)Hardware HEVC
Older NVIDIA GPUHEVCHardware HEVC, then H.264
Any NVENC GPUHEVC 4:4:4 10-bitHEVC Range Extensions 4:4:4 10-bit for colour-critical work
No usable GPU encoderH.264Source-built OpenH264 on the host, still hardware-decoded on the Mac

Three ways to run a Pier

NVIDIA workstation

The full range, including HEVC 4:4:4 10-bit, on Linux and Windows.

Virtual machine

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.

Headless host

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.

macOS host

ScreenCaptureKit and VideoToolbox on the Mac itself. Preview only.

Encoding and bitrate

  • Hardware encoders: NVIDIA NVENC on Linux and Windows, VideoToolbox on the macOS Pier. AMD and Intel hardware encoders are not implemented.
  • Latency tuning: NVENC runs without B-frames or lookahead.
  • Software floor: source-built OpenH264, 4:2:0 8-bit only.
  • Decode: macOS VideoToolbox, in hardware, for H.264, HEVC including 4:4:4 10-bit, and AV1 on M3 or later.
  • Adaptive bitrate: one shared controller follows the network path on every host. QUIC uses BBR congestion control, so random Wi-Fi, cellular or VPN loss is not mistaken for congestion.
  • Honest admission: when an encoder cannot sustain a preset's frame rate, the session is admitted at the best proven rate and says so rather than being refused.

Keel

Send what changed, and nothing else.

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.

Hand-drawn monitor divided into a fine grid. Only the few blocks that changed are filled in copper, and a single thin copper line carries just those blocks to a second display.

Frame level: on for every hardware pipeline

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.

PierWhere the change signal comes from
Linux, Auto and SpeedNvFBC's new-frame flag. This path has frame-level gating only, because the CUDA capture interface has no per-block damage.
Linux, Grading and HDRX Damage events.
Windows, every presetDesktop 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 fallbackKeel's own 16 x 16 block hash, which also skips unchanged rows during colour conversion.

Block level: an encoder hint, off by default

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.

  • Only where damage is free: OS rectangles on Windows, and X Damage on Linux Grading and HDR. The Linux NvFBC fast path refuses the QP map rather than add a full-frame GPU readback. VideoToolbox on the macOS Pier has no QP-map support, and says so in its log.
  • Provable, not assumed: every encoder logs QP map policy=… engaged=… damage_source=…, so whether it ran is never a guess. Linux also reports per-second biased and neutral block counts.
  • Honest about the gain: modern codecs already code an unchanged block almost for free, so most of the saving is frames that are never encoded.
  • Not done yet: Keel does not refine. A static region that arrived during motion stays at its first quality until it changes. Spending spare bits to sharpen blocks once they stop changing, the "build to lossless" behaviour other remote-desktop products use, is open work.

How frames reach the glass on the Deck

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.

Never take a frame you cannot show

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 network stall arrives as a burst

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

Multi-display is automatic, and each monitor is its own stream.

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.

HostHow displays are foundOperator control
Linux PierAt 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 PierAt 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 PierCreates one virtual display per Deck display.Not yet qualified with physical monitors attached to the Mac.
  • Hardware sufficiency: each monitor is its own NVENC session on Linux and Windows. GeForce drivers cap concurrent NVENC sessions (3 on older drivers, 8 from early 2024, 12 on current ones); RTX Pro and data-centre cards have no cap. Four monitors fit within current GeForce limits, but other encoders on the same GPU, such as OBS or a transcode, share the same pool. Pier does not guess: it opens the whole encoder set and accepts the layout only when every monitor meets quality thresholds. An operator can set nvenc_session_limit as a hard ceiling.
  • Measured admission: the Pier opens the complete planned encoder set and admits it only if every region meets the quality thresholds. It never guesses from the GPU model.
  • Independent regions: every monitor has its own capture, encode, queue, decode and presentation state. Region frames carry a monitor ID, topology generation and stream epoch.
  • Damage tracking: Keel decides per monitor which frames, and optionally which blocks, are worth encoding.

Keyboard, pointer, trackpad and pen

Three pen modes, chosen per connection.

InputBehaviourHosts
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

What a session carries, by host.

FeatureLinux PierWindows PiermacOS Pier (preview)
Audio out: 48 kHz stereo, Opus or PCMYesYesYes, after System Audio Recording is approved
Microphone in: Opus or PCMYes, through a PulseAudio virtual sourceNo; needs a signed driver not yet shippedVirtual microphone installed; end-to-end capture not yet qualified
Clipboard: text and imagesYesYesYes
Time-zone redirectionYesYes, by temporarily changing the system time zoneYes, for apps launched during the session
Deskside privacyYesYesNot yet
Login banner before credentialsHost option, off by default; the accepted text is recorded.
ReconnectionA dropped connection resumes the same session with a signed grant, without asking for the password again.
Sessions per PierOne. A Pier drives one physical desktop and refuses a second session.

Clipboard contract

  • The host decides direction, content and maximum size; the client cannot override it.
  • Default: both directions, UTF-8 text and PNG images, 8 MiB. Operators can set 1–20 MiB.
  • No files, HTML or RTF are transported. Clipboard payloads are not logged or persisted.

Transport and wire

One connection, one protocol.

Carrier

Quinn 0.11 QUIC over UDP 18444.

Cryptography

rustls 0.23, TLS 1.3 only, ALPN arcen-quic-v1.

Congestion

BBR, with a dedicated priority stream for audio.

Fallback

None. There is no TCP fallback and no unencrypted mode.

  • Wire protocol version: 4, defined once in arcen-protocol for every Pier and Deck.
  • Network: a Deck reaches a Pier directly, on the same network or through a VPN. There is no internet gateway.
  • Exposure: Arcen expects a trusted network and is not hardened against the open internet.

Trust and authentication

The machine is verified before credentials move.

Deck trust modeBehaviour
Trust on first use (default)Shows the certificate and public-key fingerprints, validity and address; offers cancel, trust once or trust and remember.
PinnedA 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 CAOrdinary certificate checking, chosen as High in Advanced settings. Correctly refuses a self-signed Pier.
Private CAChecks against your organisation's CA bundle with --ca-bundle. Command line only today.
InsecureDevelopment only; needs both a setting and ARCEN_ACCEPT_INSECURE, with a permanent banner.
  • User authentication: PAM on Linux and macOS; a Windows credential provider that takes part in the real login. Arcen keeps no user list.
  • Credentials: sent only after QUIC/TLS and Pier trust succeed, held in memory that is wiped on release and never logged.
  • Lockout: Arcen adds none. Throttling is whatever pam_faillock or Windows account-lockout policy already enforces.
  • Pins: compared in constant time and changed only by the user.
  • Windows headless HDR: the signed-in account must currently be a local Administrator when Arcen provisions an unused NVIDIA display ID.
  • macOS Pier: the network service runs as _arcen, cannot see the screen and refuses to run as root. The login-window agent still runs as root; narrowing it is open work.
  • Licence: Pier and Deck are free software under AGPL-3.0. Read the licence.

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

Put it in 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.

CrateResponsibility
protocolThe wire format: the single source of truth for what a Pier and a Deck say to each other.
transportQUIC and TLS: certificate lifecycle, validation and pinning.
mediaCodec negotiation, colour, rate control, clipboard rules and video plane maths.
inputMouse, keyboard and pen motion, ordering and cursor authority.
outputsMonitor lifecycle and multi-display arrangement.
sessionReconnection and session-restore decisions.
identityResume grants and acknowledgement evidence.
keelDamage tracking: which 16 x 16 blocks changed.
telemetryThe event vocabulary.
observabilityStructured logging that cannot block a video thread.
usb-bridgeUSB passthrough policy and state.

Release status

What works in v0.19.0, and what does not.

AreaState in v0.19.0
Linux Pier, X11Works 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, WaylandWorks 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 PierWorks Tested on a DaVinci Resolve grading workstation with GRID V100D-16Q: Auto, Speed, Grading and HDR completed end to end.
Windows Pier without a GPUWorks Source-built OpenH264, hardware-decoded on the Mac.
macOS DeckWorks 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-displayWorks 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 PierPreview 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 microphoneBlocked Needs a signed kernel driver. The driver source exists but is excluded from releases.
Windows Native tabletNot planned It would need a signed kernel driver; Windows hosts take the pen through Windows Ink.
Linux and Windows DeckDoes not exist About 11,600 of roughly 70,000 Deck lines are macOS-specific; the UI uses egui.
Internet gatewayNot shipped Designed and partly built, then cut before publication; the decision records remain.
Arcen Span and enterpriseUnder 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.

Known technical limits

  • Linux Wayland support is GNOME Shell/Mutter only. Grading and HDR on Wayland need GNOME/Mutter 50 or newer; Xorg serves HDR as Grading unless the operator declares a Rec.2100 PQ desktop.
  • Hardware encoding is NVIDIA NVENC only on Linux and Windows. AMD and Intel encoders are not implemented.
  • OpenH264 is 4:2:0 8-bit only; 4:4:4 monitors cannot fall back to software.
  • Arcen streams at most four monitors per session. Old GeForce drivers with a 3-session cap cannot run four hardware-encoded monitors; eligible 4:2:0 monitors can fall back to OpenH264 at up to 1920x1200, 30 fps.
  • One session per Pier.
  • Direct connections only: same network or VPN. Arcen is not hardened for the open internet.
  • No webcam redirection. USB passthrough is limited to Native tablet: an administrator opt-in on Linux Piers, a preview on the macOS Pier.
  • There is no support. Arcen is a solo side project; see the repository's SUPPORT.md.