Skip to main content

PAMIQ VRChat

Interface for PAMIQ to interact with VRChat.

✨ Features

  • Visual Input: Capture VRChat gameplay through OBS virtual camera with the ImageSensor
  • Mouse Control: Simulate mouse movements and clicks with natural-feeling transitions using MouseActuator and SmoothMouseActuator
  • Avatar Control: Send OSC commands to VRChat for avatar movement, jumping, and actions via OscActuator and SmoothOscActuator
  • Smooth Transitions: Natural-feeling controls with gradual acceleration and realistic button timings
  • PAMIQ Integration: Seamlessly works with PAMIQ-Core for AI agent development

📦 Installation

[!NOTE] If Linux 🐧 user, install inputtino first which is a required dependency.

# Install via pip
pip install pamiq-vrchat

# Install from source
git clone https://github.com/MLShukai/pamiq-vrchat.git
cd pamiq-vrchat
pip install .

🛠️ Setup VRChat Environment

Prerequisites

  • Linux or Windows machine with Desktop environment.
  • Machine capable of running VRChat

Install Steam

Download and install Steam from the official website.

(🐧 Linux User Only) Enable Proton

Open Steam → Settings → Compatibility and enable Enable Steam Play for all other titles.

steam_compatibility

(Optional) Install Proton GE

If you want to use video players in VRChat on Linux, install Proton GE.

After installation, select GE-Proton as the compatibility tool in Steam → Settings → Compatibility under Run other titles with:.

Install VRChat

Add VRChat to your library from the Steam store and install it.

After install, launch VRChat and login.

Setup OBS

For OBS installation and virtual camera setup, refer to pamiq-io documentation.

[!NOTE] The Output (Scaled) Resolution and FPS Value in OBS Video settings will affect the output of the ImageSensor class. obs-video-setting

Capture the VRChat window in OBS and enable the virtual camera.

You can also use our pre-configured Scene Collection. Import it from the OBS Scene Collection tab → Import, and ensure the checkbox is checked.

Enable OSC

  1. Open the "Launch Pad" (press the Esc key)
  2. Go to the main menu
  3. Open settings (click the ⚙️ icon)
  4. Click Search all settings and type "OSC", then press Enter
  5. Enable the OSC button

enable_osc

🚀 Quick Examples

Image Sensor

from pamiq_vrchat.sensors import ImageSensor

# Connect to OBS virtual camera automatically
sensor = ImageSensor()
# Or specify a camera index
# sensor = ImageSensor(camera_index=0)
# (Windows only) you can specify width and height
# sensor = ImageSensor(width=1920, height=1080)

# Capture a frame
frame = sensor.read()
# frame is a numpy array with shape (height, width, channels)

Mouse Control

[!NOTE] When using mouse control, remember to keep the VRChat game window focused (selected) on your desktop.

from pamiq_vrchat.actuators import MouseActuator, MouseButton, SmoothMouseActuator

# Basic mouse control
mouse = MouseActuator()
# Move mouse at 100 pixels/sec horizontally, 50 pixels/sec vertically
mouse.operate({"move_velocity": (100.0, 50.0)})
# Click the left button
mouse.operate({"button_press": {MouseButton.LEFT: True}})
# Release the left button
mouse.operate({"button_press": {MouseButton.LEFT: False}})

# Smooth mouse control with gradual acceleration and natural-feeling clicks
smooth_mouse = SmoothMouseActuator(
    delta_time=0.05,     # Update interval
    time_constant=0.2,   # Movement smoothing
    press_delay=0.05,    # Button press delay
    release_delay=0.1    # Button release delay
)
smooth_mouse.operate({"move_velocity": (100.0, 50.0)})

OSC Avatar Control

from pamiq_vrchat.actuators import OscActuator, OscAxes, OscButtons, SmoothOscActuator

# Basic OSC control
osc = OscActuator()
# Move forward
osc.operate({"axes": {OscAxes.Vertical: 1.0}})
# Jump
osc.operate({"buttons": {OscButtons.Jump: True}})
# Move forward while running
osc.operate({
    "axes": {OscAxes.Vertical: 1.0},
    "buttons": {OscButtons.Run: True}
})

# Smooth OSC control for more natural movement
smooth_osc = SmoothOscActuator(
    delta_time=0.05,     # Update interval
    time_constant=0.2,   # Axis value smoothing
    press_delay=0.05,    # Button press delay
    release_delay=0.1    # Button release delay
)
smooth_osc.operate({"axes": {OscAxes.Vertical: 0.5}})

🎮 Running the Sample Project

After setting up VRChat environment and cloning this repository, you can run the sample project. It trains an agent that interacts with VRChat.

  • For Linux Users

    # Run the sample
    ./run-sample.linux.sh
    
  • For Windows Users

    # Run the sample (in PowerShell)
    .\Run-Sample.Windows.ps1
    

These scripts will:

  • Check and install dependencies automatically
  • Verify CUDA availability
  • Check if VRChat and OBS are running
  • Start the keyboard control interface (pamiq-kbctl)
  • Launch the autonomous learning agent

[!IMPORTANT] Mouse Control Notice: When the agent starts, it will take control of your mouse for VRChat interaction. To pause the system, press Alt+Shift+P. This is essential for regaining mouse control when needed.

For detailed implementation, see src/run_sample.py which contains the architecture, hyperparameters and training procedure.

🤝 Contributing

See our Contributing Guide for details on how to set up the development environment and contribute to the project.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Metadata

Release files for pamiq-vrchat 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pamiq-vrchat 0.1.0
File Size Uploaded Provenance Actions
pamiq_vrchat-0.1.0.tar.gz 465.1 kB With provenance Details for pamiq_vrchat-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pamiq-vrchat 0.1.0
File Interpreter ABI Platform Actions
pamiq_vrchat-0.1.0-py3-none-any.whl Python 3 none any Details for pamiq_vrchat-0.1.0-py3-none-any.whl

Total release size: 483.7 kB

Release files / pamiq_vrchat-0.1.0.tar.gz

Download URL pamiq_vrchat-0.1.0.tar.gz
Size 465.1 kB
Tags Source
SHA-256 checksum
How to use checksums
2065144e4d12456f02aa290774caba25b0298d302d581dd7c673fd6a0ce45ba8
BLAKE2b-256 checksum
How to use checksums
c8c30b98392681cebd30544ed9ed2bbb0ba24dfebb4f9d9a8470f6205c9e7c43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 30, 2025.

Transparency log

Release files / pamiq_vrchat-0.1.0-py3-none-any.whl

Download URL pamiq_vrchat-0.1.0-py3-none-any.whl
Size 18.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
10cc93fa4460028b985a2b148b584e31bb0c65ae888b5ffda17afeb620619e3e
BLAKE2b-256 checksum
How to use checksums
4e53f941e219c1235f0b5bb7ed98570872c345713474fa472dab7121a234e0df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 30, 2025.

Transparency log

Security for pamiq-vrchat 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pamiq_vrchat-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 30, 2025.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page