# Hermes Vpn: Hermes Agent plugin

> Named network exits for the agent's browser: ask it to browse from another country and it switches, then verifies by reading back the address the far end actually saw, never trusting a label.

Canonical: https://hermeswatcher.com/plugins/hermes-vpn  
Tier: Community  
Official page (Nous Research): https://hermes-agent.nousresearch.com/docs/plugins/hermes-vpn  
Last updated in catalog: 2026-10-23

Named network exits for the agent's browser: ask it to browse from another country and it switches, then verifies by reading back the address the far end actually saw, never trusting a label. Any VPN, WireGuard config or proxy works as a local exit; gluetun containers are discovered automatically and one can be brought up on demand. VPN credentials never reach the agent, the chat or the model.

## Good to know before installing

- a root-owned helper, installed out of band by the user through a narrow exact-path sudoers rule, is the only thing that reads the credentials and writes them to a root-only file (the agent names a country, never the key), and it pulls the gluetun image pinned by digest; the helper manages gluetun Docker containers, bringing exits up and down; the plugin registers a tool_execution middleware that holds browser_* calls when no verified exit is up (the kill switch, and optional cross-provider failover); it verifies exits by calling public IP-geolocation services (ipinfo, ifconfig.co, ip2location, cloudflare); credential entry is CLI-only, with no model tool for it -- `hermes vpn provider <name> --set` (interactive) or `--from-ref`, which resolves a WireGuard config from pass/gopass or a host file host-side and never returns it to the model; opening a .onion needs `hermes vpn allow-onion`, a terminal command a person runs (no model tool) that turns off Hermes's own internal-address check so onion names resolve and restarts Hermes, and the plugin never writes that setting itself; the active profile comes from the plugin context (ctx.profile_name), not a private core import.

From the plugin's catalog listing.

## How to install

1. Install it. Hermes asks for any API keys it needs, then asks whether to turn it on.

```bash
hermes plugins install hermes-vpn
```

2. Said no? Turn it on later:

```bash
hermes plugins enable hermes-vpn
```

3. Restart Hermes so it loads the plugin.

Some plugins also need a sign-in or settings: see the official page. Memory plugins ask whether to become your memory provider instead. Steps follow the official plugins guide: https://hermes-agent.nousresearch.com/docs/user-guide/features/plugins

## Facts

- Category: Web, research & browsing
- Maintained by: Maytrella007 (Community)
- Needs: No API keys declared
- Adds tools: `net_exits`, `net_use`, `net_where`, `net_harden`, `net_places`, `net_lock`, `net_failover`, `net_tor_connect`, `net_new_circuit`, `net_doctor`, `net_providers`, `net_provider_setup`, `net_open`, `net_close`
- Works on: linux
- Requires Hermes: `>=0.22.0`
- Version: 0.3.0
- In the catalog since: 2026-10-23

## Links

- [Full setup and settings (official page)](https://hermes-agent.nousresearch.com/docs/plugins/hermes-vpn)
- [Source code](https://github.com/Maytrella007/Hermes-VPN#readme)
- [All plugins](https://hermeswatcher.com/plugins.md)

---

HermesWatcher is an independent guide. It is not affiliated with or endorsed by Nous Research. The [official Hermes Agent documentation](https://hermes-agent.nousresearch.com/docs) and [repository](https://github.com/NousResearch/hermes-agent) from Nous Research are the authority; each page here lists the official sources it was written from. If this site and the official docs disagree, trust the official docs. Index for agents: https://hermeswatcher.com/llms.txt
