What's new

amtm amtm 6.4 - the Asuswrt-Merlin Terminal Menu, March 22, 2026

Begin by starting a separate thread as this is not related to amtm maintenance per se. Provide download links so that those interested may install and test.

How is this different than @Viktor Jaep's VPNMON script?
 
How is this different than @Viktor Jaep's VPNMON script?
It's similar in the way that VPNMON works in that it rotates WG connections and checks for tunnel health, but this is customized specifically for NordVPN's use. That's why I decided to scrap VPNMON-R2 almost 3 years ago, and created VPNMON-R3 in order to provide more flexibility so that you could use any VPN provider... not just NordVPN.
 
What is missing, however, is:
- scheduled endpoint rotation, and
- a watchdog that monitors the WireGuard tunnel health and reacts when a tunnel becomes unusable (for any reason, like for example Endpoint being decommissioned) by recreating it.

My solution consists of two scripts:
- nordwg_rotate.sh – forces WireGuard endpoint rotation according to schedules defined via cru
- nordwg_watchdog.sh – periodically checks WireGuard tunnel health and forces a new setup when an existing tunnel is not healthy

Thank you for your enthusiasm and contributions, @BrimoXD99, but did you check out VPNMON-R3 before starting your project? Because it does all this same stuff (and more). Obviously I don't want to stop you from building your own thing, because I know for a fact that coding is a ton of fun... and we welcome any and all contributions in this community!

Some backstory -- about 5 years ago, I built VPNMON-R2, but it was heavily customized specifically for different VPN providers, like NordVPN, AirVPN, etc... much like how yours operates today. But I realized I was constantly battling having to integrate yet another VPN provider with different standards, or dealing with changing standards on existing VPN providers... even VPN providers ditching their ability to use an API to get server information.

Blast from the past... VPNMON-R2 showing a customized NordVPN connection:

1769352839313.png


That's why I scrapped R2, and built VPNMON-R3 about 3 years ago... which is agnostic to any VPN provider, and allows you to query the VPN provider of your choice (including Nord) to pull country, city, or whatever data you please to assemble a server list that it will randomly (or round-robin) connect to as many times as you want each day. Also, it performs these services for OVPN or WG, or both. The health of the tunnels is a big component, and has multiple trip wires that it checks for every 60 seconds (or however long you want), before it determines it requires a reset.

For example, as you can see below, my WG2 connection has 2259 NordVPN servers it can randomly pick from and reconnect to on a periodic basis, or when the tunnel fails. My WG3 connection uses 47 AirVPN servers, and my OVPN5 connection (not running) uses 188 ProtonVPN servers.

1769351586982.png


I would definitely encourage you to continue development on your script, but as @visortgw recommended above, to start your own thread in the forum to support users who may be interested in running it first.
 
Last edited:
My goal is to add an entry to the amtm menu, under a defined key, so I can launch nordwg-menu.sh directly from amtm.
Is this possible, and if so, how should it be implemented?
Theoretically, that is possible. But amtm is entirely dynamic how it loads and drops extensions and not built to use user defined modifications at all.
 
Begin by starting a separate thread as this is not related to amtm maintenance per se. Provide download links so that those interested may install and test.

How is this different than @Viktor Jaep's VPNMON script?
Completely disagree.
My question specifically concerns the amtm configuration, specifically how to add a private script to the amtm menu, regardless of what the private script does.
How would sharing my script for testing answer my question about adding a private script to the amtm menu?
Are you asking how my script differs from VPNMON? How does your question relate to my goal?
 
Theoretically, that is possible. But amtm is entirely dynamic how it loads and drops extensions and not built to use user defined modifications at all.
Would it be too much to ask for a feature in amtm that would allow users to add one or two private scripts to the amtm menu?
I'm just throwing out an idea ;)
 
Thank you for your enthusiasm and contributions, @BrimoXD99, but did you check out VPNMON-R3 before starting your project? Because it does all this same stuff (and more). Obviously I don't want to stop you from building your own thing, because I know for a fact that coding is a ton of fun... and we welcome any and all contributions in this community!

Some backstory -- about 5 years ago, I built VPNMON-R2, but it was heavily customized specifically for different VPN providers, like NordVPN, AirVPN, etc... much like how yours operates today. But I realized I was constantly battling having to integrate yet another VPN provider with different standards, or dealing with changing standards on existing VPN providers... even VPN providers ditching their ability to use an API to get server information.

Blast from the past... VPNMON-R2 showing a customized NordVPN connection:

That's why I scrapped R2, and built VPNMON-R3 about 3 years ago... which is agnostic to any VPN provider, and allows you to query the VPN provider of your choice (including Nord) to pull country, city, or whatever data you please to assemble a server list that it will randomly (or round-robin) connect to as many times as you want each day. Also, it performs these services for OVPN or WG, or both. The health of the tunnels is a big component, and has multiple trip wires that it checks for every 60 seconds (or however long you want), before it determines it requires a reset.

For example, as you can see below, my WG2 connection has 2259 NordVPN servers it can randomly pick from and reconnect to on a periodic basis, or when the tunnel fails. My WG3 connection uses 47 AirVPN servers, and my OVPN5 connection (not running) uses 188 ProtonVPN servers.

