Upload automatically with the QuestRouter CLI
The QuestRouter CLI is a small, free program that sends your quest data for you after every logout or
/reload, so you never have to visit the upload page. You set it up
once by typing a few commands in a terminal window. This page walks you through every step, for Windows,
macOS and Linux.
The short version
- Download it and unpack it into a folder you keep.
- Run
questrouter setup. It finds your WoW folder and opens a one-time “I'm human” check in your browser. - In the game, type
/qr collect ononce. - Run
questrouter install-autostart. From then on it uploads by itself.
On Windows, double-clicking questrouter.exe does steps 2 and 4 for you: it runs setup, then
asks whether to upload automatically at every login.
What it does, and why
WoW addons cannot use the internet. The QuestRouter addon writes what it records to a file in your WoW
folder (QuestRouter.lua) when you log out or type /reload, and something outside
the game has to send it. Everyone's shared runs are what make the leveling routes better: where quest givers
really stand, which order is fastest, and what Forever changed.
- It finds your WoW folder and the addon's file by itself.
- A few seconds after the game saves, it uploads the play sessions it has not sent before. It sends the same data as the upload page: quest and world data only, never your character name, realm, account or chat (privacy notes).
- It can start by itself when you log in to your computer and run quietly in the background.
- It only reads the addon's file. It never writes in your WoW folder and never touches the game, its memory or your keyboard.
-
questrouter dry-runshows exactly what would be sent (and sends nothing), andquestrouter delete-my-datadeletes everything it uploaded.
Rather not install anything? The upload page does the same job in your browser: drop the file there after you play. The CLI just does it for you, every time.
It runs on Windows 10 and 11 (x64), macOS 11 or later (Apple silicon and Intel) and 64-bit Linux. It is open source (MIT), and every release is built from the public source code by GitHub Actions.
Install
Downloads are on the project's
GitHub Releases page.
That page also lists addon and data-pack releases: open the newest release named
QuestRouter CLI and download the file for your system from its Assets
list. <version> below stands for the release number, such as 0.1.0. No
QuestRouter CLI release listed yet? It is on its way; use the upload page until then.
Windows 10 and 11
-
Download
questrouter-<version>-x86_64-pc-windows-msvc.zipfrom the newest QuestRouter CLI release. You can check the download before you open it. -
Make a folder to keep it in for good, for example
QuestRouterin your user folder (C:\Users\<you>\QuestRouter). Right-click the zip, choose Extract All… and extract it into that folder. You getquestrouter.exe,questrouterw.exe(the same program without a window, used when it starts at login), a README and the license. Do not run it from inside the zip: Windows would run it from a temporary folder that it empties later. -
Double-click
questrouter.exein that folder. If Windows shows “Windows protected your PC”, read this first. A window opens and runs setup (see First run): press Enter to use the WoW folder it found, then finish the “I'm human” check in the browser tab it opens. - When it asks “Upload automatically at every login (recommended)?”, press Enter for yes. Then press Enter once more to close the window. That is all; turn on sharing in the game (below) and play.
Everything else on this page (status, upload and the rest) is typed in a
terminal. Open one in that folder: on Windows 11, right-click an empty spot in the folder and choose
Open in Terminal; on Windows 10, click the folder's address bar, type
powershell and press Enter. In PowerShell, a program in the current folder starts with
.\, so type .\questrouter wherever this page says questrouter:
.\questrouter status
Package managers: coming soon. winget and Scoop listings are being set up. Once they
are live, they install the questrouter command for you (no .\ needed, in a
new terminal window) and keep it updated:
winget install Moikapy.QuestRouter.CLI
With Scoop, add the QuestRouter bucket (its address will be posted here), then run
scoop install questrouter. Until then, an error that the package was not found just means
it is not listed yet: use the download above.
macOS
-
Download
questrouter-<version>-universal-apple-darwin.tar.gzfrom the newest QuestRouter CLI release. The one file works on Apple silicon and Intel Macs, macOS 11 or later. -
Double-click it in your Downloads folder. Finder unpacks a folder with the
questrouterprogram in it. Movequestrouterto a folder you keep, for example a newQuestRouterfolder in your home folder. -
Open Terminal (press Command-Space and type Terminal). Type
cdand a space, drag theQuestRouterfolder onto the Terminal window, and press Return. -
Run the line below. A program in the current folder starts with
./, so type./questrouterwherever this page saysquestrouter../questrouter setup
The first time, macOS will most likely refuse to open it because it is not signed yet. That is expected: see macOS says it cannot be opened.
Homebrew: coming soon. Once the QuestRouter tap is live, this installs it without the macOS warning, and running it again later updates it:
brew install moikapy/tap/questrouterLinux
For 64-bit (x86_64) Linux with glibc 2.35 or newer: Ubuntu 22.04 or later, or another distribution of that age or newer. It finds WoW in Wine, Lutris, Bottles and Steam (Proton) prefixes.
-
Download
questrouter-<version>-x86_64-unknown-linux-gnu.tar.gzfrom the newest QuestRouter CLI release. -
In a terminal, in the folder you downloaded it to, unpack it and put the program in
~/.local/bin:tar -xzf questrouter-*-x86_64-unknown-linux-gnu.tar.gz mkdir -p ~/.local/bin mv questrouter-*-x86_64-unknown-linux-gnu/questrouter ~/.local/bin/ questrouter setup
“questrouter: command not found”? Your system does not have ~/.local/bin on its
PATH yet: log out and back in, or type the full path, ~/.local/bin/questrouter setup.
Homebrew on Linux works too, once the tap is live (see macOS).
Arch Linux (and Manjaro, EndeavourOS): the same binary works. Once the AUR package is published,
yay -S questrouter-bin (or paru -S questrouter-bin) installs it to
/usr/bin/questrouter; then run questrouter setup.
First run: questrouter setup
Run questrouter setup (from a downloaded copy: .\questrouter setup on Windows,
./questrouter setup on macOS). On Windows, double-clicking questrouter.exe runs it
too, then offers to start at every login. It does three things:
-
Finds your World of Warcraft folder. On Windows it reads where Battle.net installed the
game and checks Program Files and the usual game folders on every drive. On macOS it checks
/Applicationsand your own Applications folder; on Linux, Wine, Lutris, Bottles and Proton prefixes. It shows what it found and asks you to confirm: press Enter for yes. If it finds nothing, it asks you to paste the folder. Any folder inside the game folder works too, such asInterface\AddOns. - Checks the addon: whether QuestRouter is installed and how many play sessions it has recorded.
-
Registers this computer, once. It opens
questrouter.app/registerin your browser for a quick “I'm human” check (Cloudflare Turnstile). Select Register there, then close the tab. If the browser did not open, or you closed it too soon, runquestrouter register.
QuestRouter setup
1. World of Warcraft folder
✓ found World of Warcraft: C:\Program Files (x86)\World of Warcraft
→ _classic_beta_ (QuestRouter installed)
Use this folder? [Y/n]
✓ saved as your WoW folder
2. QuestRouter in the game
! _classic_beta_: addon installed, no QuestRouter data yet
3. Register this computer (one time)
· QuestRouter asks each new uploader to pass a quick "I'm human" check once.
✓ opened the registration page in your browser; finish the check there
→ https://questrouter.app/register?installer=6d985dab4abff3166dac286d0b355ebc
Next steps
1. In WoW, turn on data sharing once: /qr collect on
2. Play. QuestRouter saves your progress when you log out or type /reload.
3. Upload it: questrouter upload (or leave questrouter watch running)
4. Upload automatically at every login: questrouter install-autostart
Check on it any time: questrouter status
Game installed somewhere unusual? Tell it where, with the path in quotes:
questrouter setup --wow-path "D:\Games\World of Warcraft"The installer ID in the registration link is random. It is not linked to you, your computer or your game account; it only lets you delete your uploads later.
Turn on data sharing in the game
The addon records nothing until you agree, so the CLI has nothing to send until then. Accept the addon's sharing prompt, or type this in the WoW chat box once:
/qr collect on
/qr collect status shows whether it is on, and /qr collect off stops it. The game
writes the addon's file only when you log out, exit or type /reload, so that is when the CLI
sees new data.
Check it works: questrouter status
After you have played a bit and logged out (or typed /reload), send what is there with
questrouter upload, then run:
questrouter statusQuestRouter uploader 0.1.0
installer id: 6d985dab… (anonymous; --full shows all of it)
wow folder: C:\Program Files (x86)\World of Warcraft (saved)
game data: _classic_beta_: addon installed, 2 sessions recorded
uploads: on
last upload: 2026-10-09 18:42 UTC (5 min ago)
uploaded: 2 sessions, 1,284 events, 2,000 trail points
pending: nothing waiting
autostart: on (Task Scheduler task "QuestRouter Uploader"; log: C:\Users\you\AppData\Roaming\QuestRouter\QuestRouter\data\watch.log)
last check: 2026-10-09 18:42 UTC (5 min ago)
api: https://api.questrouter.app
settings: C:\Users\you\AppData\Roaming\QuestRouter\QuestRouter\config\config.json
- last upload shows a time: uploads work.
- pending: nothing waiting: everything recorded so far has been sent.
- registration: needed: finish the “I'm human” check at the link shown, or run
questrouter register. - uploads: paused: resume with
questrouter config --resume. - last error: the most recent problem; look it up under Troubleshooting.
Want to see exactly what gets sent? questrouter dry-run --summary lists the recorded sessions
and which of them would be sent, and questrouter dry-run prints the data itself. Neither sends
anything.
Upload at every login
questrouter install-autostart
This sets up your system's own start-at-login feature, for your user only and without admin rights, and
prints every file it creates and every command it runs. From then on questrouter watch runs in
the background: a few seconds after the game saves, it uploads, and it also checks every 5 minutes.
| System | What it sets up | Where its messages go |
|---|---|---|
| Windows | A Task Scheduler task, QuestRouter Uploader, that runs questrouterw.exe (no window) |
%APPDATA%\QuestRouter\QuestRouter\data\watch.log |
| macOS | A LaunchAgent, ~/Library/LaunchAgents/app.questrouter.watch.plist |
~/Library/Logs/QuestRouter/watch.log |
| Linux | A systemd user service, questrouter.service |
journalctl --user -u questrouter |
- To see what it would do without changing anything:
questrouter install-autostart --dry-run. - It starts the program from where it is now. If you move the program, run
questrouter install-autostartagain. -
Linux without systemd user services: it says so. Add
questrouter watchto your desktop's startup applications instead. -
Rather not have it start by itself? Leave
questrouter watchrunning in a terminal while you play (Ctrl+C stops it), or runquestrouter uploadafter you play.
Turning it off
questrouter uninstall-autostart
This stops the background uploader and removes what install-autostart created. Running it
again when it is already off is harmless. questrouter status shows autostart: off
afterwards.
Updating
questrouter --version shows the version you have; the
releases page
shows the newest one and what changed.
- If autostart is on, stop it first, so the running copy lets go of its files:
questrouter uninstall-autostart. -
Download the new release and replace the old files in the same folder (on Windows, both
questrouter.exeandquestrouterw.exe). With a package manager, once listed:winget update Moikapy.QuestRouter.CLI,scoop update questrouter, or runbrew install moikapy/tap/questrouteragain. -
Turn autostart back on:
questrouter install-autostart(on Windows you can instead double-click the newquestrouter.exeand answer yes).
Your settings, your anonymous ID and the list of sessions already sent are stored apart from the program, so an update keeps them and sends nothing twice.
Uninstall and delete your data
- Turn off start at login:
questrouter uninstall-autostart. -
Optional: delete everything you uploaded with
questrouter delete-my-data. It asks you to typedelete, permanently removes everything uploaded from this computer from the QuestRouter server, and pauses uploads so nothing recorded so far is sent again. Do this before step 4: the anonymous ID that identifies your uploads lives in the settings folder. Characters you linked to a profile keep it until you delete them on the profiles dashboard. -
Delete the program files. With a package manager:
winget uninstall Moikapy.QuestRouter.CLI,scoop uninstall questrouterorbrew uninstall questrouter. -
Delete its settings folder:
%APPDATA%\QuestRouteron Windows,~/Library/Application Support/app.QuestRouter.QuestRouterand~/Library/Logs/QuestRouteron macOS,~/.config/questrouterand~/.local/share/questrouteron Linux. The companion tray app, if you also use it, keeps its settings there too. - In the game,
/qr collect offstops the addon from recording.
Changed your mind after deleting? questrouter config --resume turns uploads back on; new
sessions then go out under a new anonymous ID.
Troubleshooting
Each heading is the message the program prints, or the warning your system shows.
“could not find World of Warcraft automatically” or “World of Warcraft folder not found”
Tell it where the game is. Use the folder that contains _classic_beta_ (or another folder
named like _something_), and put the path in quotes:
questrouter setup --wow-path "C:\Program Files (x86)\World of Warcraft"Not sure where it is? In the Battle.net app, select the gear next to the game's Play button and choose Show in Explorer (Windows) or Show in Finder (macOS). “no game folder with WTF/ in it yet” means the game has not been started there: start it and log in to a character once.
“this program runs from a temporary folder” (Windows)
You opened questrouter.exe straight from the zip, so Windows ran it from a temporary folder
that it empties later, and a start-at-login task pointing there would stop working. Close the window,
right-click the zip, choose Extract All… into a folder you keep (for example
Documents\QuestRouter), and double-click questrouter.exe in that folder.
“Windows protected your PC” (SmartScreen)
The CLI is not code-signed yet. Signing certificates cost money every year and QuestRouter is a free project, so for now Windows cannot tell who published the file and warns about it. The warning does not mean Windows found anything wrong, but it is also the warning malware gets, so only continue when both are true:
-
You downloaded it from the official
releases page
(
github.com/Moikapy/QuestRouter), not from a mirror or a file someone sent you. - Its fingerprint matches, as in Check the download.
Then select More info, then Run anyway. On Windows 11 with Smart App Control on, Windows may block unsigned programs with no Run anyway button. Do not turn Smart App Control off for this: use the upload page until the CLI is signed.
macOS says it “cannot be opened” or “Apple could not verify” it
Same reason: it is not signed or notarized by Apple yet. After you have checked the download:
- Select Done or Cancel (not Move to Trash).
-
Open System Settings, then Privacy & Security, scroll down to the
message about
questrouterand select Open Anyway. Run the command again and confirm when macOS asks once more.
Or, in Terminal in the program's folder, remove the “downloaded from the internet” mark from that one file:
xattr -d com.apple.quarantine questrouterCheck the download (SHA256)
Every QuestRouter CLI release has a SHA256SUMS file with a fingerprint for each download.
Work out the fingerprint of the file you downloaded, in a terminal opened in your Downloads folder, and
compare it with the line for that file in SHA256SUMS. They must be identical (capital or small
letters do not matter).
Windows (PowerShell):
Get-FileHash .\questrouter-*-x86_64-pc-windows-msvc.zipmacOS:
shasum -a 256 questrouter-*-universal-apple-darwin.tar.gzLinux, with SHA256SUMS downloaded next to the file (it prints OK for a match):
sha256sum --check --ignore-missing SHA256SUMSNo match? Delete the file and download it again from the releases page. If it still does not match, do not run it, and please open an issue.
“no QuestRouter data in your WoW folder yet”, “data sharing is not turned on” or “no play sessions recorded yet”
-
no QuestRouter data in your WoW folder yet: the addon has not saved anything in this
game folder.
questrouter statusshows whether the addon is installed there. With more than one WoW folder, check that setup picked the one you play from. - data sharing is not turned on in QuestRouter yet: type
/qr collect onin the game. -
no play sessions recorded yet: play a bit, then log out or type
/reload. The game saves the file only then; while you are logged in, only what was saved at your last/reloadcan be sent.
“this computer is not registered yet”
Open the link it prints (or run questrouter register), complete the “I'm human”
check, then run questrouter upload again. Each computer does this once. With autostart on, it
waits and tries again by itself every 10 minutes.
“the QuestRouter server is busy (rate limited)”
The server takes up to 60 uploads and 20 MB an hour from each computer and from each internet connection.
A big first upload, or several computers on one connection, can reach that. Nothing is lost:
questrouter upload waits and tries again by itself (the message says how long), and so does
the background uploader.
“cannot reach the QuestRouter server”
Check your internet connection, and that a firewall or antivirus is not blocking the program. Nothing is lost: sessions that were not sent go out with the next upload.
“uploads are paused”
You paused uploads, or deleted your data. Turn them back on with questrouter config --resume.
“another QuestRouter uploader … is uploading right now”
The background uploader (or the companion tray app) is in the middle of an upload. Try again in a minute.
Something else
Run questrouter status and look at last error. If that does not help, please
open an issue
with what it shows. The installer ID is anonymous, but you can leave it out.
All commands
questrouter --help lists them, and questrouter setup --help (or any other command)
shows its options. qr-upload is the old name of the same program.
| Command | What it does |
|---|---|
questrouter setup | Finds your WoW folder, registers this computer once and shows the next steps. --wow-path "<folder>" says where the game is. |
questrouter status | WoW folder, last upload, sessions waiting, whether autostart is on, and the last error. --full shows the whole anonymous ID. |
questrouter upload | Uploads new sessions now. If the server is busy it waits and tries again; --once does not. |
questrouter watch | Stays open and uploads after every logout or /reload (Ctrl+C stops it). |
questrouter install-autostart | Runs watch at every login. --dry-run shows what it would do. |
questrouter uninstall-autostart | Undoes install-autostart. |
questrouter dry-run | Prints exactly what would be sent and sends nothing. --pending: only what upload would send; --summary: a summary only. |
questrouter delete-my-data | Deletes everything uploaded from this computer, then pauses uploads. |
questrouter register | Opens the one-time registration page again. |
questrouter scan | Lists the game folders and addon files it found. |
questrouter characters | Lists your characters that can be linked to a profile on app.questrouter.app. Their names are shown only to you, never sent. |
questrouter claim --code ABCD-EFGH --all | Links characters to your profile with the pairing code from the profiles dashboard (--char picks one). |
questrouter config --pause | Pauses uploads; --resume turns them back on, and --set-wow-path changes the saved WoW folder. |