# SlimeVR Server, the hub that turns phone IMUs and ESP32 trackers into VR tracking data

> SlimeVR Server is the application that sits between physical trackers and the virtual reality runtime. It orchestrates communication between multiple sensors and integrations, accepts trackers built on ESP microcontrollers, phones through the owoTrack app and Nintendo Switch Joy-Cons, and then exposes the result as OSC trackers for VRChat, as VMC data for tools like VSeeFace, or as BVH files for motion capture work in Blender.

**SlimeVR/SlimeVR-Server** — Server app for SlimeVR ecosystem

- Repository: https://github.com/SlimeVR/SlimeVR-Server
- Website: https://slimevr.dev
- Stars: 1,050 · Forks: 259
- Language: Fluent
- License: Apache-2.0
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/slimevr-slimevr-server

## What the server actually is

The SlimeVR Server is the server application for the SlimeVR ecosystem, and its one-line job is orchestration: it orchestrates communication between multiple sensors and integrations, like SteamVR. That framing is the key to understanding the design. The server is not a tracking algorithm and not a runtime, it is the translator in the middle. Sensors produce raw inertial measurements, a VR runtime wants a pose per tracked bone, and the server sits between them, fusing what the sensors say and publishing the result in whatever dialect the target application understands. The consequence is that the interesting decisions live in the integration layer, in how a phone accelerometer becomes an OSC tracker packet, rather than in the server core. The primary language recorded for the repository is Fluent, which refers to the localisation framework used for the user interface strings, and the licence in the metadata is Apache-2.0.

```
Server orchestrates communication between multiple sensors and integrations,
like SteamVR.
```

## Three ways to become a tracker

The sensor implementations are what make the project interesting, because it accepts almost anything with an inertial measurement unit. The SlimeVR Tracker for ESP covers ESP microcontrollers, with multiple IMUs supported, which is the route most people take because it is the one that gives you a device you can strap to your body. The owoTrack mobile app lets you use phones as trackers, and the documentation is careful to qualify that as limited functionality and compatibility, which is what you would expect from a phone's accelerometer and a browser-based or app-based bridge. The SlimeVR Wrangler covers the third case, using Nintendo Switch Joy-Con controllers as trackers, which is a popular way in because the hardware already exists and the controllers already have the right shape for the job. The repository links each of these as separate projects, which is the right structure, because they are separate hardware and software efforts that happen to converge on the same server protocol.

```
SlimeVR Tracker for ESP
owoTrack Mobile App
SlimeVR Wrangler
```

## The four ways tracking data leaves the server

The integration list is the reason to run this server at all, and it has four distinct outputs for four distinct purposes. The SlimeVR OpenVR Driver is used as a driver for SteamVR, which is the route that gives you the full SteamVR body tracking experience including the calibration and the per-bone offsets. There is built-in OSC Trackers support for FBT integration with VRChat, PCVR or Standalone, which is the path where the tracking data is sent over OSC to a chat client rather than through a driver. There is built-in VMC support for sending and receiving tracking data to and from other applications such as VSeeFace, which is the virtual camera route where your avatar is driven by your body. And recordings can be exported as .BVH files to integrate motion capture data into 3D applications such as Blender, which is the one that takes the data out of VR entirely and into animation work.

```
SlimeVR OpenVR Driver
OSC Trackers
VMC
.BVH files
```

## Installing it, and the role of the web installer

Installation guidance is short and points at a binary rather than a package manager. It is highly recommended to install using the installer downloadable from the SlimeVR-Installer releases, and the latest setup instructions are in the project documentation. The separation is worth noting: this repository is the server application, the installer is a separate project, and the documentation lives somewhere else again. For a user who wants to try this on a spare machine, that three-way split is a small amount of friction, since the installer is a Windows executable and the documentation is a separate site. The building and contributing path is the same shape, with a CONTRIBUTING.md in the repository for the people who want to work on the code rather than run it.

```
It's highly recommended to install using the installer downloadable here
```

## A monorepo, and the tooling around it

The repository layout shows a pnpm workspace with two members, solarxr-protocol and gui, and the root package scripts show the workflow. The gui script first runs the solarxr update and then the gui, the build script goes into the gui directory, the update-solarxr script builds the protocol package, and the prepare hook runs husky plus the protocol update so the generated bindings are current before anything else happens. The bindings-provider/ directory at the root is the counterpart to that build step, and the solarxr-protocol directory holds the protocol the server and the clients agree on. A preinstall hook enforces pnpm with npx only-allow pnpm, and the package manager itself is pinned at 10.33.0. Alongside the JavaScript side there is a Gradle setup with settings.gradle.kts, gradle.properties, the gradlew wrapper and an android/ style directory, and a Nix flake with a lock file and an .envrc, so the project supports a Nix development environment as well.

