- frps assigns random clientID without user field
- Web UI matches clients by name, so all showed offline
- Now render_frpc_ini() writes user = <client-name>
- frps dashboard API returns user field for matching
- Multi-tenant client/proxy management with Flask+SQLite
- Frps server control (start/restart/token rotation)
- Generate frpc.ini with shared server token + admin API
- Dashboard API integration (live client/proxy status)
- RBAC: admin/tenant_admin/user roles
- Audit logging for all operations
- Systemd service files included
- Requires legacy INI format (frp 0.70 TOML auth broken)