I would definitely encourage you to continue development on your script, but as @visortgw recommended above, to start your own thread in the forum to support users who may be interested in running it first.
I've looked through your script and I'm impressed with what you've created.
I might test it someday, but then again, I'm not sure I want to "drive a truck" when my goal is to "drive a small car" 😁
One question: why use ping to monitor the status of a WG tunnel when there's a solid criterion: if the output of the "wg show wgcX" command doesn't include a line containing "latest handshake," then the tunnel is considered "dead"
 
Would it be too much to ask for a feature in amtm that would allow users to add one or two private scripts to the amtm menu?
I'm just throwing out an idea ;)
That is an idea I had in the back of my mind for a looong time. Let me ponder the technicalities for a while how to implement such a feature. Might be useful to developers of new scripts as well.
 
I've looked through your script and I'm impressed with what you've created.
I might test it someday, but then again, I'm not sure I want to "drive a truck" when my goal is to "drive a small car" 😁
Absolutely, totally understood. ;)

One question: why use ping to monitor the status of a WG tunnel when there's a solid criterion: if the output of the "wg show wgcX" command doesn't include a line containing "latest handshake," then the tunnel is considered "dead"
I use the wg show wgcX latest-handshakes to determine if the tunnel is up when the handshakes value is less than 200s. There could be instances where the tunnel hasn't gracefully crashed by itself, and handshakes could be > 200s... which is also why I'm using ping, incase the tunnel still manages to stay up between me and the provider, but there's something else amiss upstream. If one or more of these methods fail the smell test, then it just performs a reset.
 
amtm 6.3 is now available
  • Adds support for ms - ModSyslogUI add-on providing System Log page UI filtering capabilities by @kstamand. Welcome to amtm!
  • Automatically removes Download Master when installed after Entware installation on the router. They cannot be installed on the router at the same time. Removal is done either during (re)booting or when opening amtm.
  • Corrects ag AdGuardHome version URL, this was reverted by mistake.
  • Removed some obsolete code and changed wording.
 
It's been a busy script update day on the SNBForum. I'll now add the centerpiece of all that activity.

amtm 6.4 is now available
  • Suggests to also install disk-check dc script when fd formatting a disk. I forget who mentioned this to me, so thanks bud!
  • Some code format changes and removal of obsolete code in multiple files.
  • Adds au amtmupdate Automatic scripts update feature when using the u update function to directly update compatible third-party scripts. This feature is currently only available in the firmware version of amtm.
After updating amtm, run the u update function. This will populate the settings file with compatible third-party scripts.
If an update is available, amtm will prompt to update it directly.
Compatible scripts can then be seen with au, which also allows to disable this feature in amtm per script. Third-party scripts can also disable amtmupdate from their own scripts which will be shown in au.

I coordinated and developed this feature with the AMTM-OSR team. All of their scripts are already compatible. Many thanks to @ExtremeFiretop and @Martinski for the input, ideas and swift implementation.
My hope is that all amtm third-party scripts will add this amtmupdate feature. I will post a how to soon, with details for coders how to add it.
There are plans to completely automate amtmupdate with a cron job in a future amtm release.
 
Hello I try au and disable MerlinAU if try again au I expect enabled MerlinAU but still disabled
 

Attachments

  • Screenshot_2026-03-22-19-10-08-927_org.connectbot.jpg
    Screenshot_2026-03-22-19-10-08-927_org.connectbot.jpg
    41.3 KB · Views: 21
Hello I try au and disable MerlinAU if try again au I expect enabled MerlinAU but still disabled
As MerlinAU has it's own built-in script update setting I'd not worry about it. Likely the case is MerlinAU will be updated at some point to support au in amtm.
 
Hello I try au and disable MerlinAU if try again au I expect enabled MerlinAU but still disabled
With that blur I cannot read what script has amtmupdate disabled under „Scripts set as disabled in script“.
Every script listed under that header has set it as disabled in its setting. amtm cannot run updates on any of them.
It has to be enabled in that script. Diversion has a setting in d to do that. MerlinAU may have it auto-disabled when it’s own auto update function is active.
 
Likely the case is MerlinAU will be updated at some point to support au in amtm.
Posted earlier today:
MerlinAU 1.6.0 Released!

What's Changed/Fixed?:

PR: [ #549 ] - Support for New AMTM Functionality

  • Added code to support "Automatic Script Updates" via AMTM. This new functionality requires the latest AMTM version (yet to be released).
  • (Thanks @Martinski4GitHub )
(PS: See link for rest of MerlinAU 1.6.0 change log.)
 
Likely the case is MerlinAU will be updated at some point to support au in amtm.
amtm listed MerlinAU as supported in the screenshot.
 
Yes I updated to last version but if add to disabled there is no way remove from list by au
Which means that the auto-update function in MerlinAU is enabled. Leave it that way.
 

Latest threads

Support SNBForums w/ Amazon

If you'd like to support SNBForums, just use this link and buy anything on Amazon. Thanks!

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Back
Top