April 6, 2023
min read

Product Updates: ngrok-go, ngrok-rs, OAuth & Webhooks for free

Frederico Hakamine


🎉 Product Updates

ngrok-go - Ingress to your Go apps as a net.Listener

ngrok-go is our idiomatic Go package for embedding secure ingress directly into your Go apps. If you’ve used ngrok agent before, you can think of ngrok-go as the agent packaged as a Go library. ngrok-go is open source on github and API reference documentation is available on go.pkg.dev.

ngrok-go lets you serve Go apps on the internet in a single line of code without requiring VPC routing, load balancers, certificates, or even ports! Applications using ngrok-go listen on ngrok’s global ingress network through the same interface (net.Listener) any Go app would expect if it listened on a local port by calling net.Listen(), making it an easy drop in to any application using go's native net and net/http packages.

There’s a complete getting started guide in the docs. Check out how easy it is to listen on ngrok’s global network with a single line of code. No ports, no separate agent required.

l, err := ngrok.Listen(ctx, config.HTTPEndpoint( config.WithDomain("your-name.ngrok.app"), config.WithOAuth("github"), ), ngrok.WithAuthtokenFromEnv(), )

Learn More >

ngrok-rs - Embed ingress directly into your Rust apps

ngrok-rs is our native and idiomatic Rust crate for adding secure ingress directly into your Rust apps 🦀. It’s just like ngrok-go, but for Rust! ngrok-rs is open source on GitHub, with docs available on docs.rs, and a getting started guide in ngrok docs.

ngrok-rs listeners are usable with hyper ServerS, and connections implement tokio’s AsyncRead and AsyncWrite traits. This makes it easy to add ngrok-rs into any application that’s built on hyper, such as the popular axum HTTP framework.

There’s a complete getting started guide in the docs. Check out how easy it is to listen on ngrok’s global network with a single line of code. No ports or separate agent required.

let listener = ngrok::Session::builder() .authtoken_from_env() .connect() .await? .http_endpoint() .listen() .await?;

Learn More >

OAuth and Webhook Verification added to the Free plan

ngrok is on a mission to make your applications more secure. That’s why this month we expanded our Free Plan to include OAuth and Webhook Verification.


Try protecting your webapp with OAuth in one line. All visitors will be forced to auth with google and only example@gmail.com will have access. We support 8 OAuth providers including Google, Github, Facebook, Microsoft.

ngrok http 80 --oauth=google --oauth-allow-email=example@gmail.com

Webhook Verification

Next try protecting your webhook consumers with Webhook Verification in one line. All requests not signed by Slack with the given secret will be rejected. We support 60+ webhook verifiers.

ngrok http 80 --verify-webhook=slack --verify-webhook-secret=yoursecret

The free plan supports up to 5 monthly active OAuth users and up to 500 webhook verifications per month.

Learn More >

Other Product Improvements

  • Expanded ngrok diagnose: The ngrok diagnose command helps you understand why the ngrok agent can’t connect to ngrok. It now tests against all regions and we added additional debugging information about the underlying system.
  • New faster domains: ngrok.dev and ngrok.app: Paying customers can now use two new ngrok-managed domains: ngrok.dev and ngrok.app. These new domains have improved performance from our new global routing logic. 

🚀 Blogs, Events and Developer Previews

Recent Blogs

Community Events

  • KubeCon in Amsterdam - April 18-21 - Find our booth to learn about the ngrok Kubernetes Ingress Controller and how it simplifies ingress to your k8s clusters.
  • ngrok localhost: London (April 13) and ngrok localhost: Amsterdam (April 20): If you’re in either city, come to meet the team and have a drink on us!
  • BSidesSF in San Francisco - April 22-23 - Ari Willet, ngrok’s Head of Security & Compliance will talk about how to prepare for a career in security.

Developer Previews

 These products are in active development and we’d love your early feedback. Expect bugs, breaking API changes, and wider announcements soon upon their completion.

  • ngrok-rs: Our idiomatic Rust library for embedding ingress directly in your Rust apps.
  • ngrok-js: Our idiomatic Javascript library for embedding ingress directly in your Javascript apps.
  • Kubernetes Ingress Controller - Our kubernetes ingress controller creates ingress to your k8s clusters running in any environment without any networking infrastructure.

Questions, suggestions, product feedback? Tweet at @ngrokhq, join our public slack community, or email us at support@ngrok.com

Share this post
Frederico Hakamine
Brazilian, Palmeirense, ngroker, fan of good software, legos, and brewing.
Go language