Skip to content

Remote Access

Identity-based access control for machines you have deployed. Grant each person, server or pipeline access to one device, a group, or nothing at all.

Summary

Identity-based access control for machines you have already deployed. Group devices into a fleet, then grant each caller access to one device, a name prefix, or the whole fleet. Available on the Pro and Enterprise plans, see pricing.

How Remote Access works#

Remote Access gives your team identity-based access to devices, and to the services running on them, wherever they sit behind NAT or a firewall. No public IP address, no port forwarding, no inbound firewall rule.

A fleet is where you manage those devices, and it is private by default. Access grants control who reaches which devices, and the credential each caller holds controls how long that access lasts.

It runs on mutual TLS (mTLS). Every caller presents a client certificate, the certificate carries a verified identity, and the connection is refused in the TLS handshake unless a grant covers the device being reached.

Set up Remote Access#

Step 1: Create a fleet#

Create the fleet in the dashboard, then copy the command it hands back and run it on each machine. Every machine that connects joins the fleet as a device with a public address of its own.

The fleet is where you manage all of them together: what is online, what each one is serving, what it is doing right now, and who is allowed to reach it. A fleet carries HTTP and TCP, so it covers web services, APIs, SSH, databases, MQTT and anything else built on TCP.

Create the fleet, copy the command it builds, and each machine appears on the Devices tab as it connects.

Detailed guide: Fleets

Step 2: Control who can reach each device#

A fleet is private by default. Your devices are online and reachable by nobody until you say who gets in. On the fleet's Access tab you choose the identity type, choose the subject, then choose the devices it reaches. Grants union together and there are no deny rules, they name an identity instead of a certificate so they survive every renewal, and a change applies to connections that are already open.

Give access: choose the identity type, choose the subject, then choose which devices it reaches.

Every grant answers two questions, and the panel asks them in that order. Who is the subject, and it comes in three kinds.

SubjectCoversUse it for
RoleOwners, Admins or DevelopersGiving a whole group access at once, such as every Developer
MemberIndividual member on teamAccess for an individual, on top of whatever their role already gives them
MachineIndividual machine identityServers, monitoring collectors, CI/CD jobs and downloaded certificates

What it reaches is the second question. Devices are named directly, either one at a time or by a prefix that covers a whole series.

TargetReaches
*Every device on the fleet, now and later
device*Every device whose name starts with device, now and later
device1Exactly that device

A trailing star is the only wildcard, and it covers devices you deploy afterwards. Anything the grant does not name is refused.

Detailed guide: Grants and Access

Step 3: Connect#

Run localport access on the machine that needs to reach the device. It opens a local port and forwards it, so the remote service is available at localhost on the port you chose. Connect your tools to that port exactly as you would to anything running on the machine itself.

Signing in issues a certificate to the machine you run the command on. It is valid for 8 hours, and you sign in again once it expires.

localport login
localport access https://device1-example.eu.localport.dev -p 3001

The first command prints a code, you approve it in a browser, and the certificate is stored on that machine. The second forwards the device to localhost:3001, so your browser or client connects there. The CLI reference covers listing, renewing and removing stored credentials.

Connect as yourself. The sheet takes the code localport login printed.

Identities and credentials#

Every caller authenticates with a client certificate. How it obtains one depends on what the caller is.

IdentityObtains a certificate withDetailed guide
Member, a person on your teamlocalport login. Short-lived, re-issued by signing in againMember Access
Machine, a long-running server, gateway or applianceA single-use setup key, after which the agent renews itselfSetup Keys
CI/CD pipeline, an ephemeral build or deploy jobIts own platform's OIDC token. No secret is stored anywhereCI/CD with OIDC
Application or appliance that cannot run the agentA certificate file issued from the dashboard, PEM or PKCS#12Certificates

We hold no private keys. Every issuance path is a certificate request: the key pair is generated where the certificate will be used and the private half never leaves it. The dashboard download is no exception, since the browser generates that key and uploads only the request.

