Controllers and agents
Status, heartbeat, version, and actions stay inside the project.
Service access for engineers
Service access to property systems, with clear boundaries for the team.
What the agent solves
The agent stays on an always-on site machine and keeps an outbound connection. The LAN is never exposed.
The user gets no subnet route and cannot replace the target.
After registration, the LAN is closed. Port policy, ACL, and role come first.
Status, heartbeat, version, and actions stay inside the project.
Working list of allowed IP:port targets. No ACL bypass.
Stable name.access.xyz.su survives external IP changes.
Who connected, what is open, and why access was denied.
Three roles, one runtime
One shd-agent binary. The mode depends on where it runs.
On-site. Outbound TLS, heartbeat, saved TCP targets only.
On the engineer's computer. One QUIC session, parallel HTTP, SSH, and TCP.
On a server. Gateway, Exit-node, and speed test by route policy.
Request path
The server authorizes. Data uses P2P; if the direct path is unavailable, relay takes over.
Overlay, public endpoint, or tunnel.
User, project, service, role, and agent revision.
Direct QUIC first. If unavailable, binary relay.
Local TCP only to the exact host:port.
HTTP, SSH, and Loxone keep their normal authentication.
Traffic moves directly between agents. Relay cannot see the data.
If NAT or a firewall blocks P2P, frames go through relay.
One QUIC session per agent · one stream per TCP connection.
Security
Project access does not open the network. You need a role, port, and ACL.
Access model
The project sets context, policy defines the service, ACL selects who passes. Revocation closes the path immediately.
Reading agents does not grant permission to change settings.
192.168.1.3:443 does not open :80 or neighboring devices.
User or group, exact service, allow/deny.
Sessions close immediately. Everything is logged.
Operating boundary
From agent installation to terminal, routes, and incident analysis.
Web UIs and APIs of saved services.
Browser SSH needs no local agent. SFTP is a separate role.
name.access.xyz.su. Application login and ACL still apply.
Native L3 100.126.0.0/16. Ordinary internet routing stays intact.
Release traffic from the server-agent IP by route policy.
Push-first: sync, update, reboot. HTTP is the fallback.
Putting into operation
Runtime first, then the exact service, access, and transport check.
Always-on machine, shd-agent, enrollment token.
Outbound TLS, heartbeat, service list.
Required targets only: 443, 875, 8123, 22.
Roles and ACL. LAN is closed by default.
Overlay or endpoint, first response, audit log.
Before connection
Short answers about runtime roles, data paths, access boundaries, terminal, and diagnostics.
It is one Go runtime with several roles. Controller-agent runs in the property network, user-agent on the engineer workstation, and server-agent on a server with dedicated modules.
No. Controller-agent creates an outbound secure connection. Users reach only saved services, not the entire local network.
After the direct QUIC attempt fails, user-agent activates relay fallback. The first request is preserved and data moves in binary frames through relay and controller-agent.
No, that is not the module model. Access is an exact service/host/port; broadcast, multicast, metadata, backend, and relay addresses are blocked, and hostnames are checked against every resolved IP.
Any explicitly saved TCP service the agent can reach locally: HTTP/HTTPS, WebSocket, SSH, Loxone, Home Assistant, and other exact ports.
Yes. Browser SSH terminal needs no local user-agent on a phone or computer. It requires terminal role, saved SSH username and credential; SFTP additionally requires sftp role.
It is a server-agent path: Routing gateway accepts a route group, relay connects it to an Exit-node, and the Exit-node releases allowed traffic to the destination from its own IP.
Remove or change the rule, port, endpoint, or role. Backend closes active sessions, updates the agent allowlist, and records the action; there is no old session to wait out.
Check controller-agent online, user-agent, route policy, target reachability from the agent, shd99, and 100.126.0.0/16. For transport inspect p2p_first_byte, last_path, p2p_sent, and relay_sent.
Yes. Review the network, controllers, target ports, service method, and required roles first. Then add the smallest service set without automatic access to the remaining LAN.
Connect the property
Tell us which controllers, devices, and operations need remote service. We will map the property network, runtime roles, exact ports, transport choice, and launch plan.
Before the first call, prepare a network sketch, controller list, service host:ports, terminal/SFTP requirements, and the organization access model.