All notable changes to this project will be documented in this file.
This project adheres to Semantic Versioning.
3.1.2 - 2026-04-29
- Build and stability improvements.
- Build and stability improvements.
3.1.1 - 2026-04-27
CreateTunnel.trafficPolicyFile,CreateTunnel.agentTlsTermination,Upstream.proxyProtocolfor v3 config gaps.
- Build and stability improvements.
3.1.0 - 2026-04-26
- Full support for
ngrok's v3 config schema. SetJavaNgrokConfig.configVersiontoConfigVersion.V3to haveNgrokClient.connect()and other methods usengrok's Endpoints instead of Tunnels. Tunnel.getUpstream(), populated from the v3 endpoint response (or synthesized fromconfig.addrfor v2). Raw v3 fields liketrafficPolicyandbindingsremain accessible via matchingTunnelgetters.- v2
withAddr()/withProto()args are interpolated to a v3upstreamblock whenconfigVersionisV3. - Documentation updates.
3.0.0 - 2026-03-31
- Removed support for
ngrokv2, as v2 binaries are no longer distributed byngrok. Onlyngrokv3 is now supported.
- Updated Linux and FreeBSD CDN URLs from
.zipto.tgz. - Added
.tgzarchive extraction support alongside existing.zipsupport.
2.5.1 - 2026-03-06
- Migrated CDN URLs from
bin.equinox.iotobin.ngrok.com.
2.5.0 - 2025-11-17
- Removed support for
ngrokEdges, as they are deprecated byngrokand will be sunset December 31st, 2025. See this issue for more details.
2.4.1 - 2025-10-23
- Support for
XDG_CONFIG_HOME.
2.4.0 - 2025-09-23
- As of
ngrokAgent 3.29.0, two tunnels cannot have the same name (and this includes tunnel's defined in the config, even if they are not started). As such, whenwithName()is given and matches a tunnel defined in the config,java-ngrokwill append "-api" to the tunnel's name when starting it.
2.3.16 - 2025-07-09
- Support for
s390x,ppc64, andppc64learchitectures. - Stability improvements.
2.3.15 - 2025-05-28
- Documentation improvements.
2.3.14 - 2025-05-16
- Documentation improvements.
- Noisy log around
ProcessMonitorthread shutting down.
2.3.12 - 2025-05-16
- Support for MSYS2's
mingwwhen installing the agent. Likecygwin, it is mapped to its corresponding Windows binary. - Windows ARM 64-bit support.
- FreeBSD ARM support.
- Build and stability improvements.
- Documentation improvements.
NgrokV2CDNUrlandNgrokV3CDNUrlboth improperly defined the constant for Apple Silicon asDARWIN_i386_arm. It has been renamed toDARWIN_x86_64_arm.
2.3.11 - 2025-05-11
NgrokClient.api(), allowingapicommands to be executed from the agent.- Agent interface, which provides access to Captured Requests and agent status.
slf4jdependency, making logging improvements.- Stability improvements.
- Documentation improvements.
NgrokLog.lvlnow consistently parsesERR,EROR, andCRITtoERRORinstead ofSEVERE.
- Refactored concurrency around
ProcessMonitorand startup logging, as the old design could lead to race conditions when startup errored. NgrokLogstring may contain a malformed or emptylvl. Default is nowNOTSETin such cases.
2.3.10 - 2025-05-07
- Support for
pooling_enabledin CreateTunnel, which allows for the use ofhttpsandtlsInternal Endpoints. - Stability improvements around concurrency, process execution.
- Documentation improvements.
- Test improvements.
2.3.9 - 2025-04-23
- Deprecation warning when using Labeled Tunnels, since
ngrokEdges will be sunset December 31st, 2025. See this issue for more details. - Migrate build from OSSRH to Central publishing.
- Updates to Maven Central badge links.
- Documentation improvements.
- Build improvements.
2.3.8 - 2025-03-16
DefaultHttpClientnow respectsretryCount, so APIGEToperations also retry if configured.
processandprocessMonitorare no longer set tonullwhen NgrokProcess.stop() is called, as this was error prone behavior that also suppressed useful information.
2.3.7 - 2025-02-18
- Documentation improvements.
2.3.6 - 2025-01-28
- Documentation improvements.
2.3.5 - 2025-01-08
- Support for
ngrokconfig version 3. - Support for
traffic_policytunnel definition, whichngrokrenamed frompolicy. - Support for
traffic_policy.on_http_requestandtraffic_policy.on_http_response, whichngrokadded unique keys for in HTTP tunnels. - If a value for
apiKeyis not set inJavaNgrokConfig, it will attempt to use the environment variableNGROK_API_KEYif it is set.
- Tunnel definition fields
hostnameandclient_cas, as they are no longer supported byngrok.
2.3.4 - 2024-12-13
- Test improvements.
- Permission for installed binary to limit execute to user.
2.3.3 - 2024-11-10
- Documentation improvements.
2.3.2 - 2024-11-08
- Documentation improvements.
- NgrokProcess.ProcessMonitor.stop() is now public (it was already documented as such).
2.3.1 - 2024-11-04
- Documentation improvements update links to
ngrok's documentation. - Test improvements.
2.3.0 - 2024-04-08
- Support for
domainconfiguration when building CreateTunnel. - Support for
user_agent_filterconfiguration when building CreateTunnel. - Support for
policyconfiguration when building CreateTunnel. us-cal-1to Region.- Test cases for TLS tunnels.
- Build improvements.
ngrokconfig valueip_restrictionwas incorrectly plural in previous versions ofjava-ngrok. Value is now interpreted as singular to align with thengrokdocs, and classes and methods associated with it, like TunnelIPRestriction, have been renamed.
2.2.16 - 2024-03-24
- Build and stability improvements.
2.2.15 - 2024-03-08
objparsing inNgrokLog.throwsfor unchecked exceptions to documentation.- Documentation improvements.
- Build and stability improvements.
- Minor bugs, including a typo in the name of JavaNgrokConfig.getStartupTimeout().
2.2.14 - 2024-03-06
- Build and stability improvements.
- Documentation and style improvements.
2.2.13 - 2024-02-26
- Build improvements.
- Documentation improvements.
2.2.12 - 2024-02-18
- Build and stability improvements.
2.2.10 - 2024-02-15
- Moved evaluation of HTTP
GETretry logic fromDefaultHttpClient'sgetInputStream()toget(). - Build and stability improvements.
2.2.9 - 2024-02-14
- Stability improvements.
2.2.8 - 2024-01-08
- Support for Java 21.
- Build improvements.
2.2.7 - 2023-12-30
- Test improvements, suite now respects
NGROK_AUTHTOKENfor all necessary tests (skipped if not set, rather than tests failing).
2.2.6 - 2023-12-27
- If a value for
authTokenis not set inJavaNgrokConfig, it will attempt to use the environment variableNGROK_AUTHTOKENif it is set. - Build improvements.
2.2.5 - 2023-12-01
java-ngrokto no longer install the config file in a legacy location, now respectsngrok's default locations.
- Build improvements.
2.2.4 - 2023-11-14
- Documentation improvements.
2.2.3 - 2023-09-17
retryCountadded toDefaultHttpClient, soGEToptions can now support retries.- Documentation improvements.
- Test improvements.
NgrokInstallernow uses theDefaultHttpClientto downloadngrokbinaries.
2.2.2 - 2023-09-14
- Documentation improvements.
2.2.1 - 2023-09-13
- Bug
in Tunnel,
a misspelled method was committed instead of using
settersto updatepublicUrlandproto.
2.2.0 - 2023-09-12
- Support for
labels, songrok's Labeled Tunnel Configuration is now supported, which enables basic support forngrok's Edge. apiKeytoJavaNgrokConfig, which can be set sojava-ngrokcan interface with Edgeslabels.idto Tunnel.timeoutto DefaultHttpClient.- Documentation improvements.
- Test improvements.
2.1.0 - 2023-04-22
- Support for
oauthconfiguration when building CreateTunnel. - Support for other new
ngrokv3 CreateTunnel parameters, includingcircuit_breaker,compression,mutual_tls_cas,proxy_proto,websocket_tcp_converter,terminate_at,request_header,response_header,ip_restrictions, andverify_webhook. - Documentation improvements.
- Test improvements.
2.0.0 - 2023-04-12
- Default installer behavior downloads
ngrokv3 by default. - Documentation updates.
- Test updates.
1.7.2 - 2023-04-12
- Support for
basic_authparameter inngrokv3. - Documentation improvements.
- Test improvements.
1.7.1 - 2023-04-11
- Inconsistencies with default installation of
ngrokv2.
1.7.0 - 2023-04-11
ngrokVersionto CreateTunnel so parameter details can be properly inferred when necessary.
- Inconsistencies with default installation of
ngrokv2. - Documentation improvements.
- Test improvements.
1.6.2 - 2023-03-08
- Issue where zip file paths were not normalized before they were read.
- Documentation improvements.
- Test improvements.
1.6.1 - 2022-11-29
- Stability improvements.
1.6.0 - 2022-11-28
- Support for
ngrokv3 (v2 is still used by default). - Documentation and examples for using
java-ngrokwithngrokv3.
- Stability improvements.
- Documentation improvements.
- Test improvements.
1.5.6 - 2022-02-07
- Darwin 64-bit ARM support, as this was added to
ngrokitself.
- Darwin 386 support, as this was removed from
ngrokitself.
1.5.5 - 2021-09-28
- Full
ngroklog line now passed to Java logger (was previously just themsgfield).
1.5.4 - 2021-09-21
- Test improvements.
- Parse issue from
ngrokconfig file withinspectandbind_tlsintunnelsdefinitions.
1.5.3 - 2021-08-26
- Build improvements.
- Documentation improvements.
- If no
configPathis set inJavaNgrokConfig, now properly defaults to~/.ngrok2/ngrok.yml.
1.5.0 - 2021-08-25
- Shutdown hook, so running
ngrokprocesses will clean themselves when the JVM shuts down. - Build improvements.
- Documentation improvements.
- Test improvements.
- Java 8 support.
reconnectSessionRetriesfromJavaNgrokConfig, instead relying onngrok's own built-in retry mechanism on startup fails.
The 1.4.x branch is where support for Java 8 of java-ngrok was maintained. It is available through
the java8-ngrok artifact
on Maven Central.
ngrokCDN URLs updated frombin.equinox.iotobin.ngrok.com.- Linux and FreeBSD downloads now use
.tgzarchives instead of.zip.
1.4.19 - 2025-05-16
- Documentation improvements.
- Noisy log around
ProcessMonitorthread shutting down.
1.4.17 - 2025-05-16
- Support for MSYS2's
mingwwhen installing the agent. Likecygwin, it is mapped to its corresponding Windows binary. - Windows ARM 64-bit support.
- FreeBSD ARM support.
- Build and stability improvements.
- Documentation improvements.
NgrokV2CDNUrlandNgrokV3CDNUrlboth improperly defined the constant for Apple Silicon asDARWIN_i386_arm. It has been renamed toDARWIN_x86_64_arm.
1.4.16 - 2025-05-11
NgrokClient.api(), allowingapicommands to be executed from the agent.- Agent interface, which provides access to Captured Requests and agent status.
slf4jdependency, making logging improvements.- Stability improvements.
- Documentation improvements.
NgrokLog.lvlnow consistently parsesERR,EROR, andCRITtoERRORinstead ofSEVERE.
- Refactored concurrency around
ProcessMonitorand startup logging, as the old design could lead to race conditions when startup errored. NgrokLogstring may contain a malformed or emptylvl. Default is nowNOTSETin such cases.
1.4.15 - 2025-05-07
- Support for
pooling_enabledinCreateTunnel, which allows for the use ofhttpsandtlsInternal Endpoints. - Stability improvements around concurrency, process execution.
- Documentation improvements.
- Test improvements.
1.4.14 - 2025-04-23
- Rebased the
1.4.xbranch with Java 8-compatible changes frommainbetween2.2.15and2.3.9. See themainchangelog for full details. - Biggest changes include support for
ngrok's v3 config (includingtraffic_policy), support for latest fields in tunnel definitions,ip_restriction - Deprecation warning when using Labeled Tunnels, since
ngrokEdges will be sunset December 31st, 2025. See this issue for more details.
ip_restrictionwas incorrectly plural, config and class are now singular to matchngrok.
1.4.13 - 2024-03-08
objparsing inNgrokLog.throwsfor unchecked exceptions to documentation.- Documentation improvements.
- Build and stability improvements.
- Minor bugs, including a typo in the name of JavaNgrokConfig.getStartupTimeout().
1.4.12 - 2024-03-06
- Build and stability improvements.
- Documentation and style improvements.
1.4.11 - 2024-02-26
- Build improvements.
- Documentation improvements.
1.4.8 - 2024-02-19
- Rebased the
1.4.xbranch with Java 8-compatible changes frommainbetween1.6.0and2.2.12. See themain changelogfor full details. - Biggest change is support for
ngrokv3—includinglabels—and thatngrokv3 is installed by default.
NgrokProcess.stopMonitorThread(), useNgrokProcess.ProcessMonitor.stop()instead.
1.4.6 - 2024-02-15
- If a value for
authTokenis not set inJavaNgrokConfig, it will attempt to use the environment variableNGROK_AUTHTOKENif it is set. - Test improvements, suite now respects
NGROK_AUTHTOKENfor all necessary tests (skipped if not set, rather than tests failing). - Build and stability improvements.
- Issue where zip file paths were not normalized before they were read.
1.4.5 - 2022-02-07
- Darwin 64-bit ARM support, as this was added to
ngrokitself.
- Darwin 386 support, as this was removed from
ngrokitself.
1.4.4 - 2021-09-28
- Test improvements.
- Parse issue from
ngrokconfig file withinspectandbind_tlsintunnelsdefinitions. - Full
ngroklog line now passed to Java logger (was previously just themsgfield).
1.4.3 - 2021-08-26
- Build improvements.
- Documentation improvements.
- If no
configPathis set inJavaNgrokConfig, now properly defaults to~/.ngrok2/ngrok.yml.
1.4.0 - 2021-08-25
- Java 8 support, which will not be actively maintained. It is available through the
java8-ngrokartifact on Maven Central.
1.1.0 - 2021-08-20
- Support
for
ngrok's tunnel definitions when calling NgrokClient.connect(). If a tunnel definition inngrok's config matches the givenname, it will be used to start the tunnel. - Support for
a
ngroktunnel definition named "java-ngrok-default" when calling NgrokClient.connect(). WhennameisNoneand a "java-ngrok-default" tunnel definition exists itngrok's config, it will be used. refreshMetrics()to NgrokClient.- Documentation improvements.
- Test improvements.
JavaNgrokConfig.keepMonitoringis nowtrueby default (was already documented this way, so fixing bug where it defaulted itfalse).- Serialization of
ngrok'sngrok.yml(can now properly parsed nested YAML to a nested Map). Tunnel.Metricsrateandpfields are nowdoubles rather thanints, so they serialize correctly when populated.
1.0.0 - 2021-08-18
- First stable release of
java-ngrok.