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

  1. Download it and unpack it into a folder you keep.
  2. Run questrouter setup. It finds your WoW folder and opens a one-time “I'm human” check in your browser.
  3. In the game, type /qr collect on once.
  4. 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.

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

  1. Download questrouter-<version>-x86_64-pc-windows-msvc.zip from the newest QuestRouter CLI release. You can check the download before you open it.
  2. Make a folder to keep it in for good, for example QuestRouter in your user folder (C:\Users\<you>\QuestRouter). Right-click the zip, choose Extract All… and extract it into that folder. You get questrouter.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.
  3. Double-click questrouter.exe in 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.
  4. 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

  1. Download questrouter-<version>-universal-apple-darwin.tar.gz from the newest QuestRouter CLI release. The one file works on Apple silicon and Intel Macs, macOS 11 or later.
  2. Double-click it in your Downloads folder. Finder unpacks a folder with the questrouter program in it. Move questrouter to a folder you keep, for example a new QuestRouter folder in your home folder.
  3. Open Terminal (press Command-Space and type Terminal). Type cd and a space, drag the QuestRouter folder onto the Terminal window, and press Return.
  4. Run the line below. A program in the current folder starts with ./, so type ./questrouter wherever this page says questrouter.
    ./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/questrouter

Linux

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.

  1. Download questrouter-<version>-x86_64-unknown-linux-gnu.tar.gz from the newest QuestRouter CLI release.
  2. 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).

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:

  1. 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 /Applications and 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 as Interface\AddOns.
  2. Checks the addon: whether QuestRouter is installed and how many play sessions it has recorded.
  3. Registers this computer, once. It opens questrouter.app/register in 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, run questrouter register.
What it looks like (Windows, first run)
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 status
A working setup (Windows)
QuestRouter 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

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.

SystemWhat it sets upWhere 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

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.

  1. If autostart is on, stop it first, so the running copy lets go of its files: questrouter uninstall-autostart.
  2. Download the new release and replace the old files in the same folder (on Windows, both questrouter.exe and questrouterw.exe). With a package manager, once listed: winget update Moikapy.QuestRouter.CLI, scoop update questrouter, or run brew install moikapy/tap/questrouter again.
  3. Turn autostart back on: questrouter install-autostart (on Windows you can instead double-click the new questrouter.exe and 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

  1. Turn off start at login: questrouter uninstall-autostart.
  2. Optional: delete everything you uploaded with questrouter delete-my-data. It asks you to type delete, 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.
  3. Delete the program files. With a package manager: winget uninstall Moikapy.QuestRouter.CLI, scoop uninstall questrouter or brew uninstall questrouter.
  4. Delete its settings folder: %APPDATA%\QuestRouter on Windows, ~/Library/Application Support/app.QuestRouter.QuestRouter and ~/Library/Logs/QuestRouter on macOS, ~/.config/questrouter and ~/.local/share/questrouter on Linux. The companion tray app, if you also use it, keeps its settings there too.
  5. In the game, /qr collect off stops 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:

  1. You downloaded it from the official releases page (github.com/Moikapy/QuestRouter), not from a mirror or a file someone sent you.
  2. 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:

  1. Select Done or Cancel (not Move to Trash).
  2. Open System Settings, then Privacy & Security, scroll down to the message about questrouter and 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 questrouter

Check 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.zip

macOS:

shasum -a 256 questrouter-*-universal-apple-darwin.tar.gz

Linux, with SHA256SUMS downloaded next to the file (it prints OK for a match):

sha256sum --check --ignore-missing SHA256SUMS

No 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 status shows 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 on in 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 /reload can 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.

CommandWhat it does
questrouter setupFinds your WoW folder, registers this computer once and shows the next steps. --wow-path "<folder>" says where the game is.
questrouter statusWoW folder, last upload, sessions waiting, whether autostart is on, and the last error. --full shows the whole anonymous ID.
questrouter uploadUploads new sessions now. If the server is busy it waits and tries again; --once does not.
questrouter watchStays open and uploads after every logout or /reload (Ctrl+C stops it).
questrouter install-autostartRuns watch at every login. --dry-run shows what it would do.
questrouter uninstall-autostartUndoes install-autostart.
questrouter dry-runPrints exactly what would be sent and sends nothing. --pending: only what upload would send; --summary: a summary only.
questrouter delete-my-dataDeletes everything uploaded from this computer, then pauses uploads.
questrouter registerOpens the one-time registration page again.
questrouter scanLists the game folders and addon files it found.
questrouter charactersLists 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 --allLinks characters to your profile with the pairing code from the profiles dashboard (--char picks one).
questrouter config --pausePauses uploads; --resume turns them back on, and --set-wow-path changes the saved WoW folder.