npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dimainator

v2.11.0

Published

Launch the DIMAINATOR Windows keyboard and mouse relay.

Readme

DIMAINATOR

DIMAINATOR is a Windows 11 x64 terminal app that lets a host share keyboard and mouse controls with friends. Players join by username, the host assigns keys or separate mouse movement and click permissions, and input transitions are relayed to the host in real time.

The host remains in control: only the host can assign keys, start or pause the relay, remove players, and switch between the generic PyAutoGUI backend and the DirectX-oriented PyDirectInput backend.

Run

Once releases are configured:

npx dimainator

The npm package carries the matching Windows x64 executable. The launcher verifies its SHA-256 checksum and caches it under %LOCALAPPDATA%\DIMAINATOR\bin.

To run from source:

py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e ".[dev]"
python -m dimainator

Host workflow

  1. Choose Make Lobby.
  2. Enter an ngrok authtoken on the first run. It is saved in Windows Credential Manager, not in a file.
  3. DIMAINATOR asks ngrok for a public endpoint automatically and copies the complete invite. Invite recipients connect through ngrok and do not receive the host's origin IP address.
  4. Leave the ngrok region on Automatic or pin a region under Settings when testing shows that it gives the host and players lower latency.
  5. The complete invite is copied automatically; share it with the players.
  6. Select a joined username to open the organized host control panel. The visible Open host control panel action provides lobby-wide controls.
  7. Choose Add one or more keys and press regular keys to toggle them. Use Type special key names to enter names such as ctrl, shift, enter, or page up directly. The preset picker contains four-person role splits for Valorant, League of Legends, Minecraft, Roblox, and Fortnite; toggle any number of groups and combine them into the current selection. Remove keys offers each assigned key plus a one-step Remove all keys choice. F12 remains reserved and cannot be assigned.
  8. Mouse movement and keyboard-generated clicks are separate permissions. Give them to the same player or split them between two players. When click access is granted, the player confirms two keys (default U for left click and I for right click). Physical player clicks and scrolling stay local and are never relayed. Remote movement is scaled independently by the host/client horizontal and vertical resolution ratios. Any physical host mouse activity takes control immediately; remote mouse input resumes after five seconds of host inactivity.
  9. Open the host control panel to start, pause, or resume the relay.
  10. Choose Switch backend at any time without closing the lobby.
  11. Choose Audio bridge to mix your microphone with an active voice application for in-game voice chat.

Ctrl+Alt+Shift+F12 is the global emergency stop. It releases all injected keys and pauses the lobby until the host resumes.

Every menu supports mouse selection as well as standard keyboard navigation.

Host audio bridge

The optional audio bridge combines the host's microphone with audio from one active Windows application, such as Discord. It uses Windows 11's process-specific WASAPI loopback capture, so Valorant, music, and unrelated desktop sounds are not included.

Install VB-CABLE separately, then:

  1. Start Discord and join a call so it appears as an active audio application.
  2. Open Audio settings from the main Settings menu, or press V from a host lobby.
  3. Choose the physical microphone, Discord, and CABLE Input (VB-Audio Virtual Cable).
  4. Start the audio bridge.
  5. In Valorant, choose CABLE Output (VB-Audio Virtual Cable) as the voice input device.

Discord continues playing through the host's normal headphones. DIMAINATOR does not play the microphone or combined signal back to the host. If Discord restarts, the microphone stays active and the bridge reconnects to Discord automatically. Closing the lobby always stops the bridge.

VB-CABLE is not bundled or installed by DIMAINATOR. The feature requires Windows 11 x64 and a separately installed compatible VB-Audio virtual cable.

Client workflow

  1. Choose Join Lobby.
  2. Enter the host's URL, lobby code, and your username, or copy the host's complete invite and choose Paste full invite.
  3. Wait for the host to assign your keys and start the relay.
  4. Assigned keys work globally even when DIMAINATOR is not focused. Local input is not suppressed.
  5. Assigned mouse movement works globally. Click access uses your remembered left/right keyboard bindings and never relays your physical buttons or wheel. The host status tells you when physical host activity has temporarily paused remote mouse control.
  6. Hold Enter for three seconds to leave; Escape and mouse selection ask for confirmation so an accidental action cannot disconnect you.

After a successful connection, DIMAINATOR remembers the last lobby URL and username for the next join. Lobby codes are intentionally not saved.

Development

Run checks with:

New-Item -ItemType Directory -Force build/audio-helper | Out-Null
cl /nologo /std:c++20 /EHsc /O2 /DUNICODE /D_UNICODE /D_WIN32_WINNT=0x0A00 native/audio_helper.cpp /Fe:build\audio-helper\dimainator-audio-helper.exe /link ole32.lib uuid.lib mmdevapi.lib
.\build\audio-helper\dimainator-audio-helper.exe --self-test
python -m pytest
python -m compileall -q src
npm pack --dry-run

The local WebSocket integration tests do not require ngrok or synthetic OS input. Real keyboard backends, ngrok, VB-CABLE routing, Discord process capture, and Valorant input should be smoke-tested on a Windows 11 machine before releasing.

Latency-sensitive WebSocket connections explicitly enable TCP_NODELAY, which disables Nagle's algorithm. Python's asyncio normally enables this already; the explicit setting documents and preserves the intended low-latency behavior.

Mouse motion uses Windows Raw Input on the client and relative injection on the host. Left/right clicks originate from explicitly configured keyboard bindings; physical player clicks and wheel input are ignored. Movement packets are coalesced at up to 120 Hz. The host's physical mouse monitor ignores injected events, preventing relayed movement from triggering its own five-second override. Pausing, panic stop, disconnecting, reassigning, or switching backends always releases remotely held mouse buttons.

Publishing setup

The source repository at yeknam-and-co/dimainator is private. The public npm package includes the verified Windows executable so npx dimainator does not need access to private GitHub release assets. Configure the repository’s NPM_TOKEN secret, then push a tag matching both project versions, such as v2.11.0.

DIMAINATOR does not attempt to bypass game security or anti-cheat systems. Compatibility with a particular game is not guaranteed; follow the game’s rules and terms of service.