What Are the Dependencies of openclaw-windows-node? Complete Breakdown
The openclaw-windows-node repository relies on a combination of .NET NuGet packages for cryptography, AI speech processing, and Windows UI development, a single Node.js dependency (@microsoft/mxc-sdk) for build tooling, and several internal shared library projects.
The openclaw-windows-node project is a sophisticated Windows application that blends .NET technologies with minimal Node.js tooling. Whether you are building from source, auditing for security, or planning contributions, understanding the complete dependency tree—including specific versions and declaration locations—is critical for successful development.
Core .NET NuGet Dependencies
The bulk of external functionality comes from NuGet packages declared across multiple .csproj files. These range from cryptographic primitives to on-device machine learning inference.
Cryptography and Security
Security-sensitive operations depend on NSec.Cryptography version 25.4.0 for modern cryptographic primitives like Ed25519 signatures, declared in src/OpenClaw.Shared/OpenClaw.Shared.csproj. The same file also references System.Security.Cryptography.ProtectedData 10.0.0 for secure local secret storage on Windows.
Speech Processing and AI Inference
The project integrates local speech-to-text capabilities through several ONNX-based packages, all declared in OpenClaw.Shared.csproj:
- Whisper.net (1.9.0) and Whisper.net.Runtime (1.9.1) for OpenAI Whisper model integration
- Microsoft.ML.OnnxRuntime (1.26.0) for general ONNX model execution
- org.k2fsa.sherpa.onnx (1.13.0) for additional speech recognition engines
Windows App SDK and UI Components
The primary user interface and auxiliary tools share the same Windows App SDK foundation. In src/OpenClaw.Tray.WinUI/OpenClaw.Tray.WinUI.csproj, the following packages enable the WinUI 3 interface:
- Microsoft.WindowsAppSDK (2.1.3) for the WinUI 3 application framework
- Microsoft.Windows.SDK.BuildTools (10.0.28000.1839) for compilation support
- WinUIEx (2.9.0) for extended windowing capabilities
- Microsoft.Toolkit.Uwp.Notifications (7.1.3) for native toast notifications
- CommunityToolkit.WinUI.Controls.SettingsControls and CommunityToolkit.WinUI.Controls.Sizers (8.3.260402-preview2) for settings UI patterns
These same packages are also utilized by OpenClawTray.FunctionalUI, OpenClaw.SetupEngine.UI, and OpenClaw.SetupPreview within the solution.
Audio, Graphics, and System Utilities
Additional capabilities include:
- NAudio.Wasapi (2.3.0) for low-level audio playback via WASAPI
- System.Drawing.Common (10.0.7) for icon and asset manipulation
- System.Drawing.Common (10.0.2) used exclusively by the helper tool in
tools/icongen/icongen.csproj - System.Diagnostics.PerformanceCounter (10.0.0) for system metrics monitoring
- Updatum (1.3.4) for application self-update functionality
- Zeroconf (3.6.11) for automatic network service discovery
- ZXing.Net (0.16.10) for barcode and QR code scanning
Node.js and npm Dependencies
While primarily a .NET codebase, the build pipeline requires a single Node.js package. The package.json at the repository root declares @microsoft/mxc-sdk version ^0.1.8 (pinned to 0.1.8 in package-lock.json), which provides the wxc-exec.exe sandbox binary used during MSIX packaging. This package itself depends on node-pty and semver.
An MSBuild target in the WinUI project copies this binary to the output directory during compilation:
<Target Name="CopyWxcExecToOutput" AfterTargets="Build">
<ItemGroup>
<_WxcExecFiles Include="$(MxcSdkBinDir)wxc-exec.exe" />
</ItemGroup>
<Copy SourceFiles="@(_WxcExecFiles)" DestinationFiles="@(_WxcExecFiles->'$(TargetDir)tools\mxc\$(MxcArch)\%(Filename)%(Extension)')" />
</Target>
Internal Project References
Beyond external packages, the solution relies on a modular architecture of internal project references. These do not appear as NuGet dependencies but are essential compilation units:
- OpenClaw.Shared: Core library containing cryptographic utilities, AI bindings, and shared data models. Referenced by
OpenClaw.WinNode.CliandOpenClaw.Tray.WinUI. - OpenClaw.Connection: Gateway and connection management logic, referenced by the Tray UI.
- OpenClaw.Chat: Chat and canvas integration modules, referenced by the Tray UI.
Dependency Implementation Examples
The following snippets illustrate how these dependencies are utilized in the source code.
Cryptographic device key generation using NSec:
// From src/OpenClaw.Shared/OpenClaw.Shared.csproj
using NSec.Cryptography;
public class DeviceKey
{
private readonly Key _key = Key.Create(SignatureAlgorithm.Ed25519);
}
Windows App SDK initialization in the tray application:
// From src/OpenClaw.Tray.WinUI/OpenClaw.Tray.WinUI.csproj
using Microsoft.WindowsAppSDK;
using Microsoft.UI.Xaml;
public sealed partial class App : Application
{
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
}
}
Key Configuration Files
Understanding where each dependency is declared helps when updating versions or troubleshooting build issues:
src/OpenClaw.Shared/OpenClaw.Shared.csproj: Contains crypto, AI, and speech-to-text NuGet references.src/OpenClaw.Tray.WinUI/OpenClaw.Tray.WinUI.csproj: Declares Windows App SDK, WinUI, and audio package dependencies.src/OpenClaw.WinNode.Cli/OpenClaw.WinNode.Cli.csproj: Command-line host referencing OpenClaw.Shared.package.json: Root-level Node.js dependency for the MXC SDK.tools/icongen/icongen.csproj: Isolated System.Drawing.Common reference for the icon generation utility.
Summary
- The openclaw-windows-node repository combines .NET NuGet packages, a single Node.js dependency, and internal shared libraries to create a Windows-based AI-enabled application.
- Core functionality depends on NSec.Cryptography for security, Whisper.net and ONNX Runtime for local AI inference, and the Windows App SDK for the modern WinUI 3 interface.
- System integration leverages NAudio.Wasapi for audio, Zeroconf for networking, and ZXing.Net for barcode processing.
- Build tooling requires @microsoft/mxc-sdk from npm to provide the sandbox executable used during packaging.
- Internal architecture uses project references to OpenClaw.Shared, OpenClaw.Connection, and OpenClaw.Chat to maintain clean separation of concerns.
Frequently Asked Questions
What is the primary purpose of the Whisper.net dependency in openclaw-windows-node?
Whisper.net (version 1.9.0) provides .NET bindings for OpenAI's Whisper model, enabling on-device speech-to-text conversion without external API calls. It works alongside Microsoft.ML.OnnxRuntime (1.26.0) and org.k2fsa.sherpa.onnx (1.13.0) to process audio locally, as declared in src/OpenClaw.Shared/OpenClaw.Shared.csproj.
Why does the project use both System.Drawing.Common versions 10.0.7 and 10.0.2?
The main application uses System.Drawing.Common 10.0.7 for general graphics operations in OpenClaw.Tray.WinUI.csproj. However, the isolated icongen helper tool in tools/icongen/icongen.csproj specifically references version 10.0.2, maintaining compatibility with the legacy icon generation workflow without affecting the main application's dependency graph.
Is openclaw-windows-node primarily a .NET or Node.js application?
Openclaw-windows-node is primarily a .NET application written in C#. The Node.js dependency (@microsoft/mxc-sdk) is strictly a build-time requirement that provides the wxc-exec.exe sandbox binary for MSIX packaging. All runtime logic executes within the .NET CLR, hosted by either the WinUI 3 tray application or the command-line interface.
How are internal project references structured in the solution?
The solution follows a layered architecture where OpenClaw.Shared serves as the foundational library containing cryptography and AI code. OpenClaw.WinNode.Cli references this shared library for command-line operations, while OpenClaw.Tray.WinUI references both OpenClaw.Shared and additional modules like OpenClaw.Connection and OpenClaw.Chat for gateway management and chat functionality.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →