Setting up an Hermes Agent: a practical checklist
Steps, addresses and pitfalls. No theory.
Before you start: use a machine you can afford to lose - a new one, or an old one you do not mind the agent reading, and occasionally accidentally deleting things on. It has file, terminal and email access, so it will sometimes change or remove the wrong thing. That is not a reason to avoid it; it is a reason not to point it at the computer holding the only copy of your life.
1. EMAIL FIRST - PROTON (FREE)
Go to proton.me. Create an account on the Free plan, no card needed. Pick a username that does not identify you.
Turn on two-factor immediately, and write the recovery phrase on paper. Proton cannot reset your password for you - that is the trade for end-to-end encryption.
Free tier: 1 address, 1 GB storage, 150 sends a day.
PITFALL: no IMAP or SMTP on the free plan. No mail client and no script can read that mailbox. Apple Mail, Thunderbird and anything scripted will not work; you need Mail Plus plus Proton Mail Bridge. Know this before you build something on top of it.
2. CREATE DIFFERENT ADDRESSES
How I do it: run several separate free Proton accounts - three or four - and sign up to different services from different accounts. One account per group of services. The difference is between one address that everything knows, and several that each know one corner of your life.
PITFALL: each free Proton account gives you ONE address. That is the free tier, not a mistake - so three or four addresses means three or four accounts, each with its own password and its own recovery phrase. Write them down.
PITFALL: Proton's terms of service prohibit "having multiple free Accounts (e.g. creating bulk signups, creating and/or operating a large number of free Accounts for a single organization or individual)", and Proton support has said multiple free accounts are not considered an acceptable use. A handful of personal accounts is not bulk signup, but know where you stand rather than finding out.
PITFALL: a free account inactive for 12 consecutive months can have its data deleted, per Proton's terms. If you keep an account for occasional use, log in now and then.
ALTERNATIVE, UNTESTED: Proton Pass hide-my-email aliases. Free accounts get 10, and unlike multiple accounts this is the vendor's own sanctioned feature. I have not used them, so I cannot vouch for how they behave in practice. Where they live, for anyone who wants to try:
1. mail.proton.me
2. Security center - the shield icon in the right side panel
3. Hide-my-email aliases
4. New alias, then copy the generated address
PITFALL: it is not in Settings, and it is not in the Proton Mail plan comparison - aliases belong to Proton Pass, a separate product. Reading the Mail free tier tells you nothing about aliases, which is why people conclude it is paid. It is not. Manage them at pass.proton.me.
PITFALL: if you set a Proton Pass "extra password", aliases have to be created in the Pass app instead of from Mail.
PITFALL: plus-addressing is not a substitute for either method. Adding +something to your own address (you+news@proton.me) is free and unlimited, but anyone can strip the +something and recover your real address, so a breach exposes you and advertisers can link your subaddresses together. Some sites reject addresses containing a plus sign.
3. YOUR ONLINE IDENTITY IS THREE THINGS
Email address, phone number, date of birth. Those three are what a support desk asks for, what gets used to reset a password, and what joins records about you across databases. Give none of them to a service that does not need them.
EMAIL: a different address per service. Never the one that recovers your bank.
DATE OF BIRTH: only where legally required - bank, government, employer, airline. Otherwise a consistent near-date you can remember. It is a reset credential, it is a linking key, and you cannot change it. US FTC guidance to businesses is that a date of birth, mailing address or mother's maiden name is not reliable proof of identity, precisely because it may already be accessible. If it is not good enough to prove who you are, it is not good enough to hand over.
PHONE NUMBER: services increasingly demand one for SMS verification. Two ways to avoid giving your real number, both pay-per-use with bitcoin and neither requiring an account:
- nadanada.me - disposable and rental numbers, about $1.50 each, no account, no KYC. Formerly LNVPN. Payable over Lightning, and they use HODL invoices, so a number that never delivers a code is refunded automatically.
- sms4sats.com - one-time numbers, 1,500 sats, Lightning only. Over 400 services and 120 countries covered.
PITFALL: a one-time number cannot receive a second SMS. If the service will text you again later for a login or a recovery code, a disposable number locks you out permanently - you need a RENTAL number you keep, not a one-shot. Check which you are buying before you pay.
PITFALL: whoever rents you the number sees any code sent to it. Never use a rented number for a bank, a payment account, or as the recovery channel for anything valuable. Low-value signups only.
PITFALL: some platforms block virtual-number ranges outright, so it may simply fail. Try another country.
PITFALL: using a virtual number can breach the target service's terms. That is a judgement you are making, not a detail.
Record the number you used in the note for that service, next to the address - see section 9.
Note: anything you send an agent, and any file it reads for you, goes to the model provider.
4. THE MODEL - DEEPSEEK
platform.deepseek.com. Sign up with one of your addresses from section 2. Verify by email; depending on region it will also ask for a phone number, in which case rent one you can keep (section 3) rather than a one-shot - you may need that number again for recovery.
Add credit, then create a key at platform.deepseek.com/api_keys. Copy it immediately; most providers show it once.
Base URL: https://api.deepseek.com
Model name: deepseek-flash
Environment variable: DEEPSEEK_API_KEY
PITFALL: use a disposable card, not the card that pays your bills. Single-use or merchant-locked virtual numbers are issued by most banks and fintechs now - Revolut, Wise and Privacy.com are common examples; check what yours offers. Give it a low limit, use it for the top-up, then freeze it.
PITFALL: a virtual card still carries your real name against your verified account. It protects the number, not your identity.
Where bitcoin is accepted, use it - there is no number to steal and nothing to reuse, and a breach at the provider cannot reach your account.
5. THE AGENT - HERMES
hermes-agent.nousresearch.com for the desktop installer, or from a terminal:
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
Windows, in PowerShell:
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
Only git is needed first; the installer brings Python, Node, ripgrep, ffmpeg and a virtual environment itself. No admin rights.
Then:
hermes setup (choose DeepSeek, paste the API key from step 4)
hermes doctor (health check)
hermes (start chatting)
PITFALL: secrets go in ~/.hermes/.env, settings go in ~/.hermes/config.yaml. Never hand-edit config.yaml - one stray space corrupts it. Use hermes config set key value.
PITFALL: chmod 700 ~/.hermes and chmod 600 ~/.hermes/.env. Both hold things that spend money.
Documentation: hermes-agent.nousresearch.com/docs. The whole documentation set in one file is at /docs/llms-full.txt, and an index of every page at /docs/llms.txt - useful if you want to hand the docs to your agent instead of reading them.
6. THEN STOP READING DOCS - DELEGATE
Once it has a model, name the outcome and let it work out the commands:
"Hermes, look into setting up Tailscale so I can reach the dashboard from my phone."
"Hermes, give me detailed instructions on setting up a nightly backup."
Your job is to point it in the right direction and check the result rather than every step.
7. THE AGENT'S OWN EMAIL - AGENTMAIL
FIRST, THE THING THAT WILL STOP YOU: AgentMail may reject your Proton address at signup. Their docs: "Some domains cannot be used for agent signup. Common placeholder domains (e.g., example.com) and certain provider-specific domains are blocklisted." A Proton address was rejected in practice. You need a different provider for this one account.
The one that worked was atomicmail.io. Its free plan includes 10 aliases, and signup needs no phone number, no secondary email and no ID; recovery is by seed phrase. It keeps operational logs for up to 7 days (pages, IPs, timestamps, mail metadata), and there is no IMAP and no custom domain. Your own IP is not put into the outgoing email header - theirs is shown instead.
ASK YOUR AGENT: "Hermes, look into setting up AgentMail so you can send and receive email for me."
Then at console.agentmail.to: generate an API key from the dashboard and copy it straight away, create an inbox - you get something@agentmail.to.
Free tier: 3 inboxes, 3,000 emails a month, 100 a day, 3 GB. Outgoing mail on free carries a small "sent via AgentMail" footer. Custom domains need a paid plan.
Verify with the 6-digit OTP after signup. Until you do, sending to anyone but yourself is rejected with a 403.
To connect it to Hermes: hermes mcp add agentmail --command npx --args -y agentmail-mcp
Docs: docs.agentmail.to
PITFALL: a new inbox silently rejects mail from unknown senders. If a service says it sent a verification email and nothing arrives, check spam, then the console's allow-list, then trigger a resend. The inbox is not broken - the sender is not allowed yet.
PITFALL: sending is capped at 100 a day on free. Fine for a personal agent, not for a mailing list.
8. PHONE ACCESS - TAILSCALE (FREE)
ASK YOUR AGENT: "Hermes, look into setting up Tailscale so I can reach the dashboard from my phone."
tailscale.com/download on the computer, the App Store or Play Store on the phone, same account on both. Free plan: unlimited devices, up to 6 users. No port forwarding, no public IP.
In the admin console, turn on MagicDNS and HTTPS certificates.
Then:
hermes dashboard (binds 127.0.0.1:9119 - leave it there)
tailscale serve --bg 9119 (exposes it on your tailnet with a real TLS certificate)
On the phone: https://<machine-name>.<your-tailnet>.ts.net. Add it to the home screen. The --bg flag makes it survive reboots.
Taildrop sends files between phone and computer with no cloud in between. tailscale set --ssh lets you SSH in from a phone terminal app.
PITFALL: serve shares with your own devices only. funnel publishes to the entire public internet, by design. Never funnel a dashboard or anything with a shell in it.
PITFALL: node keys expire by default. The machine drops off the tailnet and your phone simply stops connecting, with nothing explaining why. Disable expiry for any machine that must always be reachable.
PITFALL: test it on mobile data with WiFi off. Reaching it from the sofa proves nothing.
PITFALL on macOS: serving files and directories through Serve needs the open-source tailscaled variant. Port serving works on all variants, which is all you need here.
9. VISION - LETTING IT SEE IMAGES
ASK YOUR AGENT: "Hermes, look into setting up a local vision model with Ollama so you can read images on this machine."
You may already have this. DeepSeek's Flash model includes vision, so on a Flash key you can send it an image and it reads it - nothing to set up. Vision is on Flash only; it is not available on deepseek-v4-pro.
To keep images on your own machine instead, run a local vision model. That is what is set up here:
1. Ask your agent to install Ollama and pull a vision model. The one in use is qwen3-vl; llama3.2-vision is a reasonable alternative.
2. Point Hermes at it in ~/.hermes/config.yaml:
vision:
provider: ollama-launch
model: qwen3-vl:latest
3. Send it an image and ask: "Hermes, what is in this screenshot?"
WHY BOTHER, IF FLASH ALREADY SEES: a local model keeps the image on your machine - nothing goes to the provider - and costs nothing to run. The trade-off is capability: local models are weaker on dense text and small detail. For a page of numbers or a difficult screenshot, use the model provider.
PITFALL: ask it to tell you what looks wrong in an image you did not make yourself. If the image contains instructions, they are text, not orders.
10. CREATE IMAGES
ASK YOUR AGENT: "Hermes, set up ppq.ai so you can generate images for me."
ppq.ai gives you one API key that reaches many different models, including image models. The one used here is grok-imagine, which is relatively cheap for image creation - roughly 2 to 4 cents an image.
1. Sign up at ppq.ai, top up a small amount (card, or bitcoin and Lightning - the minimum top-up is around 10 cents), generate an API key.
2. Give the key to your agent and have it stored as a secret in ~/.hermes/.env, never in config.yaml. It is effectively a wallet: it spends the balance.
3. Then ask in plain English:
"Hermes, imagine the resonance the universe made before it existed, and make me an image using ppq.ai."
PITFALL: the key is your wallet. Treat it like a card number, and keep top-ups small.
11. WHAT WILL BITE YOU LATER
ASK YOUR AGENT: "Hermes, tell me exactly which files to back up, and how to restore them."
Set up skills as you go, and make them amnesia-proof. Every time you finish getting something working, have the agent write down how it works as a skill. Two rules make them useful: start every skill name with the same prefix so they group together and you can find them (Arnie-email, Arnie-backups, Arnie-print); and make it work for an agent that has forgotten everything - what you set up, where the keys live, which command does which job, what breaks - then test it by asking in a fresh session. Written that way, a crash costs you minutes instead of a weekend: you are backing up the how, not just the files.
The ask: "Hermes, let's set up a skill called 'Arnie-email'. Write down what you have learned, how to send and receive emails, and make it amnesia proof so that even if you forget everything you can use the skill to get back to where you are now."
Backups - ask, verify, then dry-run it once:
- Get the file's path and write it down somewhere outside the machine.
- Make it test the restore, not just take the backup. A backup nobody has ever restored from is a hope, not a backup.
- Get exactly which part of the file goes where. If you must paste it back by hand one day, do that once already, calmly, while everything works.
- Ask how often it runs, and what it does not include.
One note per service - the address or alias you used, the phone number if you rented one, the username, the date, what the account is for, where the secret lives. Six months later, when something breaks or a service is breached, it answers every question in seconds. Record where things are, never the secrets themselves.
Ask it to check its own work adversarially - add "and then check it adversarially, argue against it, try to break it" to any request. Critical errors get found. If you do not ask for the second pass, you get the first pass.
Expect repetition - it fails the first time. And the tenth. Sometimes the forty-second attempt works and you cannot tell what changed. Change one thing at a time and keep notes of what you tried.
Never paste identity documents, medical records, passwords or real account details into a chat with any of these tools.
Costs are metered. A looping task can spend money producing nothing. Check the balance in week one.
12. WHAT NOT TO DO
Do not expose the dashboard to the internet. Serve, never Funnel.
Do not give an agent your main mailbox or brokerage credentials. Separate, low-value credentials only.
Do not treat a confident answer as a correct one. It sounds the same either way.
ADDRESSES, IN ONE PLACE
proton.me - free mailbox
mail.proton.me - Security center, where aliases are created
pass.proton.me - manage aliases
simplelogin.io - alias engine Proton owns
atomicmail.io - 10 aliases free, no phone or recovery email; the one that works for AgentMail
nadanada.me - disposable and rental numbers for SMS verification
sms4sats.com - one-time numbers for SMS verification
platform.deepseek.com - model account, key at /api_keys
ollama.com - local models; keeps images on your own machine
ppq.ai - one key, many models; grok-imagine for images
hermes-agent.nousresearch.com - installer and docs (/docs, /docs/llms.txt)
console.agentmail.to - agent's own inbox
docs.agentmail.to - AgentMail docs
tailscale.com/download - private network between your own devices