🇪🇺 Predictable egress for self-hosted agents

🇪🇺 Static IP for Hermes Agent

Hermes Agent runs on your own hardware, writes new skills while you sleep, and never stops calling APIs. Give every provider and tool request one predictable exit: two fixed static EU IPs.

~/.hermes/.env

# egress for every outbound call

HTTPS_PROXY=https://user:pass@eu-01.outboundgateway.com:8443

OPENROUTER_API_KEY=sk-or-...

ANTHROPIC_API_KEY=sk-ant-...

Self-hosted means the egress problem is yours

A managed agent platform worries about its own network. Hermes Agent on your VPS or homelab inherits your address situation, and an agent that learns new integrations on its own makes that situation worse fast.

Your box, your address

Hermes runs wherever you installed it: a homelab behind a residential line that gets a new IP on reconnect, or a cloud VM whose exit changes after a rebuild. The agent's identity to every external service shifts underneath it, and the skill that worked yesterday starts returning 403s.

Locked-down provider keys drift

You sensibly restricted the OPENROUTER_API_KEY or ANTHROPIC_API_KEY in ~/.hermes/.env to a specific allowlist. That protection only holds while the host's address stays inside it, which is precisely what a self-hosted box cannot promise.

The agent writes its own integrations

Hermes's learning loop turns experience into skills and refines them during use. Every generated skill can start calling an API you have never reviewed. You cannot pre-register destinations you do not know yet, but you can pin the source: one address pair that every skill, present and future, exits through.

It runs while you are away

Between the messaging gateway for Telegram and Discord, the web UI, and cron-style schedules, Hermes keeps working at 3am. A broken egress discovered hours later means a half-finished research thread and a stack of failed tool calls, not a convenient retry.

The Solution

Pin the source, not the destinations

Hermes Agent

skills, providers, gateway

HTTPS Proxy

(Static EU IP)

LLM providers + tool APIs

OpenRouter, Anthropic, and whatever it learns

Model calls, freshly generated skills, gateway traffic: everything Hermes sends outward crosses the same two European addresses. Whatever the loop dreams up next, the allowlist entry protecting it never goes stale.

One line in ~/.hermes/.env next to the keys you already keep there; standard tooling honours HTTPS_PROXY without code changes.
The two addresses spell each other, so provider calls keep flowing even while one node is serviced, and your 3am research thread does not notice.
Provider API keys and prompts stay encrypted in transit; the sealed session reaches its destination exactly as the agent sent it.

Why Hermes operators pick OutboundGateway

Built for exactly this setup

A proxy for self-hosted workloads that must look like one stable machine to the outside world, run by an EU company, not a scraping network.

Env-var native

Hermes already keeps its secrets in ~/.hermes/.env. The proxy lives in the same file, the same systemd unit, the same mental model.

European exits

Your agent's prompts and tool traffic leave from EU data centres, which keeps the data-path description simple under GDPR and the EU AI Act's transparency expectations.

Designed for

People who took the self-hosting deal: full control on your side, full responsibility for the network path.

Homelab self-hosters

Hermes on a home server or mini PC behind a dynamic residential address, where the router handing out a new IP quietly breaks every allowlist the agent relies on.

VPS operators

Agents on rented cloud instances that get rebuilt, migrated, or re-provisioned, dragging their egress address along with every change.

Always-on gateway users

Operators running the Telegram or Discord messaging gateway so the agent answers around the clock, where downtime is measured in missed conversations.

Security-minded tinkerers

Self-hosters who lock every API key to an allowlist and want their autonomous agent to respect the same discipline they apply to their own credentials.

Implementation

Hermes keeps its environment in ~/.hermes/.env. The proxy belongs there too.

One line next to your keys

Add HTTPS_PROXY to the same file that already holds OPENROUTER_API_KEY and ANTHROPIC_API_KEY. Processes that inherit the environment route their outbound calls through your fixed pair from that moment on.

# ~/.hermes/.env
HTTPS_PROXY=https://user:pass@eu-01.outboundgateway.com:8443
OPENROUTER_API_KEY=sk-or-...
ANTHROPIC_API_KEY=sk-ant-...

What the skills see

A skill the learning loop created might do nothing more exotic than an ordinary HTTP call. Standard tooling honours the variable on its own, as with Python's requests.

import requests

resp = requests.post(
    "https://openrouter.ai/api/v1/chat/completions",
    headers={"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"},
    json={"model": "...", "messages": messages},
    timeout=60,
)
# HTTPS_PROXY from the environment is honoured automatically

Keep it set for the service

For an always-on install, export the variable where the agent starts so restarts and reboots cannot lose it. Credentials stay in the env file, never in the unit.

# systemd unit for an always-on agent
[Service]
EnvironmentFile=/home/you/.hermes/.env
ExecStart=/usr/local/bin/hermes start
Restart=on-failure

Register the pair everywhere it matters

The account hands you two fixed European addresses that relieve each other on demand. Add both to the allowlists on your provider keys and to any firewall rules guarding the agent's tools: whichever node carries the traffic, the origin the services observe never wanders off that short list.

📖 Complete Documentation: For detailed examples, error handling, and advanced configurations, see the all guides.

European egress for autonomous workloads

An agent that acts in your name sends prompts, tool results, and sometimes personal data outward. Where that traffic exits is part of its compliance story.

GDPR-aware path

When skills touch personal data, egress from EU data centres keeps the processing location easy to state in your records instead of a question mark.

TLS straight through

The proxy passes the encrypted provider session along unread. Keys, prompts, and tool payloads stay sealed between your agent and the API they were addressed to.

What you get

A stable agent identity

Two European IPs covering for each other, so the address your agent presents stays put across reconnects and rebuilds.

One env var, no patches

Drop HTTPS_PROXY beside the provider keys and let standard tooling do the rest. No agent fork, no patched SDK.

Future-proof by design

Skills the loop invents tomorrow inherit the same exit, so new integrations are covered before they exist.

European data centres

Egress inside the Union for an AI workload, matching where the EU AI Act expects the operation to be accountable.

Dependable around the clock

Failover between the two nodes is part of the pair, keeping gateway sessions and scheduled jobs alive through maintenance.

Honest pricing

Starting from €19/month. Flexible plans for every scale. Cancel anytime.

Give your agent a permanent address

One env var in ~/.hermes/.env and every call your agent makes, today or after a hundred learned skills, leaves through the same two EU IPs.

Starting from €19/month. Flexible plans for every scale. Cancel anytime.

Frequently asked questions

Does Hermes Agent support a proxy?

Hermes keeps its configuration in ~/.hermes/.env and runs ordinary outbound HTTPS to its providers and tools, which is exactly the pattern a proxy variable fits. Export HTTPS_PROXY in the agent's environment (the env file, or a systemd EnvironmentFile) and standard HTTP tooling honours it without touching the agent itself.

What about skills the agent creates on its own?

That is the strongest argument for pinning the source rather than the destinations. The learning loop can draft a skill that talks to a service you have never configured, and you cannot allowlist what you cannot predict. With the proxy in the environment, any new skill inherits the same fixed exit automatically, so your provider key restrictions and firewall rules apply to everything the agent does, present and future.

Does this work with IP-restricted provider keys?

Yes. Both of your account's European addresses are stable, so you can list the pair on an OpenRouter or Anthropic key allowlist and leave it there. The two nodes back each other up, and because the addresses themselves never change, failover never takes the source outside the key's restrictions.

Agent running wild?

Happy to talk through your Hermes setup, your provider keys, and how a fixed EU pair keeps an autonomous agent inside your security rules.

Contact Our Founders →