// install · run · speak to it

Documentation

From download to your first scripted reply in a couple of minutes.

Get it

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

▾ Download from GitHub

Quick start

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.

Client protocol

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:

CommandEffect
/ping{"type":"pong","ts":"…"}
/statsfull metrics snapshot
/usersconnected client list
/whoamiyour client id, address and name
/nick <name>set a display name
/auth <token> [name]authenticate when REQUIRE.AUTH is on
/quitgraceful 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.

Auto-responder

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.

Configuration

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.