What You Are Setting Up
Hermes Agent is an open-source terminal agent from Nous Research. It runs commands, edits files, browses the web, remembers past sessions, and can be reached from Telegram or Discord as well as your terminal. It is model-agnostic, so you choose what powers it.
You are going to point it at a model running on your own machine, then give it access to your SEO stack. Three pieces, in this order.
The three pieces
Hermes
The agent. Decides what to do and carries it out.
Ollama
The engine. Runs Qwen 4B locally, at no cost per token.
Composio
The connector. Brings Analytics, Search Console, and more.
What you will have at the end
- Hermes running in your terminal, answering with a local Qwen model.
- Google Analytics and your other SEO accounts connected through one authorization step.
- The ability to ask, in plain English, for a traffic comparison or a query report, and get a real answer pulled from live data.
- Optional scheduled jobs, so a weekly report writes itself while you sleep.
Before You Start
What the machine needs
| Component | Minimum | Comfortable |
|---|---|---|
| RAM | 8 GB | 16 GB or more |
| Storage | 5 GB free | 30 GB for several models |
| CPU | 4 cores | 8 cores or more |
| GPU | Not required | 8 GB VRAM or more, for real speed |
A 4B model is small, so it fits almost anywhere. Without a GPU it still runs, just slowly, and the first reply of each session is the slowest.
The five stages
- Install Hermes with a single command.
- Install Ollama and pull Qwen 4B.
- Point Hermes at Ollama through the model menu.
- Add Composio, which Hermes can install for you when asked.
- Authorize your SEO accounts in the browser, then start asking for work.
Install Hermes
The installer handles its own dependencies, including Python and Node, so there is nothing to prepare first.
On macOS, Linux, or WSL2
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bashOn Windows, in PowerShell
iex (irm https://hermes-agent.nousresearch.com/install.ps1)- Run the line for your system and wait. It installs everything Hermes needs, including a self-contained copy of Git on Windows.
- Reload your shell so the
hermescommand is found. On macOS and Linux that means closing the terminal and opening a new one. - Type
hermesand press Enter. The first run opens the setup wizard, which walks through configuration in a menu. - If anything looks wrong at any point, type
hermes doctor. It checks the installation and reports what is missing.
uv.exe, the Python package manager Hermes bundles. This is a known false positive on unsigned Rust binaries. The Hermes README documents how to verify the file and how to whitelist the folder rather than the file.Ollama and Qwen 4B
curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen3:4b- Install Ollama with the line above, or download the installer from ollama.com on Windows and macOS.
- Pull the Qwen 4B tag you want. Check its page in the Ollama library first and confirm it is marked as supporting tools. A model without tool support can only chat, and Hermes will not be able to act.
- Leave Ollama running. It serves quietly in the background on port
11434.
Raise the context window. This one is not optional.
Hermes refuses to start on anything below 64,000 tokens of context, because the system prompt and tool descriptions alone fill a small window. Ollama's default is far below that:
| Your VRAM | Ollama's default context |
|---|---|
| Under 24 GB | 4,096 tokens |
| 24 to 48 GB | 32,768 tokens |
| 48 GB and above | 256,000 tokens |
Most machines land in the first row, so raise it. Setting it for the whole server is the simplest route:
OLLAMA_CONTEXT_LENGTH=64000 ollama serveConnect the Model
Hermes has a menu for this. You never edit a file.
hermes model- Run the command above. A picker opens listing every provider Hermes supports.
- Choose Custom endpoint, described as self-hosted or vLLM. Local Ollama is reached this way; the separate Ollama Cloud entry is for their hosted service.
- For the base URL, enter
http://localhost:11434/v1. - Skip the API key. Ollama does not use one. Leave it empty or type anything.
- For the model name, enter the exact tag you pulled, such as
qwen3:4b. Tags matter, so copy it fromollama listif unsure. - Start Hermes and ask it something simple. If it replies, the model is connected.
HERMES_API_TIMEOUT to 1800 in the .env file inside your Hermes folder./model inside a session. To see what is filling your prompt, run prompt-size, then turn off toolsets you do not need with hermes tools. On a 4B model, a smaller prompt makes a real difference.Add Composio
What it does: Composio holds authorized connections to over a thousand services and exposes them to Hermes as tools. You authorize an account once in your browser, and it stays connected across sessions.
The easy route: ask Hermes to do it
Composio's own instructions for Hermes are to hand the agent this request. Start Hermes, paste it, and approve the steps it takes.
Install the Composio CLI: curl -fsSL https://composio.dev/install | sh,
then run composio login.- Hermes installs the Composio command line tool and starts the sign-in.
- A browser window opens. Create a Composio account or sign in.
- Return to the terminal. Hermes confirms the login and can now search Composio for tools whenever a task needs one.
The alternative: add it as a connection
If you would rather register Composio as a server, Hermes has a menu for that too. Run hermes mcp to open the picker, and add Composio's shared address, https://connect.composio.dev/mcp. Hermes then opens your browser to authorize it and remembers the result.
Connect Your SEO Accounts
Nothing to configure. You ask for the connection in plain English and approve it in the browser.
Connect my Google Analytics account through Composio.- Hermes starts the connection and shows you an authorization link.
- Open it, choose the Google account, and grant access. These links expire quickly, so if you lose one, ask Hermes to try again and it generates a fresh link.
- Come back and tell Hermes to continue. The connection now persists.
- Repeat for each service you want. Ask Hermes to list what is already connected any time.
What is worth connecting for SEO
| Service | What Hermes can then do |
|---|---|
| Google Analytics | Pull sessions, users, and conversions by page and date range |
| Google Search Console | Read impressions, clicks, and average position by query |
| Ahrefs | Backlink and keyword data, if you hold a subscription |
| SerpApi | Live search result pages for rank checks |
| Google Sheets or Notion | Write findings somewhere your team can read them |
Putting It to Work
Hermes takes instructions the way a junior analyst would. Name the source, the period, and where the answer should go.
# Traffic investigation
Compare organic sessions in Google Analytics for the last 28 days against
the previous 28 days. List the five pages that lost the most traffic.
# Query opportunities
From Search Console, find queries where we rank between position 11 and 20
and have over 500 impressions in the last month. Sort by impressions.
# Reporting
Summarise this week's organic performance in five bullet points and write
it into a new Google Sheet called Weekly SEO.Four habits that make it reliable
- One job per request. A 4B model handles a single clear task far better than a chain of four.
- Always name the date range. Left open, the model guesses, and its guess will not match your reporting period.
- Ask where the number came from. Small models will produce a plausible-looking figure if the tool call quietly failed. Requesting the source is a cheap, effective check.
- Turn off tools you are not using. Fewer tool descriptions means a shorter prompt, which means faster replies and better tool choices.
When Something Goes Wrong
| What you are seeing | What it means and how to fix it |
|---|---|
| Hermes refuses the model at startup | The context window is under 64,000. Set it on the Ollama server, not in Hermes |
| Nothing happens for minutes on the first reply | Normal on modest hardware. Keep the model loaded and widen the Hermes timeout |
| The model prints tool instructions as text | It is not making real tool calls. Confirm the model tag supports tools |
| Connection refused | Ollama is not running. Start it, then confirm it answers on port 11434 |
| Composio tools do not appear | The connection is not active. Check it in the Hermes MCP menu and re-authorize |
| The authorization link does not work | These links are short-lived. Ask Hermes to retry and use the fresh link |
| An account action fails with an auth error | The connection went stale. Ask Hermes to disconnect and reconnect that app |
| Analytics returns very few tools or an error | Ask Hermes to request the latest toolkit version for that service |
| Replies are slow and shallow | Trim the prompt by disabling unused toolsets, or move up to a larger model |
Test in this order
- Run the Hermes diagnostic and clear anything it reports.
- Chat with the model about nothing in particular, to prove the connection.
- Ask for a simple local action, such as listing files, to prove tool calling works.
- Connect one SEO account and ask a read-only question.
- Only then connect the rest and start asking for reports.
The Setup, in One View
Five stages, in order. Each one is a single command or a sentence to the agent.
- Install HermesOne install line, reopen the terminal, then run
hermes. The wizard handles the rest, andhermes doctordiagnoses anything that went wrong. - Ollama and Qwen 4BPull a Qwen 4B tag that supports tools, then raise the server context to 64,000. Hermes will not start below that.
- Point Hermes at itRun
hermes model, choose Custom endpoint, enter localhost port 11434 with the v1 path, skip the key, and give the exact model tag. - Add ComposioAsk Hermes to install the Composio CLI and sign in, or add Composio's address through the MCP menu. Approve it once in the browser.
- Connect the accountsAsk for each service by name, approve the link in your browser, then describe the SEO task you want done. Name the source, the period, and the destination.