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
| Feature | Status | Notes |
|---|---|---|
| Onboarding UI | Resolved | Helps first-time users easily set up a remote desktop server. |
Authentication
| Feature | Status | Notes |
|---|---|---|
| UNIX PAM Authentication | Resolved | Provides username-password authentication based on UNIX PAM. |
| Simple Password Authentication | Resolved | Provides password-only authentication. |
| SSH Key Authentication | Resolved | Provides SSH key-based authentication. Supports RSA, ECDSA, and Ed25519 keys. |
| fail2ban Plugin | Known | A fail2ban plugin that blocks IPs with repeated authentication failures will be provided. |
Projection
| Feature | Status | Notes |
|---|---|---|
| Screen Recorder | Resolved | |
| Multi-Display Support | Resolved | Multi-head servers must be able to switch between displays or project multiple displays simultaneously. |
| VideoToolbox-based H.264 / HEVC Encoder | Resolved | |
| HEVC: HDR Screen Projection | In Progress | It 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 Encoder | In Progress | Even for a tile-based image codec, the bandwidth consumption is too high. Additional tuning is needed. |
| Quality Degradation | Resolved | Dynamically adjusts quality based on the client's network and computing resources. |
| libvpx-based VP8 Encoder | Planned | For users who cannot use or prefer not to use the non-free codecs H.264 / HEVC, we plan to provide additional options. |
| Audio Recorder | Resolved | Records audio from graphical sessions. |
| Opus Encoder | Resolved | |
| Codec Negotiation | Resolved | Supports codec negotiation. |
| AppStream (tentative name) | In Progress | Stay tuned! |
HIDIO
| Feature | Status | Notes |
|---|---|---|
| Basic Keyboard / Mouse Input | Resolved | |
| Pen Tablet: Pressure Redirection | In Progress | Redirecting 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 Progress | Provides 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
| Feature | Status | Notes |
|---|---|---|
| Basic Clipboard Sync | Resolved | The 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 Transfer | Resolved | Non-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 Channel | Resolved | The 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 Clipboard | Resolved | Files copied through the server's Finder must be pasteable on the client side. (This feature's support may vary by client) |
| Receiving Files via Clipboard | In Progress | Files copied through the client's file explorer must be pasteable on the server side. |
| Clipboard Censoring | Planned | A 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
| Feature | Status | Notes |
|---|---|---|
file-transfer Purpose Support | Resolved | The server must support the file-transfer purpose to perform file transfers. |
clipboard-data Purpose Support | Resolved | The server must support the clipboard-data purpose to transfer clipboard data over 128KB. |
| Block-based Transfer | Resolved | Large data must be split into smaller data blocks for transfer rather than sent all at once. |
| CRC32 Checksum for Data Blocks | Resolved | The server must provide CRC32 checksums for data blocks so the receiver can verify data integrity. |
| Data Block Compression | Planned | The server must support compression for data blocks. |
Sirius Protocol
| Feature | Status | Notes |
|---|---|---|
| hidio: Message Definitions for Basic HID Input Redirection | Resolved | |
| hidio: RAW Message Definitions for Pen Input / Gamepad Redirection | Resolved | |
| projection: Basic Message Definitions for Screen Projection | Resolved | |
| projection: AppStream-related Message Definitions | In Progress | |
| projection: Accessibility-related Message Definitions | In Progress | |
| clipboard: Clipboard Sync-related Message Definitions | In Progress | Data block compression must be supported. |
| transfer: Data Transfer Channel Message Definitions | Resolved | |
| v1.0.0 Spec Finalization | Planned | Once the spec is finalized, Sirius will become an open-spec protocol. Noctiluca Server will be able to communicate with third-party clients. |
SiriusKit
| Feature | Status | Notes |
|---|---|---|
| server/transport: macOS Keychain-based Server Identity | Resolved | Enables loading and using server identity (certificates, etc.) from the Keychain. |
| server/transport: PEM File-based Server Identity | Resolved | Enables 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 Implementation | Resolved | Provides a QUIC transport layer implementation based on MsQuic. |
| transport/msquic: Connection Migration within Same Address Family | In Progress | Additional stabilization work is needed. |
| transport/msquic: Connection Migration between IPv4 / IPv6 Families | Planned |
Plugin System
NoctilucaPluginKit is the SDK for Noctiluca Server's plugin system.
| Feature | Status | Notes |
|---|---|---|
| Plugin System Overall | Resolved | Noctiluca Server must be able to load and use plugin bundles in the .nocbundle format as a host. |
| Plugin Host: Signature Verification | Resolved | The plugin host must verify plugin bundle signatures to ensure only safe bundles are loaded. |
| Plugin Host: Ad-Hoc Signed Bundle Loading | Resolved | The plugin host must support loading ad-hoc signed bundles for developer convenience. (However, the security level must be lowered.) |
| NoctilucaPluginKit: AuthMethodPluginV1 | Resolved | Developers can use the AuthMethodPluginV1 protocol to create custom authentication methods for Noctiluca Server. |
| NoctilucaPluginKit: KeyboardHackPluginV1 | In Progress | Developers can use the KeyboardHackPluginV1 protocol to create input assistance features. |
| NoctilucaPluginKit: NoctilucaServerExtensionV1 | In Progress | The NoctilucaServerExtensionV1 protocol allows hooking into the server's overall functionality to arbitrarily modify its behavior. |
| NoctilucaPluginKit: FeaturePluginV1 | Known | Developers can use FeaturePluginV1 and related protocols to create custom SiriusKit channels (features) for Noctiluca Server. |
| NoctilucaPluginKit: V1 ABI Stabilization | Known | Once the plugin protocol specs are finalized, ABI stability will be guaranteed, allowing us to provide the SDK to general users. |
Miscellaneous
Known Bugs
Some UI elements are broken on versions below macOS 26.0
Some UI elements do not display correctly on macOS 15 and earlier.
Screen recording permission shows as 'not granted' on the onboarding screen even after granting it
Notifications are always displayed regardless of notification settings
Tray icon is text-based and takes up too much width
Unable to switch desktops using Ctrl + Arrow Keys
When mechanically generating and injecting keyboard events, a specific flag was not being set.
Cannot log in with a new authentication method until the app is fully restarted after changing authentication methods
Rejecting the certificate configuration may cause subsequent operations to malfunction
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.
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.
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.. :(
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
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.
