Early Access: Server Implementation Status

This page provides an overview of the feature implementation status for Noctiluca Server Early Access (0.9.0 ~ >1.0.0).

Implementation Status

UI/UX

FeatureStatusNotes
Onboarding UIResolvedHelps first-time users easily set up a remote desktop server.

Authentication

FeatureStatusNotes
UNIX PAM AuthenticationResolvedProvides username-password authentication based on UNIX PAM.
Simple Password AuthenticationResolvedProvides password-only authentication.
SSH Key AuthenticationResolvedProvides SSH key-based authentication.
Supports RSA, ECDSA, and Ed25519 keys.
fail2ban PluginKnownA fail2ban plugin that blocks IPs with repeated authentication failures will be provided.

Projection

FeatureStatusNotes
Screen RecorderResolved
Multi-Display SupportResolvedMulti-head servers must be able to switch between displays or project multiple displays simultaneously.
VideoToolbox-based H.264 / HEVC EncoderResolved
HEVC: HDR Screen ProjectionIn ProgressIt works for the most part, but we need a bit more help from someone with deep knowledge of HDR.
Please contact us at [email protected]!
MJPEG / WebP / ZRLE EncoderIn ProgressEven for a tile-based image codec, the bandwidth consumption is too high.
Additional tuning is needed.
Quality DegradationResolvedDynamically adjusts quality based on the client's network and computing resources.
libvpx-based VP8 EncoderPlannedFor users who cannot use or prefer not to use the non-free codecs H.264 / HEVC, we plan to provide additional options.
Audio RecorderResolvedRecords audio from graphical sessions.
Opus EncoderResolved
Codec NegotiationResolvedSupports codec negotiation.
AppStream (tentative name)In ProgressStay tuned!

HIDIO

FeatureStatusNotes
Basic Keyboard / Mouse InputResolved
Pen Tablet: Pressure RedirectionIn ProgressRedirecting pressure input from Apple Pencil (iPadOS) or conventional pen tablet devices to the host would enable remote use of painting tools such as CLIP STUDIO and Krita.
Pressure redirection using Apple Pencil on iPad has been confirmed to work, and we are currently optimizing it.
CJK Keyboard Hack: Korean/English Toggle via Han/Yeong / Right ⌘ / Right ⌥In ProgressProvides a keyboard hack that allows toggling between Korean and English input modes using the Han/Yeong key.
Implementation is complete, but we are reviewing whether further optimization is possible.

If you have expertise with macOS Private APIs, please contact us at [email protected].

Clipboard Sync

