Deployment
Requirements & specifications
Not a cloud service#
Pinman is installed on each machine it tracks. There is no cloud backend:
- All data stays on the machine. Each installation keeps its own local
database and configuration under
C:\ProgramData\Pinman. Nothing is uploaded anywhere. - The web UI is served by the machine itself. Your browser — on the
machine, or on any phone or laptop that can reach it over your network —
connects directly to that machine at
http://<machine>:7466. There is no account and no hosted service in between. - Multiple machines are tracked independently. Install Pinman on each one; the browser UI can hold connections to several machines and switch between them.
System requirements#
| Operating system | Windows 10 or 11 (64-bit) |
| Install | Standard installer; requires administrator approval |
| Data location | C:\ProgramData\Pinman (projects, database, configuration) |
| Browser client | Any modern browser on the machine or on the same network — nothing to install on phones or laptops |
| Internet | Not required. Pinman is fully offline-capable; internet is only needed to download the installer and kits |
Services#
A Pinman installation runs a small set of local services, supervised by the Pinman tray application (the tray icon). The tray starts them at login (when autostart is enabled) and restarts them if they stop.
| Service | Role | When it runs |
|---|---|---|
| API server | REST API, web UI, and the built-in scheduler | Whenever Pinman is in use from a browser, the REST API, or a remote CLI |
| Audio | System audio control (volume, mute) | Always started by the tray |
| Overlay | On-screen messages, dimming, and slideshows on the machine's displays | Only when Operator Mode is enabled |
| Inputs | Cabinet buttons and key input | Only when Operator Mode is enabled |
Notes:
- The CLI needs no services.
pinmancommands work directly against the local data — you can use the CLI with everything else stopped. (The exception ispinman service ...itself, which talks to the tray.) - The scheduler is not a separate service. Saved and scheduled Actions run inside the API server, so they run whenever the API server runs.
Network ports#
Pinman uses one network port: TCP 7466, where the API server serves the API and web UI over plain HTTP (see Networking, HTTPS & IT for the security model and HTTPS options). The installer can optionally create a Windows Firewall rule for it so other devices on your network can connect.
The other services also listen on local ports — 7467 (overlay), 7468 (audio),
7469 (inputs) and 7470 (tray) — but these are bound to 127.0.0.1 and are
never reachable from the network. They need no firewall rules and nothing
opened; they only matter if another program on the machine happens to use the
same port. Only port 7466 ever needs to be open.
Moving Pinman to a different port#
Pinman needs all five of those ports, so a clash with any of them — not just 7466 — is a reason to move. Change them with one command:
pinman system port 7500
That sets the base port. The API moves to it and the other services move with it, keeping the same order (7501 overlay, 7502 audio, and so on), so you only ever pick one number — but the whole block moves together, so pick a base with five free ports above it. The setting applies to the whole machine, not to an individual project.
Run pinman system port with no number to see every port and whether it is
free, in use by Pinman, or taken by another program — that is the quickest way
to confirm a clash. Pinman also checks the ports when it starts and names any
that are unavailable rather than just failing to come up.
Two things to know: restart Pinman for the new port to take effect, and
re-create the firewall rule, which is tied to the old port — pinman system port prints the exact command. To see the current ports at any time, run
pinman system port with no number.
For discovery, the API server also advertises itself on the local network via
mDNS (_pinman._tcp), which is how the browser UI finds other Pinman machines
automatically.

