Connect your Squad server.
Install the sqreader agent on your game server with one command, and finished matches publish to squadreader.com automatically. Read-only — it never writes to the game.
Before you start
- Linux host — the reader uses
/proc/<pid>/mem. No Windows or macOS. - Nothing to pre-install — the agent is a single self-contained binary. No Python, no toolchain.
- Permission to read the game process's memory — run as root, or grant
CAP_SYS_PTRACE+CAP_DAC_READ_SEARCH. - A running Squad dedicated server on the same host (offsets target Squad v10.4 / SDK v10.4.1).
Add your server
Sign in with Discord and register your server. You get your install command straight away — nobody has to approve anything first.
Running several Squad servers on one machine? Register each one separately — every server gets its own name, its own command and its own place in the archive.
Run the installer
One command, as root, on the machine running your Squad server. Step 1 gives you this line with your own token already in it.
curl -fsSL https://squadreader.com/install.sh | sudo bash -s -- <YOUR_TOKEN>That downloads the agent, checks it runs on your box, installs it to
/opt/sqreader, enrolls with your token, and starts it as a service. It also
enables a daily cleanup timer so recordings can never fill your disk.
Check it worked
Two commands. The first should say active (running), the second should show
your agent id.
systemctl status sqreader-prod
sqreader enroll --status
If something looks wrong, the agent's own log is the place to look:
journalctl -u sqreader-prod -n 50
You're live
From now on, every finished match publishes automatically — all-time stats plus the latest 15 replays per server. Your server appears on Servers and its players on Stats.
sqreader stats-backfill --recordings-dir /opt/sqreader/recordings --stats-db /opt/sqreader/stats/player_stats.db --pushcurl -fsSL https://squadreader.com/install.sh | sudo bashSeveral Squad servers on one machine?
Install one agent per server. Register each one in step 1 to get its own command — the same two clicks as the first.
You don't have to work out the ports yourself. Run the installer with no arguments and it refuses to guess: it lists what is running and prints the exact command for each server.
curl -fsSL https://squadreader.com/install.sh -o install.sh && sudo bash install.sh
Squad servers running on this machine: pid 4781 -Port=7787 pid 4546 -Port=7797 pid 5001 -Port=7807 Install one agent per server, each with its own name, HTTP port and game port — and its own enrolment token: SQREADER_INSTANCE=srv1 SQREADER_PORT=8081 \ SQREADER_SQUAD_PORT=7787 bash install.sh <TOKEN-1> SQREADER_INSTANCE=srv2 SQREADER_PORT=8082 \ SQREADER_SQUAD_PORT=7797 bash install.sh <TOKEN-2>
Run those in turn. Each instance gets its own install directory, service, cleanup timer
and stats database, so they never touch each other — and the checks in step 3 become
systemctl status sqreader-srv1,
journalctl -u sqreader-srv1 -n 50, and so on for each name.
SQREADER_SQUAD_PORT is what pins each agent to one
game..sqrx replay. Nothing live, nothing while a round is in progress. Everything is
sealed end-to-end and the key stays on your server; we cannot read it in transit. The agent only ever
reads the game's memory, and you can stop it at any time with
systemctl stop sqreader-prod.sudo sqreader doctor to re-verify them against the live binary.