CINXE.COM

<!doctype html> <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-agent-sdks/index" data-has-hydrated="false"> <head> <meta charset="UTF-8"> <meta name="generator" content="Docusaurus v3.7.0"> <title data-rh="true">Overview | ngrok documentation</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ngrok.com/docs/img/ngrok-docs-opengraph.png"><meta data-rh="true" name="twitter:image" content="https://ngrok.com/docs/img/ngrok-docs-opengraph.png"><meta data-rh="true" property="og:url" content="https://ngrok.com/docs/agent-sdks/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="ngrok, documentation, api, errors, reference, getting started, tutorials"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Overview | ngrok documentation"><meta data-rh="true" name="description" content="Overview"><meta data-rh="true" property="og:description" content="Overview"><link data-rh="true" rel="icon" href="/docs/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://ngrok.com/docs/agent-sdks/"><link data-rh="true" rel="alternate" href="https://ngrok.com/docs/agent-sdks/" hreflang="en"><link data-rh="true" rel="alternate" href="https://ngrok.com/docs/agent-sdks/" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://8D7MHVMLBR-dsn.algolia.net" crossorigin="anonymous"><link rel="preconnect" href="https://www.googletagmanager.com"> <script>window.dataLayer=window.dataLayer||[]</script> <script>!function(e,t,a,n){e[n]=e[n]||[],e[n].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var g=t.getElementsByTagName(a)[0],m=t.createElement(a);m.async=!0,m.src="https://www.googletagmanager.com/gtm.js?id=GTM-P4F37ZW",g.parentNode.insertBefore(m,g)}(window,document,"script","dataLayer")</script> <script id="hs-script-loader" src="//js.hs-scripts.com/21124867.js"></script> <link href="https://assets.ngrok.com" rel="preconnect"> <link href="https://fonts.googleapis.com" rel="preconnect"> <link crossorigin="anonymous" href="https://fonts.gstatic.com" rel="preconnect"> <link href="https://fonts.googleapis.com/css2?family=Nunito+Sans:ital,opsz,wght@0,6..12,200..1000;1,6..12,200..1000&amp;amp;display=swap" rel="stylesheet"> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/euclid-square/EuclidSquare-Regular-WebS.woff" as="font" type="font/woff" crossorigin="anonymous"> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/euclid-square/EuclidSquare-RegularItalic-WebS.woff" as="font" type="font/woff" crossorigin="anonymous"> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/euclid-square/EuclidSquare-Medium-WebS.woff" as="font" type="font/woff" crossorigin="anonymous"> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/euclid-square/EuclidSquare-Semibold-WebS.woff" as="font" type="font/woff" crossorigin="anonymous"> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/euclid-square/EuclidSquare-MediumItalic-WebS.woff" as="font" type="font/woff" crossorigin="anonymous"> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/ibm-plex-mono/IBMPlexMono-Text.woff" as="font" type="font/woff" crossorigin="anonymous"> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/ibm-plex-mono/IBMPlexMono-TextItalic.woff" as="font" type="font/woff" crossorigin="anonymous"> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/ibm-plex-mono/IBMPlexMono-SemiBold.woff" as="font" type="font/woff" crossorigin="anonymous"> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/ibm-plex-mono/IBMPlexMono-SemiBoldItalic.woff" as="font" type="font/woff" crossorigin="anonymous"> <script src="/docs/scripts/prevent-fouc.js"></script> <script src="/docs/scripts/ketch.js"></script> <script src="https://global.ketchcdn.com/web/v2/config/ngrok/ngrok_ketch_tag/boot.js" async defer="defer"></script> <script src="/docs/scripts/fix-redirect.js" async></script> <script src="/docs/scripts/anchor-scroll-to.js" async></script> <script src="https://tag.clearbitscripts.com/v1/pk_1caf9e9fb3222466245fb17c8f807837/tags.js"></script><link rel="stylesheet" href="/docs/assets/css/styles.0d39129a.css"> <script src="/docs/assets/js/runtime~main.740438a1.js" defer="defer"></script> <script src="/docs/assets/js/main.2dbc087b.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-P4F37ZW" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_WzEj" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a href="https://ngrok.com" target="_blank" rel="noopener noreferrer" class="navbar__brand"><div class="navbar__logo"><img src="/docs/img/ngrok-black.svg" alt="ngrok" class="themedComponent_FGYm themedComponent--light_AbBu"><img src="/docs/img/ngrok-white.svg" alt="ngrok" class="themedComponent_FGYm themedComponent--dark_xNIo"></div></a><a href="https://ngrok.com/product/platform" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Platform</a><a href="https://ngrok.com/use-cases" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Use cases</a><a href="https://ngrok.com/blog" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://ngrok.com/resources" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Resources</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://ngrok.com/pricing" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Pricing</a><a href="https://download.ngrok.com" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Get ngrok</a></div><div class="navbar__items navbar__items--right"><a href="https://dashboard.ngrok.com/login" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link dev-portal-login dev-portal-link">Log in</a><a href="https://ngrok.com/signup" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link dev-portal-signup dev-portal-link">Sign Up</a><button type="button" class="text-muted hover:text-body bg-transparent flex shrink-0 cursor-pointer items-center justify-center rounded-full p-1.5 ring-focus-accent focus:outline-none focus-visible:ring-4 size-9 dark-high-contrast:text-black dark-high-contrast:hover:text-white colorModeToggle_B_zh"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 256 256" class="size-5 shrink-0"><path d="M116,36V20a12,12,0,0,1,24,0V36a12,12,0,0,1-24,0Zm80,92a68,68,0,1,1-68-68A68.07,68.07,0,0,1,196,128Zm-24,0a44,44,0,1,0-44,44A44.05,44.05,0,0,0,172,128ZM51.51,68.49a12,12,0,1,0,17-17l-12-12a12,12,0,0,0-17,17Zm0,119-12,12a12,12,0,0,0,17,17l12-12a12,12,0,1,0-17-17ZM196,72a12,12,0,0,0,8.49-3.51l12-12a12,12,0,0,0-17-17l-12,12A12,12,0,0,0,196,72Zm8.49,115.51a12,12,0,0,0-17,17l12,12a12,12,0,0,0,17-17ZM48,128a12,12,0,0,0-12-12H20a12,12,0,0,0,0,24H36A12,12,0,0,0,48,128Zm80,80a12,12,0,0,0-12,12v16a12,12,0,0,0,24,0V220A12,12,0,0,0,128,208Zm108-92H220a12,12,0,0,0,0,24h16a12,12,0,0,0,0-24Z"></path></svg></button><div class="navbarSearchContainer_ynnm"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_pdcq"><div class="docsWrapper_nEP4"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_vdmr" type="button"></button><div class="docRoot_x84A"><aside class="theme-doc-sidebar-container docSidebarContainer_fI6Q"><div class="sidebarViewport_BRbX"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button><div class="sidebar_ofVZ"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_uYpm"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/">Overview</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/what-is-ngrok/">What is ngrok?</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/how-ngrok-works/">How does ngrok work?</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/why-ngrok/">Why ngrok?</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/whats-new/">What&#x27;s new?</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/getting-started/">Getting Started</a><button aria-label="Expand sidebar category &#x27;Getting Started&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/pricing-limits/">Pricing &amp; Limits</a><button aria-label="Expand sidebar category &#x27;Pricing &amp; Limits&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--category"><div class="menu__list-item-collapsible"><a class="menu__link" href="/docs/universal-gateway/overview/">Universal Gateway</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/universal-gateway/overview/">Overview</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" tabindex="0" href="/docs/universal-gateway/domains/">Concepts</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/universal-gateway/endpoints/">Endpoints</a><button aria-label="Expand sidebar category &#x27;Endpoints&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/universal-gateway/global-load-balancer/">Network</a><button aria-label="Expand sidebar category &#x27;Network&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--category"><div class="menu__list-item-collapsible"><a class="menu__link" href="/docs/traffic-policy/">Traffic Policy</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/traffic-policy/">Overview</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/traffic-policy/getting-started/agent-endpoints/cli/">Getting Started</a><button aria-label="Expand sidebar category &#x27;Getting Started&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/traffic-policy/concepts/">Concepts</a><button aria-label="Expand sidebar category &#x27;Concepts&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/traffic-policy/actions/">Actions</a><button aria-label="Expand sidebar category &#x27;Actions&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/traffic-policy/macros/">Macros</a><button aria-label="Expand sidebar category &#x27;Macros&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/traffic-policy/variables/">Variables</a><button aria-label="Expand sidebar category &#x27;Variables&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/traffic-policy/identities/">Resources</a><button aria-label="Expand sidebar category &#x27;Resources&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" tabindex="0" href="/docs/traffic-policy/examples/a-b-tests/">Examples</a></div></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--category"><div class="menu__list-item-collapsible"><a class="menu__link" href="/docs/obs/">Traffic Observability</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/obs/">Overview</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/obs/traffic-inspection/">Traffic Inspector</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/obs/events/">Events</a><button aria-label="Expand sidebar category &#x27;Events&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--category"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active" href="/docs/agent/">Secure Tunnels</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/agent/">Agent</a><button aria-label="Expand sidebar category &#x27;Agent&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible menu__list-item-collapsible--active"><a class="menu__link menu__link--sublist menu__link--active" aria-current="page" tabindex="0" href="/docs/agent-sdks/">Agent SDKs</a><button aria-label="Collapse sidebar category &#x27;Agent SDKs&#x27;" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/agent-sdks/">Overview</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/k8s/">Kubernetes</a><button aria-label="Expand sidebar category &#x27;Kubernetes&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--category"><div class="menu__list-item-collapsible"><a class="menu__link" href="/docs/iam/">Identity &amp; Access</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/iam/">Overview</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/iam/users/">Principals</a><button aria-label="Expand sidebar category &#x27;Principals&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/iam/sso/">Account Governance</a><button aria-label="Expand sidebar category &#x27;Account Governance&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1"><div class="menu__section">Platform</div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/api/">API</a><button aria-label="Expand sidebar category &#x27;API&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/errors/">Errors</a><button aria-label="Expand sidebar category &#x27;Errors&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1"><div class="menu__section">Walkthroughs</div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/guides/">Guides</a><button aria-label="Expand sidebar category &#x27;Guides&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/integrations/">Integrations</a><button aria-label="Expand sidebar category &#x27;Integrations&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1"><div class="menu__section"></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/faq/">FAQ</a></li></ul></nav></div></div></aside><main class="docMainContainer_heAd"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_z5Ew"><div class="docItemContainer_uDid"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Alpn" aria-label="Breadcrumbs"><ul class="breadcrumbs flex items-center" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item flex items-center justify-center"><a aria-label="Home page" class="breadcrumbs__link" href="/docs/"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 256 256" class="size-4"><path d="M224,120v96a8,8,0,0,1-8,8H160a8,8,0,0,1-8-8V164a4,4,0,0,0-4-4H108a4,4,0,0,0-4,4v52a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V120a16,16,0,0,1,4.69-11.31l80-80a16,16,0,0,1,22.62,0l80,80A16,16,0,0,1,224,120Z"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item relative"><a class="breadcrumbs__link" itemprop="item" href="/docs/agent/"><span itemprop="name">Secure Tunnels</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item relative breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Agent SDKs</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_flTg theme-doc-toc-mobile tocMobile_WW97"><button type="button" class="clean-btn tocCollapsibleButton_Bjm1">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Agent SDKs</h1></header> <h2 class="anchor anchorWithStickyNavbar_GhIE" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview">​</a></h2> <p>Agent SDKs enable you to embed ngrok directly into your application. They allow you to programmatically create ngrok endpoints. You handle connections from ngrok&#x27;s edge just as if you opened a socket to listen on a port.</p> <h2 class="anchor anchorWithStickyNavbar_GhIE" id="example-usage">Example Usage<a href="#example-usage" class="hash-link" aria-label="Direct link to Example Usage" title="Direct link to Example Usage">​</a></h2> <div class="tabs-container tabList_tjVS"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_VsQQ tabs__item--active">Go SDK</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_VsQQ">Javascript SDK</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_VsQQ">Python SDK</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_VsQQ">Rust SDK</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_io5K"><div class="text-mono overflow-hidden rounded-md border border-gray-300 bg-gray-50 font-mono [&amp;_svg]:shrink-0 mb-4"><pre class="min-h-[3.25rem] p-4 pr-[3.375rem] font-mono text-mono">Loading…</pre></div> <p>Go Package Docs:</p> <ul> <li><a href="https://pkg.go.dev/golang.ngrok.com/ngrok/config#HTTPEndpoint" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">https://pkg.go.dev/golang.ngrok.com/ngrok/config#HTTPEndpoint</a></li> </ul></div><div role="tabpanel" class="tabItem_io5K" hidden=""><div class="text-mono overflow-hidden rounded-md border border-gray-300 bg-gray-50 font-mono [&amp;_svg]:shrink-0 mb-4"><pre class="min-h-[3.25rem] p-4 pr-[3.375rem] font-mono text-mono">Loading…</pre></div> <p>Javascript SDK Docs:</p> <ul> <li><a href="https://ngrok.github.io/ngrok-javascript/classes/HttpListenerBuilder.html" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">https://ngrok.github.io/ngrok-javascript/classes/HttpListenerBuilder.html</a></li> <li><a href="https://ngrok.github.io/ngrok-javascript/classes/Session.html#httpEndpoint" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">https://ngrok.github.io/ngrok-javascript/classes/Session.html#httpEndpoint</a></li> <li><a href="https://ngrok.github.io/ngrok-javascript/functions/connect.html" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">https://ngrok.github.io/ngrok-javascript/functions/connect.html</a></li> </ul></div><div role="tabpanel" class="tabItem_io5K" hidden=""><div class="text-mono overflow-hidden rounded-md border border-gray-300 bg-gray-50 font-mono [&amp;_svg]:shrink-0 mb-4"><pre class="min-h-[3.25rem] p-4 pr-[3.375rem] font-mono text-mono">Loading…</pre></div> <p>Python SDK Docs:</p> <ul> <li><a href="https://ngrok.github.io/ngrok-python/http_listener_builder.html" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">https://ngrok.github.io/ngrok-python/http_listener_builder.html</a></li> <li><a href="https://ngrok.github.io/ngrok-python/session.html#ngrok.Session.http_endpoint" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">https://ngrok.github.io/ngrok-python/session.html#ngrok.Session.http_endpoint</a></li> <li><a href="https://ngrok.github.io/ngrok-python/module.html#ngrok.connect" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">https://ngrok.github.io/ngrok-python/module.html#ngrok.connect</a></li> </ul></div><div role="tabpanel" class="tabItem_io5K" hidden=""><div class="text-mono overflow-hidden rounded-md border border-gray-300 bg-gray-50 font-mono [&amp;_svg]:shrink-0 mb-4"><pre class="min-h-[3.25rem] p-4 pr-[3.375rem] font-mono text-mono">Loading…</pre></div> <p>Rust Crate Docs:</p> <ul> <li><a href="https://docs.rs/ngrok/latest/ngrok/session/struct.Session.html#method.http_endpoint" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">https://docs.rs/ngrok/latest/ngrok/session/struct.Session.html#method.http_endpoint</a></li> </ul></div></div></div> <h2 class="anchor anchorWithStickyNavbar_GhIE" id="supported-languages">Supported Languages<a href="#supported-languages" class="hash-link" aria-label="Direct link to Supported Languages" title="Direct link to Supported Languages">​</a></h2> <table><thead><tr><th>Language</th><th>Docs</th><th>Quickstart</th><th>Repository</th><th>Status</th></tr></thead><tbody><tr><td>Go</td><td><a href="https://pkg.go.dev/golang.ngrok.com/ngrok" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">ngrok-go docs</a></td><td><a class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent" href="/docs/getting-started/go/">ngrok-go quickstart</a></td><td><a href="https://github.com/ngrok/ngrok-go" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">github.com/ngrok/ngrok-go</a></td><td>Stable</td></tr><tr><td>Rust</td><td><a href="https://docs.rs/ngrok/latest/ngrok/" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">ngrok-rust docs</a></td><td><a class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent" href="/docs/getting-started/rust/">ngrok-rust quickstart</a></td><td><a href="https://github.com/ngrok/ngrok-rust" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">github.com/ngrok/ngrok-rust</a></td><td>Stable</td></tr><tr><td>Python</td><td><a href="https://ngrok.github.io/ngrok-python/" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">ngrok-python docs</a></td><td></td><td><a href="https://github.com/ngrok/ngrok-python" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">github.com/ngrok/ngrok-python</a></td><td>Stable</td></tr><tr><td>JavaScript</td><td><a href="https://ngrok.github.io/ngrok-javascript/" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">ngrok-javascript docs</a></td><td></td><td><a href="https://github.com/ngrok/ngrok-javascript" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">github.com/ngrok/ngrok-javascript</a></td><td>Stable</td></tr><tr><td>Java</td><td></td><td></td><td><a href="https://github.com/ngrok/ngrok-java" target="_blank" class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent">github.com/ngrok/ngrok-java</a></td><td>Alpha</td></tr></tbody></table> <h2 class="anchor anchorWithStickyNavbar_GhIE" id="when-should-i-use-agent-sdks">When should I use Agent SDKs?<a href="#when-should-i-use-agent-sdks" class="hash-link" aria-label="Direct link to When should I use Agent SDKs?" title="Direct link to When should I use Agent SDKs?">​</a></h2> <p>Agent SDKs are often a better fit for your use case over using the <a class="cursor-pointer rounded bg-transparent text-accent-600 hover:underline focus:outline-none focus-visible:ring focus-visible:ring-focus-accent" href="/docs/agent/">ngrok agent</a>. This is especially true when running ngrok with production apps. Agent SDKs are a better choice if:</p> <ul> <li>You don&#x27;t want to manage the lifetime of a separate agent process</li> <li>You don&#x27;t want to bundle and distribute the ngrok agent</li> <li>The ngrok agent doesn&#x27;t run on your target platform</li> <li>The ngrok agent&#x27;s resource requirements are too high for your target platform</li> <li>You want fine-grained programmatic control over the agent&#x27;s functionality</li> </ul> <h2 class="anchor anchorWithStickyNavbar_GhIE" id="pricing">Pricing<a href="#pricing" class="hash-link" aria-label="Direct link to Pricing" title="Direct link to Pricing">​</a></h2> <p>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.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/ngrok/ngrok-docs/edit/main/docs/agent-sdks/index.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_LeTa" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_QwT8"><span class="theme-last-updated">Last updated<!-- --> on <b><time datetime="2025-02-21T23:04:53.000Z" itemprop="dateModified">Feb 21, 2025</time></b> by <b>Cody Price</b></span></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/agent/diagnose/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Diagnose</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/k8s/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Overview</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_K7lw thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overview" class="table-of-contents__link toc-highlight">Overview</a></li><li><a href="#example-usage" class="table-of-contents__link toc-highlight">Example Usage</a></li><li><a href="#supported-languages" class="table-of-contents__link toc-highlight">Supported Languages</a></li><li><a href="#when-should-i-use-agent-sdks" class="table-of-contents__link toc-highlight">When should I use Agent SDKs?</a></li><li><a href="#pricing" class="table-of-contents__link toc-highlight">Pricing</a></li></ul></div></div></div></div></main></div></div></div><footer class="footer"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">ngrok Service</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting-started/">Get Started</a></li><li class="footer__item"><a href="https://dashboard.ngrok.com/signup" target="_blank" rel="noopener noreferrer" class="footer__link-item">Sign up</a></li><li class="footer__item"><a href="https://dashboard.ngrok.com/login" target="_blank" rel="noopener noreferrer" class="footer__link-item">Log in</a></li><li class="footer__item"><a href="https://download.ngrok.com" target="_blank" rel="noopener noreferrer" class="footer__link-item">Download</a></li><li class="footer__item"><a href="https://ngrok.com/docs" target="_blank" rel="noopener noreferrer" class="footer__link-item">Docs</a></li><li class="footer__item"><a href="https://status.ngrok.com" target="_blank" rel="noopener noreferrer" class="footer__link-item">Status</a></li></ul></div><div class="col footer__col"><div class="footer__title">ngrok.com</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://ngrok.com/product" target="_blank" rel="noopener noreferrer" class="footer__link-item">Product</a></li><li class="footer__item"><a href="https://ngrok.com/pricing" target="_blank" rel="noopener noreferrer" class="footer__link-item">Pricing</a></li><li class="footer__item"><a href="https://ngrok.com/customers" target="_blank" rel="noopener noreferrer" class="footer__link-item">Customers</a></li><li class="footer__item"><a href="https://ngrok.com/solutions" target="_blank" rel="noopener noreferrer" class="footer__link-item">Solutions</a></li><li class="footer__item"><a href="https://ngrok.com/partners" target="_blank" rel="noopener noreferrer" class="footer__link-item">Partners</a></li><li class="footer__item"><a href="https://trust.ngrok.com" target="_blank" rel="noopener noreferrer" class="footer__link-item">Trust Portal</a></li></ul></div><div class="col footer__col"><div class="footer__title">Legal</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://ngrok.com/abuse" target="_blank" rel="noopener noreferrer" class="footer__link-item">Abuse</a></li><li class="footer__item"><a href="https://ngrok.com/dpa" target="_blank" rel="noopener noreferrer" class="footer__link-item">DPA</a></li><li class="footer__item"><a href="https://ngrok.com/privacy" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy</a></li><li class="footer__item"><a href="https://ngrok.com/security" target="_blank" rel="noopener noreferrer" class="footer__link-item">Security</a></li><li class="footer__item"><a href="https://ngrok.com/tos" target="_blank" rel="noopener noreferrer" class="footer__link-item">Terms of service</a></li><li class="footer__item"><a href="https://ngrok.com/privacy-preferences" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy Preferences</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://ngrok.com/careers" target="_blank" rel="noopener noreferrer" class="footer__link-item">Careers</a></li><li class="footer__item"><a href="https://blog.ngrok.com" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://ngrok.com/slack" target="_blank" rel="noopener noreferrer" class="footer__link-item">Community</a></li><li class="footer__item"><a href="https://twitter.com/ngrokHQ" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/ngrok" target="_blank" rel="noopener noreferrer" class="footer__link-item">LinkedIn</a></li><li class="footer__item"><a href="https://github.com/ngrok" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">© ngrok 2025</div></div></div></footer></div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10