Skip to main content

Agent SDKs

Overview

Agent SDKs enable you to embed ngrok directly into your application. They allow you to programmatically create ngrok endpoints. You handle connections from ngrok's edge just as if you opened a socket to listen on a port.

Example Usage

import (
"context"
"net"

"golang.ngrok.com/ngrok"
"golang.ngrok.com/ngrok/config"
)

func ngrokListener(ctx context.Context) (net.Listener, error) {
return ngrok.Listen(ctx,
config.HTTPEndpoint(),
ngrok.WithAuthtokenFromEnv(),
)
}

Go Package Docs:

Supported Languages

LanguageDocsQuickstartRepositoryStatus
Gongrok-go docsngrok-go quickstartgithub.com/ngrok/ngrok-goStable
Rustngrok-rust docsngrok-rust quickstartgithub.com/ngrok/ngrok-rustStable
Pythonngrok-python docsgithub.com/ngrok/ngrok-pythonStable
JavaScriptngrok-javascript docsgithub.com/ngrok/ngrok-javascriptStable
Javagithub.com/ngrok/ngrok-javaAlpha

When should I use Agent SDKs?

Agent SDKs are often a better fit for your use case over using the ngrok agent. This is especially true when running ngrok with production apps. Agent SDKs are a better choice if:

  • You don't want to manage the lifetime of a separate agent process
  • You don't want to bundle and distribute the ngrok agent
  • The ngrok agent doesn't run on your target platform
  • The ngrok agent's resource requirements are too high for your target platform
  • You want fine-grained programmatic control over the agent's functionality

Pricing

The agent SDKs are available to all ngrok users at no additional charge. You only incur costs if the resources provisioned by the SDKs incur a cost.