Deploy a Hermes Personal AI Assistant
Deploy a 24/7 AI assistant on a cloud server, reachable via Telegram.
Introduction
30 Second Summary
Imagine having a personal assistant you can message at any hour. It never sleeps, it remembers your past conversations, and every morning it sends you a custom briefing before you even ask.
In this project, you will deploy Hermes, a personal AI agent framework, on a cloud server and connect it to Telegram. You will design its personality, give it persistent memory, and automate a daily morning briefing delivered straight to your phone.
What You'll Build
You message your AI assistant on Telegram from your phone, it responds with the personality you crafted, and every morning it proactively delivers a briefing to your chat without you asking.
By the end of this project, you'll have:
- Message your assistant from your phone via Telegram and get back intelligent responses shaped by a custom personality you designed.
- Close your laptop, leave the house, and still chat with your agent because it runs 24/7 on its own server and survives reboots.
- Wake up to an automated morning briefing that lands in your Telegram at the time you choose, without you lifting a finger.
- Secret Mission: Give your agent its own email address via AgentMail MCP, so it can send and receive emails on your behalf.
Are there any prerequisites?
You will need a DigitalOcean account (a credit card is required for the $12/month server), a Telegram account on your phone, and basic comfort with terminal commands. No prior AI or cloud deployment experience is needed.
Before We Start
Before We Start...
Before we dive in, let's lock in what you're about to build and why it matters to you. This is the moment you commit to the outcome so every step that follows has a clear purpose.
Provision Your Cloud Server and Install Hermes
Your AI assistant needs a home that never sleeps. Your laptop shuts down, loses WiFi, and restarts for updates. None of that works for an assistant you want available at any hour.
A cloud server stays on 24/7 with its own public IP address, so your assistant is always reachable. In this step, you'll provision a DigitalOcean server, install Hermes Agent on it, and connect it to Nous Portal for AI model access.
In this step, get ready to:
- Provision a DigitalOcean Droplet running Ubuntu 24.04 LTS.
- Install Hermes Agent and its prerequisites on the server.
- Connect to Nous Portal and confirm your first AI-powered response.
Create a DigitalOcean Droplet
A Droplet is DigitalOcean's name for a virtual private server. It's a machine in the cloud that runs continuously, with its own IP address you can connect to from anywhere.
- Log in to your DigitalOcean account at cloud.digitalocean.com
- Click the green Create button at the top of the page.
- In the create menu, click Droplet to open the Droplet create page.
Now configure your Droplet with these settings:
- In Choose Region, select a datacenter close to your physical location.
- In Choose an Image, select Ubuntu under the OS tab, then pick 24.04 (LTS).
- In Choose Size, select Basic. Then select the Regular CPU option at $12/mo (2 GiB RAM / 1 vCPU / 50 GiB SSD).
- In Choose Authentication Method, select SSH Key.
✔️ I already have an SSH key on my account
- Select your existing key from the list by clicking its name.
ⓧ I need to add an SSH key
- Click Add SSH Key to open the New SSH key window.
- Open a terminal on your local machine (not the server) and check if you already have a key by running:
cat ~/.ssh/id_ed25519.pub
If you see a long string starting with ssh-ed25519, copy it. If you get a "No such file" error, generate a new key:
ssh-keygen -t ed25519
- Press Enter to accept the default file location.
- Press Enter twice to skip the passphrase (or enter one if you prefer).
- Copy your new public key by running:
cat ~/.ssh/id_ed25519.pub
- Paste the full key into the Public Key field in DigitalOcean.
- Enter a name in the Key Name field (e.g., my-laptop).
- Click Add SSH Key.
- Scroll to the bottom and click Create Droplet.
DigitalOcean takes about 30 seconds to provision your server. Once it's ready, the Control Panel displays your Droplet's public IPv4 address. Copy this address for the next substep.
What is a Droplet?
A Droplet is a Linux-based virtual machine that runs on DigitalOcean's infrastructure. It behaves like a dedicated computer, but it lives in a datacenter and stays powered on until you explicitly shut it down.
The $12/month plan gives you enough resources to run Hermes Agent comfortably. You're billed hourly at $0.01786/hr, so you only pay for the time the Droplet exists.
Don't see the $12/mo option?
Make sure you selected Basic (not Premium or General Purpose) and the Regular CPU type. The $12/mo tier shows 2 GiB RAM and 1 vCPU.
Help me find the right Droplet size
Connect via SSH and install Hermes Agent
Your Droplet is running, but it's an empty server. You need to connect to it and install the software that turns it into an AI assistant.
- Open a terminal on your local machine. Connect to your Droplet by running:
ssh root@[[DROPLET_IP="your Droplet's public IPv4 address"]]
If this is your first time connecting, you'll see a fingerprint confirmation prompt. Type yes and press Enter. You should land on a command prompt that looks like root@your-droplet-name:~#.
Connection refused or timed out?
Wait 30-60 seconds after Droplet creation for the server to fully boot. If you still cannot connect, double-check that the IP address matches what DigitalOcean shows on your Droplets dashboard.
Help me troubleshoot my SSH connection
- Install the prerequisite packages that Hermes needs by running:
apt update && apt install -y git curl xz-utils
What does this command do?
This updates the package list on your fresh Ubuntu server, then installs three tools: git (for downloading code), curl (for fetching files from the internet), and xz-utils (for decompressing archives). The Hermes installer handles everything else (Python, Node.js, ripgrep, ffmpeg) automatically.
You should see package installation output ending with a success summary. Now install Hermes Agent itself.
- Run the official Hermes installer:
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
What does this installer do?
The installer downloads and sets up the Hermes Agent binary along with its runtime dependencies (Python, Node.js, and several helper tools). It adds Hermes to your PATH via ~/.bashrc so you can run it from anywhere on this server.
This takes 2-3 minutes depending on your server's internet speed. Wait for it to finish completely.
- Reload your shell so the new hermes command is available:
source ~/.bashrc
- Verify Hermes is installed by running:
hermes --version
You should see a version number printed to the terminal. This confirms Hermes Agent is installed and on your PATH.
Seeing "command not found"?
Make sure you ran source ~/.bashrc after the installer finished. If it still fails, try opening a new SSH session (disconnect and reconnect) to pick up the updated PATH.
Help me fix my Hermes installation
Connect to Nous Portal and test your agent
Hermes Agent is installed, but it needs an AI model to power its responses. Nous Portal provides access to hundreds of models, including a free one that works perfectly for a personal assistant.
- Run the portal setup command:
hermes setup --portal
What happens during portal setup?
This command opens an OAuth login flow in your terminal. Since you're on a headless server (no browser), it provides a URL and a code you can open on any device. Follow the on-screen instructions to create a free Nous Portal account (or log in if you already have one) and authorize Hermes.
When prompted to select a model, choose Laguna S 2.1 (by Poolside). This model costs $0.00 per 1M tokens on the free plan.
- Complete the OAuth flow using the URL displayed in your terminal.
- When prompted for a model, select Laguna S 2.1.
Already have ChatGPT Plus or Pro?
If you have a ChatGPT Plus or Pro subscription, you can connect it to Hermes for free instead of using Nous Portal. Run hermes model, select OpenAI Codex as the provider, and sign in through your browser. Hermes uses your existing subscription directly. No separate API key or extra billing required.
Before you run your first test, take a moment to predict: what kind of response do you think you'll get from a fresh AI agent with no personality or memory configured?
- Test that everything works by running:
hermes chat -q "What can you help me with?"
You should see an intelligent response describing things the agent can help with. This confirms your server, Hermes Agent, and Nous Portal are all connected and working together.
Getting an authentication or model error?
Re-run hermes setup --portal and ensure you completed the OAuth flow fully (the terminal should confirm "Setup complete" or similar). Make sure you selected a free model like Laguna S 2.1.
Help me connect Hermes to Nous Portal
Your cloud server is alive, Hermes is installed, and your agent already responds to questions. Next up, you'll connect it to Telegram so you can chat with it from your phone instead of over SSH.
Connect Telegram and Talk to Your Agent
Your agent works, but only over SSH. That means you have to open a terminal and connect to your server every time you want to ask it something.
Telegram solves this. Once connected, you can message your agent from your phone anywhere in the world. In this step, you'll create a Telegram bot and wire it to Hermes so you can chat with your assistant on the go.
In this step, get ready to:
- Create a Telegram bot and obtain your bot token.
- Configure the Hermes gateway to use Telegram.
- Start the gateway and send your first message from your phone.
Create a Telegram bot via BotFather
Every Telegram bot needs an identity registered through @BotFather, Telegram's official bot-management tool. BotFather generates a unique authentication token that lets external services (like Hermes) send and receive messages through your bot.
- Open Telegram on your phone.
- Tap the search bar and search for @BotFather.
- Open the chat with @BotFather (it has a blue verified checkmark).
- Tap the blue Create a new bot button to start the bot creation flow.
- When prompted for a name, enter a display name for your assistant (e.g. My Hermes Assistant).
- When prompted for a username, enter a unique name ending in _bot (e.g. myhermes_bot). Usernames are 5-32 characters and can only include Latin letters, numbers, and underscores.
- BotFather replies with a Bot Token. Copy this token and save it somewhere safe.
What is a bot token?
The token is your bot's authentication credential. Anyone with this token has full control over the bot, so treat it like a password. You'll paste it into Hermes in the next substep.
Username already taken?
Telegram bot usernames must be globally unique. If BotFather says the name is occupied, try a more specific variation. The username must be 5-32 characters, contain only Latin letters, numbers, and underscores, and end with bot.
Help me pick a unique Telegram bot username.
Get your Telegram user ID
Hermes needs your numeric Telegram user ID to know which messages to respond to. This keeps your bot private so only you can talk to it.
- In Telegram, tap the search bar and type @userinfobot.
- Select userinfobot from the results and tap Start.
- The bot instantly replies with your numeric user ID (a number like 123456789).
- Copy this number and save it alongside your bot token.
Why a numeric ID instead of a username?
Telegram usernames can change, but your numeric ID is permanent. Hermes uses this stable identifier to ensure only you are authorized to interact with your bot.
Configure and start the Hermes gateway
Now you'll connect the dots. The Hermes gateway setup wizard stores your bot token and allowed user ID, then the gateway starts listening for Telegram messages.
- Switch back to your SSH terminal on the server.
- Run the gateway setup wizard:
hermes gateway setup
What will the wizard ask?
This is an interactive prompt. It will ask you to select a platform (choose Telegram), paste your bot token, and enter your numeric user ID as an allowed user. Follow the on-screen prompts and paste the values you saved earlier.
- Select Telegram when prompted for the platform.
- Paste your bot token when prompted.
- Enter your numeric user ID when asked for allowed users.
The wizard saves your credentials and confirms the configuration.
- Start the gateway in foreground mode by running:
hermes gateway
What does this command do?
This starts the Telegram gateway process in the foreground. It connects to Telegram's servers and begins polling for incoming messages. The terminal will stay occupied by this process. Press Ctrl+C to stop it later.
You should see log output indicating the gateway has connected and is listening.
Before you send your first message, what do you think will happen? Will the bot respond instantly, or will there be a noticeable delay?
- Open Telegram on your phone.
- Search for your bot by its username (the one ending in bot that you chose earlier).
- Tap Start to begin a conversation.
- Type a message like Hello, who are you? and send it.
Within a few seconds, your bot replies with an intelligent response. You just talked to your own AI agent from your phone.
Bot not responding?
Check your SSH terminal. If the gateway crashed or shows an error, the most common causes are:
- Wrong bot token. Double check you copied the full token from BotFather (it includes a colon in the middle).
- Wrong user ID. Make sure you entered the numeric ID from @userinfobot, not your @username.
- Gateway not running. If you accidentally pressed Ctrl+C, run hermes gateway again.
My Hermes Telegram bot isn't responding to messages.
Your agent is now reachable from your phone. Next up, you'll make it survive reboots and SSH disconnections so it never goes offline.
Make Your Agent Run Forever
In the last step, your bot worked perfectly while the gateway ran in the foreground. The moment you pressed Ctrl+C or your SSH session dropped, the bot went silent.
That is the gap a system service closes. A systemd service runs independently of your terminal session, starts automatically on boot, and restarts itself if it crashes. In this step, you will make the gateway permanent and lock down the server so only SSH can reach it.
In this step, get ready to:
- Install the Hermes gateway as a boot-time system service.
- Lock down the server with UFW firewall rules.
- Verify the bot survives an SSH disconnect.
Install the gateway as a system service
Right now, the gateway only runs when you manually start it. A systemd service wraps the gateway process so the operating system manages it for you.
- In your SSH session on the Droplet, install the gateway as a system service by running this command:
sudo hermes gateway install --system
- Start the service by running:
sudo hermes gateway start --system
What do these commands do?
The install --system command creates a systemd unit file that tells your server how to run the gateway at boot. The start --system command activates that service immediately without waiting for a reboot.
- Confirm the service is running by checking its status:
sudo hermes gateway status --system
You should see active (running) in the output.
Status shows inactive or failed?
- Make sure you ran the start command after the install command. Installing does not automatically start the service.
- Check the logs for errors by running journalctl -u hermes-gateway -f and look for connection or credential issues.
- Confirm your Telegram bot token is still valid. If BotFather revoked it, the gateway cannot connect.
Help me debug my Hermes gateway service status
Lock down the server with UFW
Your Droplet currently accepts connections on every port. The Telegram gateway only needs outbound HTTPS (it polls the Telegram API), so the only inbound port you need open is SSH.
- Allow SSH connections through the firewall by running:
ufw allow OpenSSH
- Enable the firewall by running:
ufw enable
What will I see?
UFW will display Command may disrupt existing ssh connections. Proceed with operation (y|n)? because enabling a firewall over SSH is risky if you forgot to allow SSH first. You already allowed SSH in the previous command, so type y and press Enter.
After confirming, you will see Firewall is active and enabled on system startup. Your SSH session stays connected.
- Verify the firewall rules by running:
ufw status
You should see OpenSSH listed as ALLOW from Anywhere, with the status showing active.
Why is SSH the only inbound rule?
The Hermes Telegram gateway uses outbound HTTPS to poll the Telegram Bot API for new messages. It does not listen on any inbound port. That means no one on the internet can reach your server except through SSH.
Locked out of SSH?
- If you enabled UFW before allowing SSH, you lost access. Open the DigitalOcean console (Droplet page, then **Access**, then **Launch Droplet Console**) and run ufw allow OpenSSH followed by ufw enable from there.
- Help me regain SSH access after UFW locked me out
Verify the bot survives a disconnect
This is the real test. If the system service is working correctly, your bot keeps responding even when you are not connected to the server.
- Close your SSH session by typing:
exit
- Wait 30 seconds.
- Open Telegram on your phone and send your bot a message.
Before you check, predict: will the bot respond this time, even though you closed the SSH session?
Your bot responds. The system service keeps the gateway alive independently of your terminal.
- Reconnect to your server by running:
ssh root@[[DROPLET_IP="your Droplet IP address"]]
- View the live gateway logs by running:
journalctl -u hermes-gateway -f
You should see log entries showing the message you just sent from Telegram being processed. Press Ctrl+C to stop watching logs.
- Confirm the service status one more time by running:
sudo hermes gateway status --system
You should see active (running) confirming the gateway survived the disconnect.
Bot did not respond after disconnect?
- Reconnect and check the service status with sudo hermes gateway status --system. If it shows inactive, run sudo hermes gateway start --system and check the logs for errors.
- Make sure you ran the install --system step, not just start --system. The install step is what creates the boot-time service definition.
- Help me figure out why my bot stopped responding after SSH disconnect
Your agent is now always on. It survives reboots, disconnections, and crashes. Next up, you will give it a personality that makes it truly yours.
Design Your Agent's Personality
Your agent is online 24/7, survives reboots, and stays reachable from Telegram no matter what happens to your SSH session.
But right now it sounds generic. Every response could have come from any AI assistant. Hermes uses a file called SOUL.md to define your agent's voice, values, and personality at the deepest level of its system prompt. This is what makes it yours.
In this step, get ready to:
- Create a SOUL.md personality file that defines your agent's name, traits, communication style, and values.
- Test the personality via Telegram to confirm your agent responds in character.
Create the SOUL.md identity file
SOUL.md is a Markdown file that lives in your Hermes data directory. It gets injected into the system prompt for every conversation, shaping how your agent thinks, speaks, and responds to you.
- In your SSH session, open a new file at ~/.hermes/SOUL.md by running:
nano ~/.hermes/SOUL.md
This opens the nano text editor with a blank file. You will paste your agent's entire identity definition here.
- Before you paste, choose a name for your assistant: your agent's name
- Paste the following identity definition into the editor:
# [[AGENT_NAME="your agent's name"]]
You are [[AGENT_NAME="your agent's name"]], a sharp and resourceful personal AI assistant.
## Personality
- Direct and efficient. No filler, no fluff.
- Warm but professional. You respect the user's time.
- Proactive. If you notice something useful, mention it.
- Honest. If you do not know something or cannot do something, say so plainly.
## Communication Style
- Use short paragraphs and bullet points for clarity.
- Lead with the most important information.
- Match the user's energy. Casual messages get casual replies. Serious questions get thorough answers.
## Values
- Accuracy over speed. Never guess when you can verify.
- Privacy. Never share conversation details externally.
- Growth. Actively learn the user's preferences and adapt over time.
## How You Address the User
- Use their first name when you know it, otherwise "you" is fine.
- Never use "Dear user" or robotic greetings.
What does this file do?
Each section shapes a different dimension of your agent's behaviour:
- The opening line (You are [name]...) sets the agent's self-concept and anchors its identity.
- Personality defines character traits like directness and honesty.
- Communication Style controls formatting and tone-matching behaviour.
- Values sets priorities the agent weighs when deciding how to respond.
- How You Address the User prevents robotic greetings and keeps the tone natural.
- Save the file by pressing Ctrl+X, then Y to confirm, then Enter to write.
- Confirm the file was created by running:
cat ~/.hermes/SOUL.md
You should see the full identity definition you just pasted printed back to the terminal.
File is empty or not found?
- If cat shows nothing, you may have exited nano without saving. Re-run nano ~/.hermes/SOUL.md and paste the content again. Press Ctrl+X, then Y, then Enter to save.
- Make sure the path is exactly ~/.hermes/SOUL.md with a capital S, O, U, L. Linux file names are case-sensitive.
Still stuck? Help me create SOUL.md in nano on my server.
✔️ Awesome, I've got everything!
Great. Double check you saved the file and the cat output matches what you pasted.
ⓧ I'd like to double check the full code
Here is the complete ~/.hermes/SOUL.md file. Compare it against what cat ~/.hermes/SOUL.md prints on your server:
# [[AGENT_NAME="your agent's name"]]
You are [[AGENT_NAME="your agent's name"]], a sharp and resourceful personal AI assistant.
## Personality
- Direct and efficient. No filler, no fluff.
- Warm but professional. You respect the user's time.
- Proactive. If you notice something useful, mention it.
- Honest. If you do not know something or cannot do something, say so plainly.
## Communication Style
- Use short paragraphs and bullet points for clarity.
- Lead with the most important information.
- Match the user's energy. Casual messages get casual replies. Serious questions get thorough answers.
## Values
- Accuracy over speed. Never guess when you can verify.
- Privacy. Never share conversation details externally.
- Growth. Actively learn the user's preferences and adapt over time.
## How You Address the User
- Use their first name when you know it, otherwise "you" is fine.
- Never use "Dear user" or robotic greetings.
Test your agent's personality via Telegram
The gateway may need a restart for SOUL.md changes to take effect in existing sessions. Restart it now to be sure.
- Restart the gateway service by running:
sudo hermes gateway restart --system
Before you test, think about what you expect. If you ask your bot "How would you describe yourself?" what personality traits should come through based on what you wrote in SOUL.md?
- Open Telegram on your phone.
- Find your bot and send it a message that would reveal personality. Try something like: How would you describe yourself? or What's your communication style?
Your bot should now respond with the personality and style you defined. Look for traits like directness, bullet-point formatting, and the warm-but-professional tone from your SOUL.md.
- Send a few more messages to see the character come through consistently. Try a casual message and a serious question to test the tone-matching.
Bot still sounds generic?
- Confirm the file path is correct by running ls ~/.hermes/SOUL.md. If it does not exist, re-create it following the steps above.
- Try sending /new to your bot in Telegram to start a fresh session. Old sessions may cache the previous system prompt.
- Check the gateway is running with sudo hermes gateway status --system. If it shows inactive, start it again with sudo hermes gateway start --system.
My bot is not picking up the personality from SOUL.md.
Your agent now has a distinct identity that shapes every conversation. Next up, you will make it proactive by scheduling a daily morning briefing that lands in your Telegram automatically.
Automate a Daily Morning Briefing
Your agent has a personality, runs 24/7, and responds whenever you message it. That is reactive. You ask, it answers.
A truly useful assistant does not wait to be asked. In this step, you will schedule a cron job that makes your agent autonomous. Every morning, it delivers a briefing to your Telegram before you even pick up your phone.
In this step, get ready to:
- Design a self-contained briefing prompt for your agent.
- Create a scheduled cron job that delivers the briefing to Telegram every morning.
- Test the cron job manually and verify the schedule is active.
Design a self-contained briefing prompt
Hermes cron jobs run in fresh agent sessions with no memory of prior conversations. The prompt you write must be completely self-contained. It cannot reference earlier chats or assume context.
Why must the prompt be self-contained?
Each cron job spins up a fresh session. Your agent has no memory of what you discussed yesterday or what it delivered last time. Everything it needs to know must be inside the prompt itself.
Think of it like handing instructions to a stranger. Be explicit about what you want, in what format, and what to do if something is unavailable.
- Decide what you want in your morning briefing. The outline below covers: top 3 world news headlines, a motivational quote, and a calendar reminder.
- You can customize this to anything you like. Weather, stock prices, task reminders. Just make sure the prompt includes all the context the agent needs.
Create the cron job via Telegram
Hermes supports scheduling directly from the Telegram chat using slash commands. You will send a single message that tells your agent what to do, when to do it, and where to deliver the result.
- Open Telegram on your phone and navigate to your bot's chat.
- Send the following message to create your morning briefing cron job:
/cron add "0 7 * * *" "You are delivering a morning briefing. Summarize today's top 3 world news headlines, give a motivational quote, and remind me to check my calendar. Keep it concise and energetic. If you cannot find real news, say so honestly." --name "Morning Briefing" --deliver telegram
What does this command do?
- /cron add tells Hermes to create a new scheduled job.
- "0 7 * * *" is a standard cron expression meaning "at 7:00 AM every day" in the server's timezone.
- The quoted text after the schedule is the full prompt your agent receives each time the job fires.
- --name "Morning Briefing" gives the job a human-readable name you can reference later.
- --deliver telegram routes the output to your Telegram chat instead of saving it locally.
Adjust the time to your schedule
The schedule uses server timezone. If your Droplet is in a different timezone than you, adjust the hour accordingly. For example, "0 9 * * *" means 9:00 AM server time. Natural language like "daily at 9am" is not supported. Use a cron expression instead.
Your bot should acknowledge the job creation with a confirmation message showing the job name and schedule.
Bot didn't respond to the command?
- Make sure you typed the command exactly as shown, including the forward slash at the start.
- Confirm the gateway is still running by reconnecting via SSH and checking: sudo hermes gateway status --system. Look for "active (running)".
- If you see an error about the schedule format, double-check that the cron expression is wrapped in quotes and follows the five-field format (minute hour day month weekday).
Help me troubleshoot my Hermes cron job creation. The bot is not responding to the /cron add command I sent in Telegram.
Test the briefing and verify the schedule
You do not need to wait until 7:00 AM tomorrow to see if it works. Hermes lets you trigger any cron job immediately for testing.
- Before you run this, what do you expect to see? Think about what your prompt asked for (3 headlines, a quote, a calendar reminder).
- Send this message to your bot on Telegram to trigger the briefing now:
/cron run Morning Briefing
Within a few seconds, your bot delivers the morning briefing to your Telegram chat. You should see a concise summary with news headlines, a motivational quote, and a calendar reminder. If the agent cannot find real-time news, it will say so honestly (as your prompt instructed).
- Verify the schedule is registered by sending this command:
/cron list
You should see your "Morning Briefing" job listed with status [active], the schedule 0 7 * * *, and a next run time showing tomorrow at 7:00 AM server time.
Briefing didn't arrive?
- If /cron run Morning Briefing returned nothing, check that the job name matches exactly. Run /cron list first to see the registered name.
- If the job shows as [completed] instead of [active], the repeat count may be exhausted. Edit the job to reset it.
- If the response is empty or says it cannot access the internet, this is expected behavior for the free Laguna S 2.1 model without the Tool Gateway. The agent will honestly report what it cannot do. The cron mechanism itself is working correctly.
My Hermes cron job ran but the briefing output is empty or the agent says it cannot find news. How do I fix this?
Your agent is now autonomous. It will deliver your morning briefing every day at the time you scheduled, without you asking. Tomorrow morning, check your Telegram and you will find the briefing waiting for you.
Secret mission
Give Your Agent an Email Address with AgentMail
Your agent can chat and brief you, but it cannot communicate with the outside world beyond Telegram. In this secret mission, you will give your assistant its own email inbox using AgentMail and MCP. By the end, your bot will be able to send and receive emails on your behalf, triggered by a simple Telegram message.
Clean Up Your Resources
Clean Up Your Resources
Decide whether to keep your resources running, pause them to come back later, or delete them entirely. Your DigitalOcean Droplet costs $12/month while it exists, whether it is powered on or off.
Cost warning
Your DigitalOcean Droplet is billed at $0.01786/hr ($12/mo) for as long as it exists. Powering off the Droplet does NOT stop billing. The only way to stop charges completely is to destroy the Droplet.
If you want to preserve your setup for later without paying $12/month, take a snapshot before destroying the Droplet. You can recreate from the snapshot later (snapshots cost $0.05/GB/month).
Resources you used:
- DigitalOcean Droplet (2 GiB RAM / 1 vCPU / 50 GiB SSD) at $12.00/month.
- Telegram bot created via @BotFather (free).
Keep everything running
No action needed. Choose this if you want your AI assistant available 24/7 on Telegram. Your Droplet continues to cost $12/month.
- Your Hermes gateway keeps running as a system service, surviving reboots automatically.
- Your Morning Briefing cron job continues delivering on schedule.
- Your Nous Portal free account and AgentMail free account remain active at no cost.
Pause - I'll come back to this later
Take a snapshot of your Droplet and destroy it. This preserves your full setup so you can recreate it later without paying $12/month in the meantime.
- Log in to the DigitalOcean dashboard at cloud.digitalocean.com.
- Click on your Droplet, then navigate to the Snapshots tab.
- Click Take Snapshot and wait for it to complete.
- Once the snapshot is ready, go to the Destroy tab and click Destroy this Droplet.
- Confirm the destruction. Your Droplet billing stops immediately.
- To resume later, create a new Droplet from your snapshot. Note that your IP address will change, so your Telegram bot will reconnect automatically (it uses outbound polling).
What about snapshots billing?
Snapshots cost $0.05 per GB per month. A 50 GiB Droplet snapshot costs roughly $2.50/month to store. This is significantly less than the $12/month Droplet cost.
Delete - I don't want to use this again
Remove all project resources to stop all charges. Your agent data is permanently lost.
- Log in to the DigitalOcean dashboard at cloud.digitalocean.com.
- Click on your Droplet, navigate to the Destroy tab, and click Destroy this Droplet.
- Confirm the destruction. All data on the server (Hermes, SOUL.md, config, cron jobs) is permanently deleted.
- Open Telegram and message @BotFather.
- Send /deletebot and select your bot when prompted. This permanently deletes the bot and frees its username.
This cannot be undone
Destroying the Droplet permanently deletes all files, configurations, and conversation history. Deleting the Telegram bot via @BotFather cannot be reversed. If you think you might want this setup again, choose the Pause option instead.
Nice Work!
Nice Work!
You just deployed a personal AI assistant that lives on its own cloud server and responds to you around the clock through Telegram. It speaks with a personality you designed, remembers your conversations, and delivers a morning briefing before you even ask.
You've learned how to:
- Provisioned a DigitalOcean Droplet, deployed Hermes Agent, and locked down the server with UFW firewall rules so your agent runs 24/7 and survives reboots as a systemd service.
- Connected your agent to a Telegram bot via a messaging gateway so you can chat with it from your phone, anywhere in the world.
- Designed a custom AI personality using SOUL.md system prompt engineering and built an autonomous daily briefing with the built-in cron scheduler.
- Secret Mission: Extended the agent with email capabilities via AgentMail MCP integration, giving your agent its own inbox to send and receive emails on your behalf.
Ready to quiz yourself?