Download & install
Windows ships as an MSI or an NSIS setup. macOS and Linux aren't available yet.
Installer (Windows)
Grab the latest release from GitHub Releases and run either installer:
BADWOLF.Socket.Server_1.1.0_x64_en-US.msi
BADWOLF.Socket.Server_1.1.0_x64-setup.exe
A single ~6 MB app. No .NET, no Node, nothing else to install.
Verify the download against SHA256SUMS.txt (Get-FileHash <file>). 1.1.0 is not code-signed yet, so SmartScreen may warn: choose More info → Run anyway.
Test client (optional)
The release also ships probe.py, a tiny standard-library Python client for poking the server:
python probe.py # TCP command tour
python probe.py --udp --port 9100
python probe.py --hold 30 # watch a feed
First run in four steps
Pick a scenario
Open the CONFIG tab, choose a preset from the dropdown (start with ECHO CHAMBER or IOT SENSOR) and hit LOAD.
Start the listener
Hit START. The status pill goes ONLINE and the bind address shows in the footer.
Connect a client
ncat 127.0.0.1 8888, or the release's test client: python probe.py. UDP: add --udp.
Watch & script
Every message appears in the stream. Add rules in the RULES tab, drive a feed, record a session, or KICK a client — all live.
Talking to the endpoint
Messages are framed per config (newline by default). Unmatched input is echoed or ignored per the reply mode; rules and commands run first. When commands are enabled:
| Command | Effect |
|---|---|
/ping | {"type":"pong","ts":"…"} |
/stats | full metrics snapshot |
/users | connected client list |
/whoami | your client id, address and name |
/nick <name> | set a display name |
/auth <token> [name] | authenticate when REQUIRE.AUTH is on |
/quit | graceful disconnect |
▶ The probe client
probe.py (attached to each release) runs a command tour with python probe.py; --send "GET /x" fires one line; --hold 30 connects and just listens (good for feeds); --udp --port 9100 switches transport. Stdlib only.
Rules & templates
A rule matches a message and sends a templated reply. First enabled match wins; edits apply live.
Match modes
any · exact · prefix · contains · regex (with capture groups) · hex-prefix (match raw bytes). Reply in text or hex; add a delay, target the sender or broadcast, and optionally hang up after.
Template placeholders
{client_id8} {client_addr} {server_name} {seq} {ts} {ts_unix} {input} {len} {match} {g1}…{g9} {rand} {rand:a-b} {randf:a-b} {choice:a|b|c}.
Example: a regex rule ^GET\s+(\S+) replying {"status":200,"path":"{g1}","seq":{seq}} turns the endpoint into a tiny line-API.
Settings & persistence
Config is saved automatically to your app config directory and reloaded on launch:
%APPDATA%\com.badwolf.socket-server\config.json
Bind address, port, transport and framing take effect on the next START; rules, feeds, reply mode, auth token and greeting apply live while running. The path is shown at the bottom of the CONFIG tab.
Stuck? The whole thing is one window and one binary — START, connect, watch.