FeatureStatusNotes
Basic Clipboard SyncResolvedThe server must subscribe to system clipboard changes and relay them to clients.
This feature must also be toggleable when the user does not want it.
Non-text Clipboard Data TransferResolvedNon-text clipboard data types such as images, spreadsheets, HTML, and rich text must also be transferable.
(Note: support may vary by client)
Offloading Clipboard Data Over 128KB to Transfer ChannelResolvedThe server must be able to omit large clipboard data and offload the actual data transfer to the Transfer channel.
This reduces the load on the clipboard channel.
Sending Files via ClipboardResolvedFiles copied through the server's Finder must be pasteable on the client side.
(This feature's support may vary by client)
Receiving Files via ClipboardIn ProgressFiles copied through the client's file explorer must be pasteable on the server side.
Clipboard CensoringPlannedA mechanism must be provided to censor clipboard data to prevent confidential information from leaking through Noctiluca's clipboard sync feature.
We are considering custom scrubber support. Please share your feedback on this document!

Transfer Channel

FeatureStatusNotes
file-transfer Purpose SupportResolvedThe server must support the file-transfer purpose to perform file transfers.
clipboard-data Purpose SupportResolvedThe server must support the clipboard-data purpose to transfer clipboard data over 128KB.
Block-based TransferResolvedLarge data must be split into smaller data blocks for transfer rather than sent all at once.
CRC32 Checksum for Data BlocksResolvedThe server must provide CRC32 checksums for data blocks so the receiver can verify data integrity.
Data Block CompressionPlannedThe server must support compression for data blocks.

Sirius Protocol

FeatureStatusNotes
hidio: Message Definitions for Basic HID Input RedirectionResolved
hidio: RAW Message Definitions for Pen Input / Gamepad RedirectionResolved
projection: Basic Message Definitions for Screen ProjectionResolved
projection: AppStream-related Message DefinitionsIn Progress
projection: Accessibility-related Message DefinitionsIn Progress
clipboard: Clipboard Sync-related Message DefinitionsIn ProgressData block compression must be supported.
transfer: Data Transfer Channel Message DefinitionsResolved
v1.0.0 Spec FinalizationPlannedOnce the spec is finalized, Sirius will become an open-spec protocol.
Noctiluca Server will be able to communicate with third-party clients.

SiriusKit

FeatureStatusNotes
server/transport: macOS Keychain-based Server IdentityResolvedEnables loading and using server identity (certificates, etc.) from the Keychain.
server/transport: PEM File-based Server IdentityResolvedEnables loading and using server identity (certificates, etc.) from PEM files.

There are no immediate plans to integrate this feature into Noctiluca Server itself.
transport: MsQuic-based Transport Layer ImplementationResolvedProvides a QUIC transport layer implementation based on MsQuic.
transport/msquic: Connection Migration within Same Address FamilyIn ProgressAdditional stabilization work is needed.
transport/msquic: Connection Migration between IPv4 / IPv6 FamiliesPlanned

Plugin System

NoctilucaPluginKit is the SDK for Noctiluca Server's plugin system.

FeatureStatusNotes
Plugin System OverallResolvedNoctiluca Server must be able to load and use plugin bundles in the .nocbundle format as a host.
Plugin Host: Signature VerificationResolvedThe plugin host must verify plugin bundle signatures to ensure only safe bundles are loaded.
Plugin Host: Ad-Hoc Signed Bundle LoadingResolvedThe plugin host must support loading ad-hoc signed bundles for developer convenience.
(However, the security level must be lowered.)
NoctilucaPluginKit: AuthMethodPluginV1ResolvedDevelopers can use the AuthMethodPluginV1 protocol to create custom authentication methods for Noctiluca Server.
NoctilucaPluginKit: KeyboardHackPluginV1In ProgressDevelopers can use the KeyboardHackPluginV1 protocol to create input assistance features.
NoctilucaPluginKit: NoctilucaServerExtensionV1In ProgressThe NoctilucaServerExtensionV1 protocol allows hooking into the server's overall functionality to arbitrarily modify its behavior.
NoctilucaPluginKit: FeaturePluginV1KnownDevelopers can use FeaturePluginV1 and related protocols to create custom SiriusKit channels (features) for Noctiluca Server.
NoctilucaPluginKit: V1 ABI StabilizationKnownOnce the plugin protocol specs are finalized, ABI stability will be guaranteed, allowing us to provide the SDK to general users.

Miscellaneous

Known Bugs

UI/UXPlanned0.9.0

Some UI elements are broken on versions below macOS 26.0

Some UI elements do not display correctly on macOS 15 and earlier.

UI/UXResolved0.9.0 → Resolved in 0.9.2

Screen recording permission shows as 'not granted' on the onboarding screen even after granting it

UI/UXPlanned0.9.0

Notifications are always displayed regardless of notification settings

UI/UXPlanned0.9.0 → Resolved in 0.9.4

Tray icon is text-based and takes up too much width

HIDIOResolved0.9.0 → Resolved in 0.9.2

Unable to switch desktops using Ctrl + Arrow Keys

When mechanically generating and injecting keyboard events, a specific flag was not being set.

AuthenticationResolved0.9.0 → Resolved in 0.9.2

Cannot log in with a new authentication method until the app is fully restarted after changing authentication methods

AuthenticationPlanned0.9.0

Rejecting the certificate configuration may cause subsequent operations to malfunction

ProjectionResolved0.9.0 → Resolved in 0.9.8

Cannot start projection when the computer screen is off but not in sleep mode

Resolved by performing an assertion that the user session is active.

AuthenticationResolved0.9.0 → Resolved in 0.9.2

Korean government/financial institution authentication and signing certificates appear in the usable certificate list

Server-purpose certificates are being filtered via SecPolicyCreateSSL(), but certificates that lack the Extended Key Usage (OID 2.5.29.37) field entirely bypass this filter. A secondary validation for the presence of the EKU field and OID 1.3.6.1.5.5.7.3.1 is required.

Transport (QUIC)Planned0.9.0

Connection migration may fail and disconnect abruptly when IPv6 link-local addresses change at an abnormally fast rate

Under investigation.

Reproducing/fixing this issue requires an overnight session at a specific cafe in Gangnam (as it can only be reproduced there), so it may take some time.. :(

MiscellaneousResolved0.9.0 → Resolved in 0.9.4

Telemetry is disabled and cannot be enabled

A remote desktop server has significant privileges. Carelessly adding telemetry in this state could lead to privacy violations. We intend to enable telemetry only after ensuring the telemetry system properly redacts as much personal information as possible when reporting issues, and verifying that it actually does so effectively.

Unsolvable Bugs and Known Limitations

Built-in PluginKnown0.9.0

Approximately 0.3 ~ 0.5 seconds of input delay when toggling Korean/English via the CJK Keyboard Hack

  • Noctiluca's Korean/English toggle keyboard hack uses the Carbon API (HIToolbox.framework / TISSelectInputSource()) from the Classic Mac OS era to attempt input source switching.
  • However, TISSelectInputSource() is barely maintained and currently works probabilistically. In other words, switching to Korean input mode may or may not succeed.
  • Despite this issue, we confirmed that performing an 'app switch and return' always successfully switches to Korean input mode.
  • Therefore, the keyboard hack pre-creates a 1x1 empty window, and when the Han/Yeong key is pressed, it switches to that window and back to the original app, ensuring that the Korean/English toggle always succeeds.