Skip to main content
Gateway

Every service.
One gateway.

An all-in-one cloud networking platform that secures, transforms, and routes traffic to all your services no matter where they run.

Trusted by teams across the globe

  • Calendly
  • Cyera
  • Databricks
  • GitHub
  • Grafana
  • Harvey
  • Hugging Face
  • Mercor
  • Microsoft
  • Okta
  • Open AI
  • Perplexity
  • Ramp
  • Schneider Electric
  • Twilio
  • Vercel
  • Windsurf
  • Zoom

Try ngrok by getting your service online. Right now.

$ brew install ngrok
$ scoop install ngrok
$ docker pull ngrok/ngrok
Read https://ngrok.com/agent-setup/prompt.md and follow it to get my app online with ngrok.

From localhost to live in prod.

Instead of a hodgepodge of nginx, NLBs, VPNs, model routers, and Cloudflare, solve every networking problem with one gateway.

Don’t want services addressable on the public internet?

Reach APIs, databases, and devices in private networks straight from your own cloud, cluster, or laptop—a VPN alternative with no firewall rules and no flat networks.

You may also need to…

More problems we solve

Okay, but how does it work?

Connect anything with Endpoints, Traffic Policy, and Secure Tunnels.

Endpoints & Traffic Policy

Route, transform, and authenticate your traffic.

No more cryptic nginx configs or Lua plugins. Everything is a URL with traffic rules you attach. Compose them together and offload processing to ngrok’s cloud gateway.

Fig. 1 – Traffic flows through
Endpoints & Traffic Policy

Take action at any phase in the request lifecycle.

Traffic Policy is an expressive CEL-based rules system. When a request hits different phases of its lifecycle, ngrok executes each rule sequentially.

Fig. 2 – Traffic policy examples
on_http_request:  # send requests with the /api path prefix to the api service  - expressions:      # conditions are CEL expressions, see https://cel.dev      - req.url.path.startsWith('/api')    actions:      - type: forward-internal        config:          url: https://api.internal   # route dynamically based on a header using CEL interpolation  - actions:      - type: forward-internal        config:          url: https://${req.headers('X-Custom-Header')}.internal
on_http_request:  # redirects users to Google to log-in  - actions:      - type: oauth        config:          provider: google # or github, gitlab, microsoft, etc          client_id: $YOUR_GOOGLE_CLIENT_ID          # no cleartext secrets in your policy          client_secret: ${secrets.get('auth-vault', 'google-secret')}        scopes:          - https://www.googleapis.com/auth/userinfo.email   # allow logins *only* from your-domain.com  - expressions:      - "!actions.ngrok.oauth.identity.email.endsWith('@your-domain.com')"    actions:      - type: deny
on_tcp_connect:  # block anonymous proxies  - expressions:      - 'proxy.anonymous' in conn.client_ip.categories    actions:      - type: deny   # block IPs on Firehol blocklists  - expressions:      - 'blocklist.org.firehol.level_1' in conn.client_ip.categories    actions:      - type: deny   # block IPs by their geography  - expressions:      - conn.client_ip.geo.location.country_code in ['ABC', 'DEF', 'XYZ']    actions:      - type: deny
on_http_request:  - actions:      # block sus requests with the OWASP Core Rule Set      - type: owasp-crs-request        config:          on_error: halt       # stop floods of traffic from overloading your services      - type: rate-limit        config:          name: Allow only 100 requests/minute          algorithm: sliding_window          capacity: 100          rate: 60s          bucket_key:            - conn.client_ip

Even more ways to control and transform your traffic

Explore actions
Mutual TLS
OAuth + OIDC
Basic Auth
URL rewrite + redirects
Modify headers
Custom response
IP restrictions
Webhook verification

Stop cobbling your infrastructure together.

Security, performance, and resiliency built in by default.

Secure Tunnels

Connect to services anywhere, no firewall changes required.

Install a lightweight agent to deliver traffic to any service through a secure tunnel.

Fig. 3 – Anatomy of a secure tunnel
Environment Agnostic

Run your services in any environment

Because your services are connected to ngrok with secure tunnels, they can be deployed anywhere. If it listens on a port and is connected to the internet, ngrok can deliver traffic to it.

ngrok secure tunnels connecting services across cloud, on-premise, and edge environments
Zero Open Ports

Close every single inbound port

Attackers can’t skirt a secure tunnel to scan or attack your origin servers, which means you whittle down your surface area and remove an entire class of attack vectors.

Zero open ports: ngrok secure tunnel blocking inbound port scanning and attack vectors
Least Privileged Access

Precise network access, not risky customer VPNs

Drop the ngrok agent into your customers’ networks and tightly scope your access to just the APIs and databases you need. Not their whole subnet.

ngrok agent providing least-privileged API and database access to customer networks without a VPN
Native SDKs

import "ngrok"

Don’t want to package and babysit an agent sidecar? Embed secure tunnels directly into your code with a native agent SDK.

ngrok agent SDK embedded natively in Python, Go, Java, and Node.js application code
More about secure tunnels

Join millions of developers routing billions of requests every day.

Scott Motte
@motdotla

ngrok is so effing amazing

Ihor Leshko
Director of Engineering

ngrok opened the door for Databricks to rapidly onboard big enterprise customers with comprehensive security much less operational complexity.

Databricks
Kevin Simper
@kevinsimper

I wouldn't know how to work without ngrok.

Lyzi Diamond
@lyzidiamond

OMG life changer. I can't imagine how I lived without ngrok.

Wesley Gorman
Senior Director, Engineering, Zendesk

ngrok has been super user friendly, works seamlessly, and never gets in our way. Today, our engineers spend less time troubleshooting proxy issues and more time building.

Zendesk
Brian Ketelsen
@bketelsen

Just used ngrok for the first time to show off a new GopherCon web layout. Wow, that's awesome.

Cassidy Williams
@cassidoo

ngrok saves me so much time during development. What a tool.

Austin Cottrell
Cloud Infrastructure Engineer

ngrok continues to wow us with great APIs and automation. Establishing secure remote connectivity with our customer's environments via REST APIs is fast and safe ... and amazing!

Copado
Steve Kinney
@stevekinney

ngrok makes the hard parts of networking feel effortless.

We could keep going, too

Gateway questions

Didn't see yours? Ask it below.

Answers come from ngrok.com and the ngrok docs, and can be wrong. Check the linked pages before you rely on one.

You read the whole page. What are you waiting for?

No upfront costs. No contact sales. Pay only for what you use.