Files
meezi/agent
soroush.asadi 7d5af0c81b
CI/CD / CI · API (dotnet build + test) (push) Successful in 39s
CI/CD / CI · Admin API (dotnet build) (push) Successful in 33s
CI/CD / CI · Dashboard (tsc) (push) Successful in 1m6s
CI/CD / CI · Admin Web (tsc) (push) Successful in 39s
CI/CD / CI · Website (tsc) (push) Successful in 45s
CI/CD / CI · Koja (tsc) (push) Successful in 50s
CI/CD / Deploy · all services (push) Successful in 29s
feat(print): Windows print agent — the cloud↔LAN bridge (Phase 3)
A standalone net10.0-windows console app (agent/Meezi.PrintAgent) installed on the
café cash PC. It pairs with a one-time code (POST /print-agent/claim), stores the
token in %APPDATA%, holds a SignalR connection to /hubs/print-agent (retries
forever, re-reports on reconnect), discovers installed printers via WMI (USB +
network, classified), and prints jobs it receives by writing raw ESC/POS bytes —
winspool RAW passthrough for installed printers, raw TCP for ip:port devices —
acking each job back. Not in the API solution or CI (own net10.0-windows build);
see agent/README.md for build/publish/pair. Builds clean; startup + pairing flow
smoke-tested.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 12:16:28 +03:30
..

Meezi Print Agent (پرینت‌سرور میزی)

A tiny Windows background app that lets the cloud-hosted Meezi reach printers on the café's local network (USB or Wi-Fi/Ethernet). The cloud can't open a connection to a 192.168.x.x or USB printer directly — this agent runs on the cash PC (which is on that network), connects outward to Meezi over SignalR, reports the printers it can see, and prints the jobs the cloud sends it.

Cloud API ──SignalR(out)──► Print Agent (cash PC) ──► USB / LAN printers

How it works

  1. In the dashboard: Settings → Printers → Add print server → you get a pairing code.
  2. Run the agent on the cash PC, enter the code once. It saves a token to %APPDATA%\MeeziPrintAgent\config.json and connects.
  3. It reports every printer installed on that PC. Back in the dashboard you map receipt / kitchen / bar to a printer from the dropdown — no IP typing.
  4. When Meezi prints, the bytes (ESC/POS) are relayed to the agent, which writes them raw to the chosen printer (winspool for installed printers, raw TCP for ip:port devices).

Build & run (dev)

Requires the .NET 10 SDK on Windows.

# restore via the Nexus mirror (nuget.org is blocked on this network)
dotnet restore agent/Meezi.PrintAgent/Meezi.PrintAgent.csproj -s https://mirror.soroushasadi.com/repository/nuget-group/
dotnet run --project agent/Meezi.PrintAgent          # first run prompts to pair
dotnet run --project agent/Meezi.PrintAgent -- pair  # re-pair later

Publish a single .exe for cafés

dotnet publish agent/Meezi.PrintAgent -c Release -r win-x64 \
  -p:PublishSingleFile=true --self-contained true -o dist/agent
# → dist/agent/MeeziPrintAgent.exe

Notes / roadmap

  • Not part of the API solution or CI — it targets net10.0-windows and builds on its own.
  • Console MVP today. Next: system-tray UI, run-at-login (Task Scheduler / service), auto-update, and an optional LAN scan for raw ip:9100 printers that aren't installed in Windows.
  • The token is bearer-equivalent — keep config.json on a trusted machine. Revoke from the dashboard if a PC is lost.