Portal is a permissionless, open hosting network that transforms your local project into a public web endpoint. See more.
Portal connects local applications to web users through a secure relay layer. Each application is assigned a subdomain within Portal, and all traffic between endpoints is end-to-end encrypted. This enables developers to publish local services globally without managing servers or cloud infrastructure.
- 🔄 Connection Relay: Connects clients behind NAT or firewalls through the Portal network.
- 🔐 End-to-End Encryption: Fully encrypted client-to-client communication, including browser sessions via a WASM-based Service Worker proxy.
- 🕊️ Permissionless Hosting: Anyone can open or choose their own Portal — no approval, no central authority.
- 🚀 High Performance: Multiplexed connections using yamux
- ⚙️ Simple Setup: Build and bootstrap apps quickly using the Portal SDK or Tunnel client.
You can run Portal to host relay services, or run App to publish your own application through portal.
Run Portal with Docker Compose:
# 1. Start services
docker compose up
# 2. Open in browser
http://localhost:4017
# 3. Domain setup (optional)
# Point DNS to this server:
# A record for portal.example.com → server IP
# A (wildcard) for *.example.com (or *.portal.example.com) → server IP
#
# Then edit docker-compose.yml environment for your domain:
PORTAL_UI_URL: https://yourservice.com
PORTAL_FRONTEND_URL: https://*.yourservice.com
BOOTSTRAP_URIS: wss://yourservice.com/relay
See portal-toys
For a detailed overview of system components and data flow, see the architecture documentation.
We welcome contributions from the community! Before getting started, please check the development guide for setup instructions and best practices.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.