Skip to content
 
 

Latest commit

 

History

72 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Desk avatar

Desk

The AitherOS desktop hub — a realtime character presence that bridges your desktop to the whole Aitherium world.


Desk began as a desktop character for voice conversations. It has grown into the hub that connects your physical desktop to everything else, seamlessly, whether the backend is aitherium.com or your own local node:

  • Avatar presence — VRM characters with lip-sync, reacting to any app's voice output (the original core, still here).
  • Living Desktop host — one tray switch between the Living Desktop, Desktop Anywhere, the AitherShell cockpit, and GobboNet, rendered over your real desktop (ghost mode) or in their own windows.
  • Agent embodiment — the local MCP server (:47831) lets any agent drive the avatar, and the bridge server relays voice/animation events from native listeners.
  • Decision cards — the tray tracks the open decision-card queue (~/.aither/decisions), raises a native notification when an agent needs you, and one click opens the shared answer window (see electron/decision-cards.cjs).

Platform support

Platform Automatic voice output listener Distribution
Linux PipeWire process-stream capture AppImage and DEB
Windows WASAPI process-loopback capture NSIS installer
macOS 14.2+ Core Audio process tap DMG and ZIP, arm64 and x64

Linux requires pw-dump and pw-record on PATH. Windows process-loopback requires Windows 10 build 20348 or newer. macOS asks once for System Audio Recording permission.

Each listener is scoped to the supported application's playback process. Desk does not capture the microphone, save audio, produce speech, transcribe content, or send audio over the network.

Try Desk locally

Requirements:

  • Node.js 24 or newer
  • npm
  • A desktop session with hardware-accelerated graphics

Character media is not part of the repository. Before launching, place local test media or redistributable media in the exact slots documented below.

npm install
npm run demo

npm run demo builds the current renderer and launches Desk with normal automatic voice-output detection.

For a background launch:

npm start -- --background

Connect Desk to Codex

With Desk running, register its local MCP server:

codex mcp add desk --url http://127.0.0.1:47831/mcp

New Codex sessions can then ask Desk to play an installed animation, show or hide its window, and report whether the local character and voice listener are active. Desk remains a separate desktop application; the MCP connection only exposes its own visual controls.

The window intentionally contains no controls:

  • Scroll to zoom.
  • Left-drag to orbit.
  • Right-drag to pan.
  • Use your window manager's move gesture to reposition the window.

On Hyprland, Desk also applies floating, pinned, topmost, full-opacity, no-blur, no-shadow, and decoration-free properties. macOS uses an all-Spaces topmost window. Other desktops use the strongest supported Electron window hints.

Build native packages

Build on the operating system you are targeting:

npm run dist:linux
npm run dist:windows
npm run dist:mac

Outputs are written to release/. Windows needs Visual Studio Build Tools with the C++ desktop workload. macOS needs Xcode Command Line Tools and macOS 14.2+ SDK support.

GitHub Actions runs the full JavaScript, renderer, native compile, and native self-test suite on Linux, Windows, and macOS. Prerelease tags shaped like v0.1.0-beta.0 create native packages and a checksum file, but only after the asset release gate passes. See Releasing.

Character assets

Desk ships no character models. Bring your own: grab one from VRoid Hub (or export one with VRoid Studio) and enroll it — tray ▸ Characters ▸ Enroll newest Downloads .vrm, install-model.ps1 <file>, or the VRoid Hub flow in the desk panel. It lands in characters/<slug>/ and the app copies it into public/assets/ to render; both are per-user and gitignored. Your model, your license — see Asset licenses.

Everything under assets/ is per-user runtime media, never shipped and never committed:

  • model.vrm / model-slot<N>.vrm — the enrolled character (and per-slot copies for extra avatars), copied in at runtime.
  • animations/*.vrma — VRoid Hub personality motions, downloaded through the user's own VRoid Hub license when a character is enrolled; a fresh install has none and the avatar stays in its idle pose.

The asset contract (scripts/check-assets.cjs) asserts this: manifest.assets is empty, and npm run assets:release fails if any .vrm/.vrma is present under public/assets/. See Releasing.

Development

npm run check
npm run native:build
npm run native:test

The native listener is required before running Desk from source on macOS or Windows. Linux captures activity through PipeWire and does not build a helper.

More detail:

Desk application source is licensed under the MIT License. Bundled character assets are excluded from that license and remain test-only until replaced and documented.

About

Bringing real-time voice to life.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages