Exposr
Expose local services to the internet through a secure reverse tunnel.
Exposr is a reverse tunneling tool that allows developers to expose services running on their local machine through a publicly accessible relay server. It uses a persistent control connection and creates dedicated data tunnels for each incoming public connection.
What is Exposr?
Exposr is a lightweight reverse TCP tunnel built with Python and asyncio. It lets you take a service running on 127.0.0.1 and make it accessible from the public internet through a relay server.
With a single command, your local web server, API, game server, or any TCP service becomes reachable at a public IP address and port.
exposr expose 3000How it works
- Your application runs locally (e.g.,
127.0.0.1:3000) - The Exposr client creates an outbound connection to the relay server
- The client authenticates with an agent token and registers a public port
- When someone connects to the public port, the server notifies the client
- A dedicated data connection is created for each public connection
- Traffic flows bidirectionally between the public user and your local service
Architecture
Internet User
SERVER_IP:PUBLIC_PORT
Exposr Server
Control Port: 9000
Data Port: 9001
Public Ports: 25565, 20000–30000
Persistent outbound connection
Exposr Client
127.0.0.1:LOCAL_PORT
Local Service
Use cases
- Share a local development server with teammates or clients
- Test webhooks from external services against a local server
- Expose a local game server (e.g., Minecraft on port 25565)
- Demo a local application without deploying
- Access a service behind NAT or a firewall
Current status
Exposr v0.4 supports:
- Reverse TCP tunneling
- Dynamic public port registration with automatic fallback
- Agent token authentication on the control channel
- Multiple simultaneous public connections
- Dedicated data tunnel per connection
- Automatic agent reconnection
- Command-line interface