The transparent, feature-rich desktop bridge for VRChat remote control
Seamlessly bridge VRChat OSC with the ARC, privacy-first, open-source, and fully transparent.
Features โข Installation โข Configuration โข Gallery โข Documentation
ARC-OSC Client is a standalone Electron desktop application that serves as the bridge between VRChat and the ARC-OSC server. It enables real-time avatar parameter synchronization, heart rate streaming, VRChat API integration, and a Vue 3 + TypeScript desktop interface built on Electron Vite.
๐ Transparency First: This client's source code is public to ensure users know exactly what they're running. Privacy matters.
Connect seamlessly to the ARC-OSC server infrastructure. Authenticate with your credentials and enjoy real-time bidirectional synchronization of avatar parameters between VRChat and the web dashboard.
- Secure authentication with username/password
- Automatic reconnection handling
- Support for Live, Beta, and custom server URLs
- Real-time parameter sync
๐ธ Preview
Screenshot placeholder: ARC Connection Panel
Manage up to 20 simultaneous OSC endpoints for complex setups. Perfect for advanced users running multiple applications that need OSC data.
- Add/remove endpoints dynamically
- Configure incoming and outgoing ports independently
- Per-connection enable/disable controls
- Visual connection status indicators
Leverage automatic service discovery via mDNS/Bonjour to find and connect to OSC-compatible applications on your network. VRChat's OSC Query protocol is fully supported.
- Auto-discover services on your local network
- Subscribe to specific parameter paths
- Per-path ignore controls for filtering unwanted data
- Persistent discovery across sessions
๐ธ Preview
Screenshot placeholder: OSC-Query Discovery Panel
Watch your avatar parameters update in real-time with a comprehensive monitoring view. Debug OSC traffic, verify parameter values, and troubleshoot issues with ease.
- Real-time parameter value display
- OSC traffic logging with timestamps
- Filter and search functionality
- Export logs for debugging
Stream your heart rate directly into VRChat avatar parameters using HypeRate devices. Supports multiple tracker IDs for multi-user setups or backup devices.
- Connect via HypeRate WebSocket API
- Multi-tracker support with primary selection
- Custom tracker naming
- Auto-reconnection on connection loss
- Real-time heart rate display
Optional VRChat API login for enhanced features. Access your friends list, current instance information, and more โ with full 2FA support.
- Account statistics dashboard
- Auto-Status integration
- Auto-Inviter (Future releases)
๐ธ Preview
Screenshot placeholder: VRChat API Panel
Manage VRChat status presets directly from the client and trigger them through OSC or scheduled time windows.
- Configure up to 8 status presets
- Set status color and optional status message
- Trigger presets from OSC parameters
- Schedule preset windows with fallback statuses
- Detect externally changed statuses and avoid overwriting them
- Load the current VRChat account status on startup when VRChat API is available
๐ธ Preview
Screenshot placeholder: Auto-Status Panel
Browse VRChat community events directly inside the client through the integrated VRC Timeline view.
- Embedded
vrc.tlwebview - Safe external-link interception
- Quick copy/open actions for external URLs
- Experimental in-client browsing support
๐ธ Preview
Screenshot placeholder: VRC Timeline Panel
Transform PhysBone leash inputs into VRChat movement controls. Get pulled around by your friends with configurable sensitivity, dead zones, and directional mapping.
- Directional Control: Forward, backward, left, right, up, down
- Movement Modes: Walk and run with configurable thresholds
- Fine-tuning Options:
- Run/Walk dead zones
- Strength multiplier
- Up/down compensation
- Active/inactive update delays
- Multi-leash Support: Configure multiple PhysBone parameters
- Autostart Option: Begin leash control on app launch
Connect Bluetooth haptic devices (via Buttplug.io/Intiface Central) to your VRChat avatar for immersive tactile feedback. Control toy vibration based on avatar contacts and penetration depth.
- Real-time Haptic Feedback: Responds to VRCFury Haptics and TPS penetration systems
- Multi-Device Support: Configure multiple toys independently with per-device settings
- Flexible Source Filtering:
- Touch (self/others)
- Penetration (self/others)
- Frot (others)
- Advanced Control Options:
- Depth-based or Motion-based vibration modes
- Intensity multiplier (0.1x - 2.0x)
- Idle vibration baseline
- Per-device source filtering
- Device Management:
- Battery level monitoring
- Real-time activity display
- Device configuration
- Intiface Central Integration: Connect via WebSocket to Intiface Central server
๐ธ Preview
Screenshot placeholder: OSCGoesBrrr Panel showing connected devices and configuration
Built-in feedback system to communicate directly with the development team. Submit bug reports, feature requests, or general feedback without leaving the app.
| Requirement | Details |
|---|---|
| Node.js | v24 LTS (recommended) |
| ARC-OSC Server | Access to a running instance (Live or Beta) |
| VRChat | With OSC enabled in settings |
| Intiface Central | (Optional) For OSCGoesBrrr haptic device support |
# Clone the repository
git clone https://github.com/ComfyChloe/ARC-Client.git
cd ARC-Client
# Install dependencies
npm install
# Start in development mode
npm run dev# Create unpacked Windows distribution
npm run buildThe built application will be available in the dist/win-unpacked/ folder. The normal build process does not create an all-in-one installer.
| Setting | Default | Description |
|---|---|---|
| Server URL | Live | Choose between Live, Beta, or custom URL |
| Username | โ | Your ARC-OSC account username |
| Password | โ | Your ARC-OSC account password |
| Setting | Default | Description |
|---|---|---|
| Local OSC Port | 9001 |
Port for receiving data from VRChat |
| Target OSC Port | 9000 |
Port for sending data to VRChat |
| Target Address | 127.0.0.1 |
VRChat's IP address (localhost for local) |
Create a secrets.json file in the root directory using secrets.example.json as a template:
{
"hyperate_api_key": "your-hyperate-api-key-here"
}| Setting | Default | Description |
|---|---|---|
| Intiface Address | 127.0.0.1 |
IP address of Intiface Central server |
| Intiface Port | 12345 |
WebSocket port for Intiface Central |
| Use WSS | false |
Enable secure WebSocket (wss://) |
Per-Device Settings:
- Source Type: Filter by penetrator type (all, penetrator, orifice)
- Enabled Sources: Toggle individual contact types (touch, penetration, frot)
- Intensity Multiplier: Scale haptic strength (0.1x - 2.0x)
- Idle Vibration: Baseline vibration when in contact (0-100%)
- Vibration Mode: Depth-based (penetration depth) or Motion-based (thrusting speed)
Explore the ARC-OSC Client interface through these screenshots:
๐ Main OSC Dashboard
The main OSC panel showing multi-connection management and parameter monitoring.
๐ Logs & Monitoring
Real-time logging view for debugging OSC traffic and monitoring parameter changes.
๐ฆฎ OSC Leash Control
Leash configuration panel with sensitivity controls and directional parameter mapping.
โโโโโ Intiface Central (Buttplug.io) โ
| Guide | Description |
|---|---|
| OSC Leash Setup | Complete Unity prefab setup guide for avatar-side leash configuration |
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ VRChat โโโโโโถโ ARC-OSC Client โโโโโโถโ ARC-OSC Server โ
โ (OSC @ 9001) โโโโโโโ (Electron/Vue/TS)โโโโโโโ (WebSocket) โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ โ
โ โโโโโ HypeRate WebSocket
โ โโโโโ VRChat API
โ โโโโโ OSC-Query mDNS
โ
โโโโโ OSC @ 9000 (outgoing)
ARC-Client/
โโโ main/ # Electron main process (TypeScript)
โ โโโ index.ts # App entry and IPC registration
โ โโโ containers/ # Feature containers and integrations
โ โโโ services/ # Core services (OSC, WebSocket, config, encryption)
โ โโโ types/ # Shared type declarations
โโโ preload/ # Secure preload bridge (TypeScript)
โ โโโ index.ts
โโโ renderer/ # Electron renderer root
โ โโโ index.html # Main renderer entry
โ โโโ splash.html # Startup splash screen
โ โโโ src/ # Vue 3 + TypeScript application
โ โโโ App.vue # Shell and navigation
โ โโโ pages/ # Routed feature pages
โ โโโ composables/ # Shared feature state / IPC wrappers
โ โโโ assets/ # Global styles
โโโ electron.vite.config.ts # Electron Vite build configuration
โโโ package.json # Dependencies & scripts
โโโ secrets.json # API keys (user-created)
โโโ tsconfig.json # Shared TypeScript config
โโโ tsconfig.node.json # Main/preload TypeScript config
โโโ tsconfig.web.json # Renderer TypeScript config
โโโ Guides/ # User documentation
โโโ userdata/ # Persistent user configuration
โโโ dist/ # Built output (`win-unpacked`)
This project is currently in Open beta. If you're interested in contributing, please reach out through the discord server.
This project is licensed under the ComfyChloe Non-Commercial Copyleft License 1.2 โ see the LICENSE file for details.
This means you may use, share, and modify the code, but redistributed versions must remain under the same license, must include source code, and may not be sold or redistributed as closed-source software without separate written permission.
Made with โค๏ธ by ComfyChloe


