My EC2 instance has a public IP address. It has zero inbound firewall rules. And yet I can reach my AI agent from my phone on Telegram, pull up a full web workspace in my browser, and run shell commands on it — all without opening a single port, without a VPN, and without SSH.
The latest version also splits storage deliberately: persistent agent data stays on EFS, while the Hermes install and Python venv moved to the root EBS volume. That change keeps pip install / hermes update I/O off EFS and brings always-on infra to a highly predictable ~$35/mo.
That's the setup this post is about.
What is Hermes Agent?
. The EC2 instance has an IAM role scoped to bedrock:InvokeModel, bedrock:Converse, and the streaming variants — on specific inference-profile and foundation-model ARNs only.
No API keys anywhere. No key rotation. If the instance is compromised, the blast radius is bounded to Bedrock inference on two specific models. The role cannot touch S3, DynamoDB, other accounts, or anything else.
Two models run in this stack:
| Model | Role | Why |
|---|---|---|
us.anthropic.claude-sonnet-4-6 | Primary (all main agent tasks) | Best reasoning for the price on Bedrock |
us.amazon.nova-lite-v1:0 | Auxiliary (5 background slots) | ~85× cheaper than Sonnet for web extraction, vision, summarisation |
The us. prefix is the cross-region inference profile — Bedrock routes to us-east-1, us-east-2, or us-west-2 automatically for throughput. You enable both models once in the , get your user ID via · AWS CDK (Python) · Amazon Bedrock · SSM Session Manager
SOCIAL SHARE CARD GENERATOR