```json
"workspaces": [
    "solarxr-protocol",
    "gui"
  ],
  "scripts": {
    "gui": "pnpm run update-solarxr && cd gui && pnpm run gui",
    "build": "cd gui && pnpm build",
    "update-solarxr": "cd solarxr-protocol && pnpm run build",
    "preinstall": "npx only-allow pnpm"
  }
```

## Localisation, and how the community works

Translation is done through Pontoon at a dedicated i18n host, and the project asks people to join a Discord translation forum to coordinate, which is a detail worth noticing because it says the localisation effort is organised rather than left to whoever feels like it. The repository also carries a crowdin.yml, so the earlier Crowdin setup is still present alongside the newer Pontoon one, and an l10n.toml for the localisation configuration. The Fluent primary language in the metadata corresponds to the localisation stack. The contributor tooling is thorough: husky for git hooks, a lint-staged configuration and an .lintstagedrc.mjs, a .prettierrc, a .node-version pinning the Node version, an .npmrc, a .envrc for direnv, and a .imgbotconfig for image optimisations in pull requests.

```
Translation is done via Pontoon
```

## The licence clarification, which is unusual and worth reading

The licence section of this project is the most carefully written part of its documentation, and it is worth reading before you build anything on it. The SlimeVR software, meaning the server, firmware, drivers, installer and documents, is distributed under a dual MIT and Apache 2.0 licence and is the copyright of the SlimeVR contributors. But the licences have limits that matter if you distribute software based on SlimeVR. When distributing any software that uses or is based on SlimeVR, you have to provide to the end user at least one of the original, unmodified LICENSE-MIT or LICENSE-APACHE files from SlimeVR, including the Copyright (c) 2020 Eiren Rain and SlimeVR Contributors part, and it is insufficient to use a generic MIT or Apache-2.0 licence. This applies even if you distribute software without the source code, and one way to comply is a menu in your application listing all the open source licences used. Separately, SlimeVR is a trademark or registered trademark of SlimeVR B.V., and use of the software, hardware or other intellectual property grants no right to use the trademark as your own.

```
It is insufficient to use a generic MIT or Apache-2.0 License,
```

## Conclusion

Adopt SlimeVR Server if you want full body tracking in VR without buying a commercial system and you already have the hardware or are willing to build it, and skip it if you only need head tracking, since a headset covers that and the whole point of this project is the body. Verify three things before you start: that you have the sensors to talk to, since the server needs either the ESP tracker, the owoTrack mobile app or Joy-Cons plugged into the Wrangler, and the phone route has limited functionality and compatibility; that you can install it, since the recommended path is the downloadable web installer and the setup instructions live in separate documentation; and that you read the licence clarification, because the software is dual licensed but distribution requires shipping the original unmodified licence file to the end user, which is not the same as shipping a generic MIT text.

## FAQ

### What is the SlimeVR Server for?

It is the server application for the SlimeVR ecosystem and its job is orchestration: it coordinates communication between multiple sensors and integrations, such as SteamVR, so that DIY trackers built from IMUs can be used as full body tracking in VR applications.

### What hardware can I use as a tracker with SlimeVR?

The SlimeVR Tracker for ESP, which covers ESP microcontrollers and multiple IMUs, the owoTrack mobile app, which uses phones as trackers with limited functionality and compatibility, and the SlimeVR Wrangler, which uses Nintendo Switch Joy-Con controllers as trackers.

### How do I get the tracking data into VRChat or other applications?

There is built-in OSC Trackers support for FBT integration with VRChat, PCVR or Standalone, and built-in VMC support for sending and receiving tracking data to and from other applications such as VSeeFace. For SteamVR the SlimeVR OpenVR Driver is used as a driver, and recordings can be exported as .BVH files for motion capture work in applications such as Blender.

### What are the licence conditions for software based on SlimeVR?

The software is dual licensed under MIT and Apache 2.0, but when you distribute anything based on it you must provide the end user with at least one of the original, unmodified SlimeVR licence files, including the copyright line, rather than a generic licence text, even if you do not ship the source code. The SlimeVR name itself is a trademark of SlimeVR B.V.

## Sources

- [License: Apache-2.0](https://github.com/SlimeVR/SlimeVR-Server/blob/main/LICENSE)
- [Project website](https://slimevr.dev)
- [README](https://github.com/SlimeVR/SlimeVR-Server/blob/main/README.md)
- [Releases](https://github.com/SlimeVR/SlimeVR-Server/releases)
- [SlimeVR/SlimeVR-Server on GitHub](https://github.com/SlimeVR/SlimeVR-Server)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/slimevr-slimevr-server
