Vortex Launch Bridge is a Millennium plugin that coordinates Steam launches with Vortex-managed profiles. When you start an eligible game, it lets you activate a Vortex profile first, continue the original Steam launch, or cancel.
- Detects Vortex and reads its supported game/profile state without editing it.
- Warms a background cache at startup and safely refreshes Vortex profile state on every supported Steam PLAY request.
- Uses the game's Steam name and profile count in a native, theme-aware Steam confirmation dialog.
- Activates a selected Vortex profile in Vortex's minimized background mode and waits for deployment confirmation before starting the configured target.
- Includes an explicit, backup-verified compatibility repair for Vortex child processes that otherwise create visible console windows.
- Preserves the exact intercepted Steam launch request when you choose Continue launching with Steam...
- Supports optional remembered choices, preferred profiles, custom executables, custom arguments, and exact Steam AppID-to-Vortex game mappings.
- Fails open before interception whenever eligibility cannot be established safely.
- Keeps settings and diagnostic data local and redacts paths and launch arguments from normal logs.
Important
Continue launching with Steam... is not a "vanilla mode." It replays Steam's original launch request, but it does not remove or change anything Vortex may already have deployed.
- Windows 10 or Windows 11
- Desktop Steam
- Millennium
- Vortex
The current local validation environment uses Millennium 3.3.1 and Vortex 2.4.2.
Once the plugin is listed in the Steam Homebrew plugin catalog:
- Open Steam > Millennium Settings > Plugins.
- Choose Install a plugin.
- Enter the plugin ID
<Eventual_Steambrew_ID_Here>and install it. - Restart Steam when prompted.
For a direct installation that does not use the Steam Homebrew Plugin Database:
- Download
VortexLaunchBridgeInstaller.exefrom the latest GitHub release. - Run the installer and confirm the detected Millennium directory.
- Choose Install/Repair. The installer force-closes Steam and its web helpers first if they are running.
- Restart Steam and enable the plugin in Steam > Millennium Settings > Plugins if necessary.
The installer downloads an immutable snapshot of the latest main commit,
installs the repository's pinned build dependencies in a temporary workspace,
runs the production build, validates the runtime package, and atomically
installs it under Millennium's user plugins directory. It also provides a
Delete action that removes only this plugin's installation folder.
Use this method for an unreleased build or local development.
-
Install Node.js 20 and pnpm 10:
npm install --global pnpm@10.34.5
-
Clone and build the repository:
git clone https://github.com/WoahItsJeebus/MSVB.git Set-Location MSVB pnpm install pnpm run build
-
Close Steam completely.
-
Open an elevated PowerShell window in the checkout and create a directory junction:
New-Item ` -ItemType Junction ` -Path 'C:\Program Files (x86)\Steam\millennium\plugins\vortex-launch-bridge' ` -Target (Resolve-Path '.')
Adjust the Steam path if your Millennium installation is elsewhere. The destination must not already exist.
-
Start Steam. Rebuild and restart Steam after changing plugin code.
The junction links the development checkout directly to Millennium; it does not duplicate the repository.
Vortex Launch Bridge scans Vortex's read-only state in the background when Steam starts. Launch a Steam game that Vortex manages and that has at least one valid Vortex profile. The prompt offers three actions:
- Launch with Vortex activates a profile, waits for deployment confirmation, and starts the configured launch target.
- Continue launching with Steam... replays the exact Steam request without changing Vortex state.
- Cancel abandons the intercepted request.
With Vortex closed, each supported PLAY request performs a fresh read-only profile query before the prompt is built, so newly added profiles appear without restarting Steam. If Vortex is already running, the bridge retains its last safe snapshot because Vortex does not reliably service that startup query as a second instance.
Only one launch flow is kept at a time. Pressing PLAY again immediately closes and cancels the older prompt or pending check, then handles the newest request; there is no post-cancel cooldown.
For the most reliable profile activation, close Vortex before choosing Launch with Vortex. Vortex applies command-line profile selection during a cold start but may ignore those arguments when forwarding them to an already-running instance.
If activation times out, Retry force-closes all running Vortex instances and repeats the same held profile activation as a cold start. Steam remains held until the retried activation is confirmed, continued through Steam, or cancelled.
Open Steam > Millennium Settings > Plugins > Vortex Launch Bridge to configure:
- whether every eligible launch asks first;
- opt-in remembered launch choices per game;
- diagnostic launch logging;
- the Vortex activation timeout;
- a preferred Vortex profile for each Steam AppID;
- an optional custom executable and arguments after activation;
- Vortex executable detection or an explicit override;
- read-only Vortex and game-matching diagnostics;
- exact Steam AppID-to-Vortex game-ID overrides.
Settings are stored locally at:
%LOCALAPPDATA%\VortexLaunchBridge\settings.json
- Confirm the plugin is enabled and Steam was restarted after installation.
- Open the plugin settings and run Detect Vortex and Run read-only probe.
- Confirm Vortex manages the game and has at least one valid profile for it.
- If automatic matching fails, configure an exact Steam AppID-to-Vortex game-ID override.
- Fully exit Vortex, including its notification-area process, and try again.
- Increase the activation timeout in the plugin settings, up to 25 seconds, if deployment normally takes longer.
- Verify the selected profile still exists and deploys successfully from Vortex itself.
Vortex 2.3.0 through 2.4.2 starts its bundled console-subsystem .NET probe,
its fsutil dirty query administrator check, and some shell-backed startup
tools without Node's windowsHide option. Version 1.0.7 handles this
automatically: a cold Vortex process remains suspended until a scoped startup
watcher is ready, and only console windows belonging to descendants of that
specific Vortex process are hidden. The watcher exits after 30 seconds, does
not require administrator access, and does not modify Vortex.
The release ZIP and installed plugin also include an optional compatibility repair. If a Vortex update introduces a console path outside that startup window, fully exit Vortex and run the repair from an administrator PowerShell opened in the plugin directory:
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\patch-vortex-dotnetprobe.ps1The script validates Vortex's ASAR layout and affected file hashes, removes the
command shell from the administrator check, and creates a complete
hash-verified archive backup under
%LOCALAPPDATA%\VortexLaunchBridge\Backups, inserts the missing option without
changing any file size, updates the corresponding integrity hashes, and
verifies the result. Vortex's signed probe remains untouched. A later Vortex
update may restore the official files; rerun this optional repair only if the
automatic guard does not cover a later child launch.
The backend log is normally written to:
<Steam>\millennium\logs\vortex-launch-bridge_log.log
Millennium frontend output is written to:
<Steam>\logs\webhelper_js.txt
Enable diagnostic launch logging only while investigating a problem. Before sharing logs, review them for information specific to your system.
If the issue persists, open a bug report with the plugin, Millennium, Vortex, and Windows versions plus the smallest relevant log excerpt.
The plugin does not:
- edit Vortex's profile or deployment state directly;
- use Vortex state mutation commands;
- scan unrelated drives;
- inject into game processes;
- remove deployed mods when continuing through Steam;
- send telemetry or settings over the network.
The optional terminal-flash compatibility script changes only the exact guarded
child-process entries in Vortex's app.asar when the user explicitly runs it
and always retains the complete original archive in the local backup directory
above.
During a cold Vortex activation, the bridge briefly observes top-level window creation and visibility events. It acts only on console-class windows whose process ancestry reaches the exact Vortex process it just launched, and the watcher terminates after 30 seconds.
Process launches avoid a command shell, custom arguments use bounded parsing, settings are validated before use, and asynchronous work is bounded by explicit timeouts. See Architecture for the design and trust boundaries.
Prerequisites are Node.js 20, pnpm 10, Windows PowerShell, and Lua 5.1 on PATH.
pnpm install
pnpm run build
pnpm testpnpm test runs the complete launch, activation, settings, parsing, caching, matching, and process-runner regression suite. If backend/util/process_shell.cs changes, rebuild its committed Windows-subsystem helper with:
pnpm run build:process-shell
pnpm testAdditional references:
- Architecture and safety boundaries
- Testing guide
- Release checklist
- Detailed implementation findings
- Changelog
Bug reports and focused pull requests are welcome. Read CONTRIBUTING.md before submitting changes. Please report security-sensitive issues according to SECURITY.md.
Vortex Launch Bridge is available under the MIT License.
Steam, Valve, Nexus Mods, and Vortex are trademarks of their respective owners. This independent project is not affiliated with or endorsed by Valve Corporation or Nexus Mods.