Machine Clients
Connect servers and automation to private resources with ID and secret credentials, and assign roles for access
Machine clients are for servers and automated systems that are not tied to a person. Unlike user devices, they do not log in through a web flow. They authenticate with an ID, secret, and endpoint, then reach the private resources you grant them.
Use a machine client when a long-running process or job needs network access, for example:
- A CI/CD runner that deploys against an internal database
- A VPS that must reach a service on another site
- A subnet router that shares access with devices behind it
- A Kubernetes sidecar that brings a pod onto the network
Run machine clients with Pangolin CLI.
Create a Machine Client
- In the dashboard, go to Clients → Machines.
- Create a machine client and give it a name.
- Copy the ID, secret, and endpoint shown at creation. You need all three to start the client.
Grant Access to Private Resources
A connected machine client has no private resource access until you grant it. You can do that in two ways:
| Method | Where | When to use it |
|---|---|---|
| Direct | On the private resource under Access, assign the machine client | One-off access for a single machine |
| Roles | On the machine client under General, assign one or more roles | The machine should share the same private-resource set as a group of users |
When you assign a role to a machine client, the client gains access to every private resource that role is allowed to reach. Access is the union of direct grants and all assigned roles.
User devices cannot be assigned roles on the client itself. They inherit roles from the signed-in user.
Unlike users, a machine client is not required to keep at least one role. You can remove every role and leave only direct grants, or leave the client with no access at all.
To assign roles on a machine client:
- Open Clients → Machines → your client → General.
- Select the roles the client should belong to.
- Save.
After you change roles or resource grants, the client updates its tunnels automatically. Removing access tears down tunnels to sites that no longer have any reachable resources.
Assigning roles to machine clients is only available in Pangolin Cloud or self-hosted Enterprise Edition. Direct assignment of a machine client on a private resource does not require that feature.
Credentials
Machine client credentials are only for machine clients. Each machine client is provisioned with a unique identifier (ID), secret, and endpoint. The client uses those three values to establish a secure, encrypted connection to the server. Machine client credentials can not be shared across different clients.
User devices do not use machine client credentials. A person logs in with their Pangolin user credentials, or with an external identity provider, through the web login flow in the client. That login creates a session tied to their account. The session is not shown in the dashboard and cannot be regenerated. To disconnect a user device, have the user log out in the client.
ID
Example: ln8yqs6w85la5zg
The ID represents the client connection in the system. Every machine client has an ID.
This value is not a secret and it is okay if made publically available.
Secret
Example: tfpwoc580jf1l1glfagix0o97p8kirjogdflqg604n0tr3to
The secret represents the "password" of the client. This secret must match the secret hashed in the system for the relevant ID.
This is a secret! Only share it with trusted people and be sure to store it safely and securely.
When the client connects, it uses this secret as a first handshake with the server. The server then passes temporary session credentials back to the site before it can initiate a websocket connection. Once the websocket connection is established, ephemeral keys are used to establish tunnels using WireGuard.
Endpoint
Example: https://app.pangolin.net or https://pangolin.my-server.com
The endpoint is how the client knows which server to connect to. This is the fully qualified hostname of the Pangolin server (the URL you use to access the dashboard). For Pangolin cloud, the endpoint is https://app.pangolin.net. The client uses this endpoint ot establish a websocket connection and receive control messages from the server.
Rotating and Regenerating Credentials
Machine client credentials can be regenerated. Regenerating credentials will completely invalidate the previous ID and secret. Use this feature if you have lost the secret and need to reset the credentials, or if you wish to rotate credentials on a regular basis for extra security.
To regenerate credentials, visit Clients > Machines > Your Client > Credentials in the Pangolin admin dashboard.
Regenerate vs. Regenerate and Disconnect
Regenerate simply recreates the credentials and invalidates the old ones. The client will remain connected until you restart it with the new credentials.
Regenerate and Disconnect recreates the credentials and invalides the old ones. The client will instantly disconnect and will require you to restart it with the new credentials.
Was this page helpful?

