Live Demo
SatMouse

SatMouse

Stream 6DOF spatial input from your devices to web apps and PWAs. Zero-config, open protocol.

Get Started

1

Download & Launch

Grab the app for your platform. On macOS, double-click SatMouse.app — a 🛰 appears in your menu bar.

npx @kelnishi/satmouse
2

Plug In Your Device

Connect a SpaceMouse, SpaceFox, Orbion, gamepad, or any supported 6DOF device. SatMouse detects it automatically.

3

Use Your Apps

Compatible web apps and PWAs discover SatMouse on the network and connect instantly. No configuration needed.

Safari Extension

Modern browsers enforce Private Network Access rules that block HTTPS pages from connecting to localhost services. Chrome and Firefox show a permission prompt, but Safari blocks these requests silently — no prompt, no fallback.

The SatMouse macOS app includes a Safari Web Extension that bypasses this restriction entirely. The extension runs inside Safari's process and relays device data directly to web pages, with no network requests to localhost.

1

Install SatMouse.app

The Safari extension is bundled inside the macOS app. No separate install needed.

2

Enable the Extension

Open Safari Settings → Extensions → enable SatMouse. Or click "Enable Extension" in the status widget — it opens the settings for you.

3

Allow on Websites

Grant permission for the sites you use. The extension only relays device data — it cannot read page content or modify requests.

Why is this needed? Safari's Local Network Access policy (2025+) blocks all programmatic requests from HTTPS pages to local services — including WebSocket, fetch, and WebTransport. Unlike Chrome, Safari provides no user prompt to allow the connection. A browser extension is the only reliable workaround, as extensions communicate via IPC rather than network requests.

Platforms

Supported Devices

Works with professional 3D input devices, DIY controllers, and gamepads.

SpaceMouse SpaceNavigator SpaceMouse Pro SpaceMouse Wireless SpaceMouse Compact SpaceMouse Enterprise SpaceFox Orbion CadMouse Space Mushroom Xbox Controller PlayStation Controller Generic USB HID

For Developers

Add spatial input to your web app in minutes. Four tree-shakeable modules.

// npm install @kelnishi/satmouse-client
import { SatMouseConnection } from "@kelnishi/satmouse-client";
import { InputManager } from "@kelnishi/satmouse-client/utils";

const connection = new SatMouseConnection();
const manager = new InputManager();
manager.addConnection(connection);

manager.onSpatialData((data) => {
  applyToScene(data.translation, data.rotation);
});

await connection.connect();

core

Connection, discovery, binary decode. Zero deps.

utils

InputManager, transforms, per-device config, multi-device merge.

react

Provider, hooks, settings & debug components.

elements

Web Components with Shadow DOM. Works in any framework.

SDK Documentation