Access logging#

Every connection to a device is recorded, allowed or refused. Each entry names the identity that connected, the device it reached, the address it came from, how long it lasted and how much data crossed. A refusal records why it was refused.

Traffic is never inspected. Request paths, headers and bodies are not captured anywhere, so you get a full audit trail of who reached what, and no copy of what they sent.

The access log: who reached which device, from where, and how it went.

Detailed guide: Access Log

Certificate authorities#

Localport runs a managed certificate authority for your team, created with your first fleet. It signs every credential above, and it needs no configuration.

You can also bring your own certificate authority. You register the public chain, Localport verifies callers against it, and your signing key never reaches us. A registered authority carries three requirements:

  • A trust domain it speaks for, so its identities are namespaced as acme.corp/build-agent and cannot collide with names in your team.
  • A CRL URL over HTTPS, polled every 15 minutes, so your revocations take effect here.
  • An identity source, either a SPIFFE URI SAN or the certificate's common name.

A registered authority verifies but cannot issue, since we hold no key for it. Teams commonly run both.

Detailed guide: Certificate Authorities

Revoking access#

Each of these closes the connections it affects immediately, not at the end of the session and not on the next attempt.

ActionScope
Narrow or remove a grantThat subject, on that fleet
Revoke a certificateThat certificate, on every fleet in the team
Remove a deviceThat device, and its name becomes free to reuse
Remove a certificate authorityEverything that chained to it
Remove a team memberTheir individual grants, their sign-in certificates and their sessions

Narrowing counts as revoking. Tightening a grant from device* to device1 cuts every other device it used to cover.


Frequently asked questions#

What is mutual TLS (mTLS)?

Mutual TLS is ordinary TLS with the identity check running in both directions. In a normal HTTPS connection the server proves who it is and the client stays anonymous. With mutual TLS the client presents a certificate as well, and the server refuses the connection when it does not recognise it. Every Localport fleet works this way.

Do I need to change my application?

No. The Localport agent runs beside your service and forwards a local port to it. Your application sees an ordinary local connection and never handles a certificate itself. Every check has already run by the time a byte reaches it.

Does holding a certificate mean someone has access?

No. A certificate proves identity and nothing else. Until a grant on a fleet names that identity, it reaches nothing there. Grants are written per fleet, so a certificate that reaches one fleet reaches another only once you say so.

Can I protect a single service without running a whole fleet?

Yes. Create a fleet and connect one device to it. A fleet of one is supported and behaves like any other, and you can add a second device later without changing anything a caller already holds.

What happens to connections that are already open when I remove access?

They close immediately. Narrowing a grant, revoking a certificate, removing a device and removing a certificate authority all cut the sessions they affect, on every protocol. Nothing is left running until it finishes on its own.

Can I use my own certificate authority?

Yes. Register the public chain and Localport verifies every caller against it. Your signing key never reaches us, and you keep issuing device certificates with your own tooling. A registered authority also supplies a revocation list URL, which Localport polls so your revocations take effect here too. See Certificate Authorities.

Do the machines need a static IP address, a port forward or a VPN?

No. The agent makes an outbound connection to Localport and traffic arrives back down it. A machine behind NAT, behind carrier-grade NAT, or on a network whose firewall you do not control works the same as one with a public address.

Which protocols can a fleet carry?

HTTP and TCP. That covers web services, APIs, SSH, Postgres and other databases, MQTT brokers, VNC and anything else that speaks TCP. A service holding its own TLS certificate is registered as tcp, and its own TLS runs end to end inside the connection.

Can someone outside my team be given access?

Yes, through their organisation's own certificate authority. Register it, and the identities it signs resolve inside a namespace of their own, so a partner's corp.example/build-agent can never collide with a name in your team. You write grants for those identities exactly as you would for your own.

Who can change access?

Writing or removing a grant needs the admin or owner role. Members with the developer role can see who has access without changing it. Certificates, setup keys and the access log also need admin or owner.