.NET / WPF SDK Overview
Embed an offline, on-device personal assistant into your WPF application using the Cephable.WPF NuGet package.
Overview
The Cephable.WPF NuGet package lets you embed an offline, on-device personal assistant directly into your WPF application. Voice recognition, camera-based face and gesture detection, and all AI inference run entirely on the user's machine — no audio, video, or biometric data is sent to external servers. Access requires a valid Cephable license.
Installation
.NET CLI:
dotnet add package Cephable.WPF
Package Manager Console:
Install-Package Cephable.WPF
PackageReference:
<PackageReference Include="Cephable.WPF" Version="1.1.1" />
Targets .NET 8.0 (Windows 7.0+); compatible with .NET 9.0 and 10.0.
Services
WpfCephableService
The central integration point. Manages authentication, device profiles, voice, camera, and desktop monitoring with automatic profile switching.
var wpfCephableService = WpfCephableService.CreateCephableService();
var config = new CephableConfiguration
{
AuthConfiguration = new AuthConfiguration
{
ClientId = "your-client-id",
ClientSecret = "your-client-secret"
},
DeviceTypeId = "your-device-type-id",
DeviceName = "My WPF App",
DefaultProfile = new UserDeviceProfileModel { Name = "Default Profile" },
EnableAutomaticProfileSwitching = true
};
var userResult = await wpfCephableService.InitializeWithUserAsync(config, forceNewUser: false);
WpfAuthService
OAuth-based authentication with guest support and automatic token refreshing.
var authService = new WpfAuthService(apiService, secureStorageProvider);
// Authenticate an existing user (set newUser: true for first-time sign-up)
await authService.AuthenticateUser(newUser: false);
WpfVoiceService
On-device, real-time speech recognition. All audio processing runs locally — nothing is sent to a cloud speech API.
VoiceControlsConfiguration voiceConfiguration = new VoiceControlsConfiguration
{
Locale = "en-us",
ModelPath = "path/or/url/to/model.zip"
};
WpfCameraService
On-device webcam capture and face/gesture detection using BlazeFace ONNX models. No video frames leave the machine.
var cameraService = new WpfCameraService(headService, faceService);
await cameraService.Initialize(new CameraControlsConfiguration
{
PreferredDeviceIndex = 1,
HeadModelPath = "path/or/url/to/headmodel.onnx",
FaceModelPath = "path/or/url/to/facemodel.onnx",
DrawFaces = true,
MirrorVideo = true
});
WpfDesktopService
Monitors which application is in the foreground to drive automatic profile switching.
var desktopService = new WpfDesktopService();
desktopService.OnForegroundAppChange += (sender, app) =>
{
Console.WriteLine("Foreground application changed to: " + app.Name);
};
desktopService.StartMonitoringForegroundApp(1);
DeviceProfileService
Manages device profiles, macros, keybindings, and application associations.
var updatedProfiles = new List<UserDeviceProfileModel>
{
new UserDeviceProfileModel
{
Name = "Notepad Profile",
Configuration = new DeviceProfileConfiguration
{
Macros = new List<MacroModel> { /* ... */ },
AssociatedPrograms = new List<string> { "Notepad" }
}
}
};
var result = await wpfCephableService.DeviceProfileService.UpdateLocalProfiles(updatedProfiles);