Hermes AI Agent
Getting started and operations guide for the AWS Marketplace direct AMI.
Attribution: This product independently packages Hermes Agent, developed by Nous Research under the MIT license. It does not claim authorship of the upstream project.
Costs and external services
The software charge is USD 0.02 per running instance-hour and includes a five-day free software trial for one instance. EC2, EBS, data transfer, Telegram connectivity, and third-party model-provider usage are separate. The trial automatically converts to hourly billing. Stop or terminate unused instances and review AWS Cost Explorer, EC2 service quotas, EBS quotas, and your model-provider quota.
Hermes requires outbound HTTPS access to Telegram and the selected model provider. Prepare a supported provider API key, the exact provider model ID, a Telegram bot token, your numeric Telegram user ID, an EC2 key pair, and a subnet with outbound HTTPS.
Launch and configure
- Subscribe to Hermes AI Agent in AWS Marketplace and choose the current direct AMI.
- Choose an EC2 key pair and allow inbound TCP 22 only from your trusted IPv4 CIDR, normally a
single address ending in
/32. No inbound Telegram port is required. - The Marketplace source AMI is unencrypted for ingestion compatibility. If encryption is required, enable EBS encryption by default in the launch Region before creating the instance, or configure an encrypted root volume in your approved launch automation.
- Connect as
ubuntu, enter a private root shell, and run the commands below. The prompts keep credentials out of shell history.
sudo -i
read -rsp "OpenAI API key: " LLM_API_KEY; echo
read -rsp "Telegram bot token: " BOT_TOKEN; echo
read -rp "Telegram user ID: " CUSTOMER_TELEGRAM_ID
export LLM_API_KEY BOT_TOKEN CUSTOMER_TELEGRAM_ID
export LLM_PROVIDER=openai
export LLM_MODEL=gpt-5
bash /opt/hermes/bin/provision-hermes.sh
unset LLM_API_KEY BOT_TOKEN CUSTOMER_TELEGRAM_ID
exit
For another supported provider, change LLM_PROVIDER and LLM_MODEL
together. Optional settings include LLM_BASE_URL, AGENT_NAME,
DM_POLICY, ADDITIONAL_USERS, and CUSTOMER_TIMEZONE.
Keep DM_POLICY=allowlist unless anyone who finds the bot should be allowed to consume
your provider quota.
Verify and use Telegram
hermes --version
sudo systemctl status hermes-gateway --no-pager
sudo tail -n 80 /var/log/deploy-ec2.log
sudo tail -n 80 /home/ubuntu/.hermes/logs/gateway.log
Confirm that EC2 status checks pass, the service is active, and the gateway log reports a
Telegram connection without provider, model, or token errors. Open the bot in Telegram, select
Start, and send a message. If Hermes suggests /sethome, run it once to
direct scheduled job results and cross-platform messages to that chat.
Scheduled jobs
Hermes includes a persistent cron scheduler. This example creates a harmless local job and lets the gateway ticker execute it every minute:
mkdir -p ~/.hermes/scripts
printf '#!/bin/bash\ndate -u\n' > ~/.hermes/scripts/time-check.sh
chmod 700 ~/.hermes/scripts/time-check.sh
hermes cron create "every 1m" --no-agent --script time-check.sh \
--deliver local --name time-check
hermes cron status
hermes cron list --all
hermes cron runs JOB_ID --limit 5
Replace JOB_ID with the ID printed by the create command. Use
hermes cron pause JOB_ID, hermes cron resume JOB_ID,
hermes cron run JOB_ID, and hermes cron remove JOB_ID to manage it.
Local results are stored beneath ~/.hermes/cron/output.
Security, backup, and rotation
| Item | Location or action |
|---|---|
| Credentials | /home/ubuntu/.hermes/.env, owned by ubuntu and mode 0600 |
| Configuration and state | /home/ubuntu/.hermes |
| Provisioning log | /var/log/deploy-ec2.log; secret values are not intentionally logged |
| Gateway service | /etc/systemd/system/hermes-gateway.service |
No proprietary data store is used. Back up only required files from
/home/ubuntu/.hermes through an approved encrypted process; backups containing
.env contain credentials. Rotate a provider key or Telegram token by running the
provisioner with new values, verifying the gateway, and then revoking the old credential.
Recovery and upgrades
Restart with sudo systemctl restart hermes-gateway and inspect with
sudo journalctl -u hermes-gateway -n 100 --no-pager. For recovery, launch the current
AMI, provision fresh credentials, and restore only the required protected state. A Marketplace
version uses a pinned Hermes release; upgrades require launching the newer version and validating
migrated state. There is no guaranteed in-place upgrade path. Browser automation dependencies are
not installed in the current image.
Support
For AMI packaging, hardening, deployment, or billing support, email info@softwaresushi.com. For upstream Hermes Agent issues, use the upstream issue tracker.