Hub Agent — BusinessMade · Bridge USB devices to the cloud
Open-source agent · MIT

Bridge any device to the cloud. Bring your own box.

Hub Agent runs on any Linux, macOS, or Windows machine in your venue and connects local USB hardware — receipt printers, cash drawers, scanners, scales — to BusinessMade over a single WebSocket. No proprietary box. No license per device. Plug in, install, done.

80MB RAM idle Auto-reconnect Survives reboots
~/install · linux
# single-line install on any debian/ubuntu/arm box
$ curl -sSL https://appmint.io/hub | sudo bash
[ok]node 20.10installed via apt
[ok]agent/opt/appmint-hub
[ok]systemdappmint-hub.service · enabled
[ok]wizardhub name · api key · org id
[ok]connectedwss://appengine · 2 devices online
ARCHITECTURE

One WebSocket. Four hops. That's the entire model.

The agent keeps a long-lived WebSocket to BusinessMade Cloud. Server forwards device commands; agent executes them locally. Scanner reads and drawer events flow back up the same socket and fan out to every subscribed UI.

Tablet UI
your iPad / phone
https →
BusinessMade
cloud
wss →
Hub Agent
your box
usb →
Hardware
printer · drawer · scanner
BRING YOUR OWN BOX

Anything from the last decade with USB and a network port.

Hub Agent is a single Node process. 80MB RAM idle, no disk hot path. 2GB RAM and 8GB free disk is plenty. Don't overthink it.

Class
Examples
Notes
Mini PCrecommended
Beelink S12 (N95/N100), Intel NUC, generic N100 sticks ($150–280)
NVMe / eMMC instead of SD card. Real PSU. Fanned. Dual-NIC. Runs forever.
Existing laptop / desktopcheapest path
Any Win 10+, macOS 12+, or Ubuntu 20+ box you already own
If it boots and has a USB port, you're done. No purchase required.
Single-boardcheap
Raspberry Pi 4/5, Orange Pi 5, Rock Pi, Banana Pi
SD cards die from constant writes. Use industrial cards or boot off USB SSD.
Whateverliterally
Old back-office tower, repurposed thin client, NAS with Docker
Linux is Linux. If node --version works, the agent works.

We don't sell boxes. You pick the hardware that fits your venue — we run on it.

INSTALL

One command. Auto-starts on boot.

Pick your OS. The installer bootstraps Node, drops the agent under a standard install dir, registers as a service, runs the setup wizard, and starts.

# debian / ubuntu / armbian — including Pi & Orange Pi $ curl -sSL https://appmint.io/hub | sudo bash # installs to: /opt/appmint-hub # config: /etc/appmint-hub/config.json # systemd unit: appmint-hub.service # logs: $ journalctl -u appmint-hub -f
# macOS — installs as a LaunchDaemon (auto-starts at boot) $ sudo ./scripts/install-mac.sh # installs to: /opt/appmint-hub # LaunchDaemon: io.appmint.hub # logs: $ tail -f /var/log/appmint-hub.out.log # requires Homebrew for Node (skipped if Node 20+ present)
# Windows — right-click install.bat → Run as administrator # or in elevated PowerShell: PS> powershell -ExecutionPolicy Bypass -File scripts\install-windows.ps1 # installs to: %ProgramFiles%\AppmintHub # config: %ProgramData%\AppmintHub\config.json # service: AppmintHub # status: PS> Get-Service AppmintHub
CAPABILITIES

What it talks to today.

More on the roadmap. The wire protocol is open — add a handler and the cloud picks it up.

print READY ESC/POS via node-thermal-printer · USB or network · 58mm / 80mm / 112mm
drawer READY Kicked through printer's RJ11/12 port · 12–24V solenoid pulse
scanner READY HID keyboard mode · reads /dev/hidraw* · barcode + QR
weigh TODO Q3 USB scale support — NCI protocol · target Q3 '26
display TODO Customer-facing pole displays · serial + USB
kds TODO Kitchen display push to dedicated hardware
charge SERVER Stripe Terminal integrates direct from server · no local agent needed
page SERVER SMS-as-pager runs server-side via Twilio · no local hardware
CONFIG

One JSON file. That's it.

Each endpoint is a real piece of hardware on the box. Capabilities tell the cloud what the device can do. Generate API keys from Operations → Devices → Hubs in the app.

// /etc/appmint-hub/config.json { "hubName": "bar-back-office", "apiKey": "hub_live_…", "serverUrl": "wss://appengine.appmint.io", "endpoints": [ { "name": "kitchen-printer", "kind": "printer", "capabilities": ["print", "drawer"], "config": { "interface": "printer:/dev/usb/lp0", "driver": "epson", "width": 48 } }, { "name": "bar-scanner", "kind": "scanner", "capabilities": [], "config": { "path": "/dev/hidraw0" } } ] }
FAQ

Straight answers.

Do I have to buy a special box?+

No. The agent runs on any Linux, macOS, or Windows machine you already own — laptop, mini PC, Raspberry Pi, old desktop, whatever. We don't sell boxes.

What if my hub loses internet?+

Tablets continue to operate on cached menu and customer data. Once connectivity returns, the agent reconnects automatically and orders sync back up. Receipt printing pauses until reconnect (we don't print orphan tickets the cloud doesn't know about).

How do I open the cash drawer without a printer?+

You need a 12–24V trigger somewhere. Either go through a thermal printer's RJ11/12 port (the normal path) or use a powered USB cash-drawer trigger box. The drawer solenoid needs ~1A — neither USB-only nor GPIO will fire it.

Can one hub serve multiple iPads?+

Yes. The hub is venue-scoped, not device-scoped. Any number of tablets in that venue can send print jobs and receive scanner reads — fan-out happens server-side.

Is the agent open source?+

Yes, MIT licensed. Source is on GitHub. We use it ourselves — if a handler is missing, you can write one and submit a PR.

What about security?+

The agent only outbounds over WSS. No inbound port required. API keys are issued per-hub, scoped to one org, can be regenerated/revoked from the dashboard. The cleartext key is shown once at creation — we only store the hash.

Plug it in. Walk away.

Pair a hub in 60 seconds. Print orders, open drawers, scan barcodes — from the cloud.

Hub Agent — BusinessMade · Bridge USB devices to the cloud | BusinessMade