Tech Handbook Null Yard

Hermes Agent - User Handbook

Hermes Agent combines an AI model with shell tools, files, skills, memory, cron and messaging channels. The safest rollout is to get ordinary CLI/chat working first, then add the gateway, Signal, cron, browser automation and broader permissions.

The official installation path covers Linux, macOS, WSL2 and Android/Termux. FreeBSD is not listed as a primary host, so this handbook treats it mainly as a system managed over SSH.

Related topics: AI Prompting, SSH and Remote Administration, Debian Desktop and Server, FreeBSD as a Server and Documenting Technical Solutions.

Debian as host, FreeBSD as host/managed machine

1. What Hermes Agent is

Hermes is an AI-agent environment that can combine model access, shell tools, files, memory, profiles, gateways and messaging integrations.

2. Most important decision: where to run Hermes

Debian

Best default host because Linux tooling, Python, Docker, systemd and VPS support are straightforward.

FreeBSD

Excellent managed target over SSH; native Hermes hosting may be more experimental depending on upstream support.

Recommendation

Run the main agent/gateway on Debian and manage FreeBSD remotely over SSH.

3. Minimal home / VPS architecture

Signal / CLI / Web UI
        ↓
Hermes gateway
        ↓
model provider
        ↓
local shell / SSH / tools

4. Installing on Debian

4.1. Minimum requirements

A small VPS can be enough when using hosted models; browser automation needs more RAM/disk than pure shell/chat use.

5. Installing Hermes

Follow the current upstream install procedure and keep the installation/version explicit.

6. Post-install diagnostics

Verify binary, config, provider credentials, network access, shell tools and gateway startup.

7. First run

Start with CLI interaction before adding Signal, browser automation, cron and multiple profiles.

8. Configuration

Separate normal configuration from secrets and version reusable templates where practical.

9. ~/.hermes directory

Stores configuration, memory/session data, profiles and local state.

10. config.yaml

Use for provider/model defaults, tools, gateway behavior and non-secret settings.

11. .env

Use for secrets where supported; lock file permissions and never commit it.

12. Provider and model

Provider is the API/backend; model is the concrete LLM selected for a task.

13. hermes model vs /model

Outside a session

CLI/config selection changes defaults for future sessions.

In conversation

Slash commands can change the active model for the current session when supported.

14. OpenRouter

Useful as a multi-provider gateway with broad model choice and fallback possibilities.

15. OpenAI

Direct provider option when supported; keep API keys in protected secret storage.

16. Model strategy

Use fast/cheap models for routine tasks and stronger models for complex coding/reasoning.

17. Model fallback

Fallback improves resilience but should be logged so behavior/cost changes are visible.

18. Mixture of Agents

Use multiple agents/models only when parallel work or independent review justifies extra cost and complexity.

19. Terminal - the agent's most important capability

Shell access lets Hermes inspect files, run tests, build software and administer systems.

20. Be careful with permissions

Do not run permanently as root. Grant the minimum rights needed for the intended workflows.

21. Local terminal vs sandbox

Local shell changes the real host; sandboxed execution reduces blast radius.

22. Docker

Useful on Debian for isolated dev/test environments; not a substitute for strict privilege boundaries.

23. SSH - main way to work with FreeBSD

Use dedicated SSH keys/users from the Debian Hermes host to FreeBSD targets.

24. ~/.ssh/config

Host homeserver
    HostName 192.0.2.10
    User hermes
    IdentityFile ~/.ssh/id_ed25519_hermes

25. Detecting Debian and FreeBSD

uname -s
cat /etc/os-release 2>/dev/null || true
freebsd-version 2>/dev/null || true

26. Debian vs FreeBSD differences the agent should know

Packages

Debian: apt/dpkg. FreeBSD: pkg/Ports.

Services

Debian: systemd/systemctl. FreeBSD: rc.d/service/sysrc.

Logs

Debian commonly uses journald/journalctl; FreeBSD commonly uses files under /var/log plus syslog.

27. Project instructions for Hermes

Keep repository-specific build/test/style rules in files the agent can read.

28. Example AGENTS.md

Project

Short project description and scope.

Build

go build ./...

Test

go test ./...

Frontend

Document framework or plain HTML/CSS/JS expectations.

Rules

No secrets, no unrelated changes, run tests, preserve public APIs unless task requires change.

29. SOUL.md

Persona/identity file; keep personality separate from operational/security rules.

Identity

Describe stable tone/identity without embedding credentials or authority escalation.

30. USER.md

Stable user preferences and working conventions.

31. MEMORY.md

Durable useful context, not a dump of every session.

32. Memory vs session history

Session history is temporary conversation context; memory is selected durable knowledge.

33. Important memory property

Bad memory can create persistent mistakes, so stored facts should be concise and verified.

34. Controlling memory writes

Decide what the agent may retain, especially personal data, credentials and temporary project state.

35. Skills

Reusable procedures/tool instructions for recurring tasks.

36. Why skills matter

They turn repeated prompting into consistent documented workflows.

37. Skills and secrets

Reference secret locations, never embed secret values inside reusable skill files.

38. Cron - automation

Use schedules for recurring deterministic or agent-assisted work. Make jobs idempotent and observable.

39. Tasks without an AI model

If a task is deterministic, prefer a normal shell/Python/Go script.

40. Quick commands

Wrap frequent safe workflows in short documented commands.

41. Signal

Can serve as a remote conversational/control interface.

42. Signal - requirements

Working Signal account/number plus the gateway/integration required by your Hermes version.

43. Signal - Hermes configuration

Keep account identifiers and gateway settings outside public repositories.

44. Signal - example variables

SIGNAL_ACCOUNT=...
SIGNAL_ALLOWED_SENDER=...

45. Signal - security

Treat incoming messages as remote commands. Restrict authorized senders and dangerous actions.

46. Running the gateway

Run under a dedicated user and collect logs.

47. Gateway as a Debian service

Use systemd user/system unit depending deployment model.

48. User services and linger

loginctl enable-linger USER
systemctl --user enable --now SERVICE

49. FreeBSD and gateway

Keep gateway on Debian if native FreeBSD support is awkward; control FreeBSD over SSH.

50. hermes send

Use message-sending CLI for scripted notifications where supported.

51. Example usage in a script

if backup-command; then
  hermes send "Backup completed"
else
  hermes send "Backup failed"
fi

52. Browser / Chromium

Browser automation enables GUI/web tasks but consumes more resources and expands attack surface.

53. When a browser is needed

Use only when API/CLI/direct HTTP cannot perform the task reliably.

54. Updating Hermes

Read release notes, back up config/state and update in a controlled window.

55. Backup

Back up config, memory and custom skills; exclude disposable caches.

56. Encrypted backup

Encrypt backups containing sensitive agent state and store keys separately.

57. Logs

Record gateway starts, provider/tool errors and important actions without leaking secrets.

58. Useful shell tools for Hermes administration

ssh
tmux
git
curl
jq
rsync
systemctl
journalctl
pkg
service
sysrc

59. Profiles

Separate roles, model policies, repositories or environments.

60. Why profiles

Avoid mixing context/secrets between independent agent purposes.

61. Creating a profile

Use the profile mechanism supported by your Hermes version and keep profile state separate where isolation matters.

62. Do not share one HERMES_HOME among independent agents

Shared state can leak sessions, memory and credentials or corrupt concurrent state.

63. Sessions

Use one session for one coherent task/thread.

64. When to start a new session

When context becomes irrelevant, contradictory or too large.

65. Checkpoints

Before risky actions create a Git commit, filesystem snapshot or explicit backup.

66. Git + Hermes

Git is the primary safety net for agent coding: small diffs, review, reversible commits.

67. Repository permissions

Grant write access only to repositories the agent must modify.

68. Project secrets

Use environment variables, protected files or a secret manager.

69. Prompt injection

Treat webpages, emails and documents as untrusted data that may contain malicious instructions.

70. Destructive commands

Guard rm -rf, formatting, database deletion, firewall changes and history rewrites with explicit confirmation/checkpoints.

71. FreeBSD + ZFS

Use ZFS snapshots/boot environments as rollback aids; remember snapshots are not independent backups.

72. Example workflow: inspect FreeBSD

SSH → freebsd-version → uptime → zpool status → df -h → service status → sockstat → logs

73. Example workflow: deploy Go application

update source/artifact → build/test → config check → restart service → local health check → external check

74. Example workflow: monitoring

Use deterministic checks and let Hermes summarize/notify only when useful.

75. Example workflow: error analysis

Inspect logs, config and recent changes before editing.

76. Good prompt for an agent

Inspect first. Do not change anything yet.
Explain root cause and proposed steps.
Then make the smallest safe change.
Run tests/checks and report results.

77. Autonomy modes

Level 1 - analysis only

Read/inspect, no modifications.

Level 2 - limited action

Narrow, explicit write/command permissions.

Level 3 - autonomous execution

Only for well-defined, low-risk, observable and reversible workflows.

78. WebUI

Optional. CLI/Signal are enough for a first deployment.

79. What to launch first

One provider/model, CLI, one profile, SSH and one communication channel.

80. What NOT to do on day one

Do not add browser automation, many models, broad sudo and production write access simultaneously.

81. Suggested VPS layout

/home/hermes/.hermes
/home/hermes/projects
/home/hermes/.ssh
journald / log files

82. Suggested dedicated user

Create a normal Unix account specifically for Hermes.

83. Controlled sudo

Allow only explicit required commands, not unrestricted NOPASSWD root.

84. Firewall

Expose only required gateway/UI ports, preferably behind VPN/reverse proxy as appropriate.

85. SSH from Hermes to FreeBSD - security

Dedicated key, dedicated account, limited sudo/doas and network restrictions.

86. FreeBSD - user for the agent

Grant only groups/filesystem permissions required for its tasks.

87. FreeBSD - sudo/doas

Use tightly scoped privilege rules.

88. Native Hermes on FreeBSD - experimental

Treat as experimental unless upstream explicitly supports your FreeBSD version.

89. Debian VM on FreeBSD

A Debian VM is a clean compatibility boundary when Linux-only dependencies are required.

90. Monitoring Hermes itself

Monitor process health, restart count, disk usage, provider errors and message-gateway connectivity.

91. Watchdog

Prefer systemd restart policies or external monitoring over a second uncontrolled agent.

92. System updates

Patch the host regularly, separating OS maintenance from application changes.

93. Do not let the agent blindly update production

Require plan, checkpoint and post-update validation.

94. Agent as administrator

Strong at gathering state, running known procedures and summarizing.

95. Agent as developer

Strong when repository instructions, tests and Git workflow are clear.

96. Agent as server operator

Use runbooks; avoid improvisational root access.

97. Most important slash commands

Exact commands vary by version; commonly model/session/profile/memory controls.

98. Most important administrative CLI commands

Keep a local cheat sheet aligned with your installed Hermes version.

99. Diagnostics - first set

command -v hermes
hermes --help
env | grep -E 'HERMES|OPENAI|OPENROUTER'

100. Signal does not work - checklist

Gateway process, account/session, allowed sender, network, config and logs.

101. SSH to FreeBSD does not work - checklist

DNS/IP, route, port 22, sshd, key permissions, remote user and firewall.

102. Hermes uses the wrong system command

Detect OS explicitly and document Debian/FreeBSD command differences in runbooks.

103. Separate infrastructure repository

Store scripts, service units, runbooks and host notes in a private infra repo when useful.

104. hosts.md

Hosts

Document aliases and purpose, not passwords.

vps

Debian VPS running Hermes/public services.

homeserver

FreeBSD home server/storage.

router

Network edge; no broad agent write access.

105. Procedures instead of improvisation

Turn repeated administration into scripts/runbooks.

106. API keys

Scope narrowly, rotate, never expose in logs/prompts.

107. Model costs

Track spend; use cheap models for routine tasks and stronger ones selectively.

108. Tokens and long sessions

Long context costs more and can dilute relevance; start fresh when task changes.

109. When to use subagents

Clearly separable parallel work, independent review or research branches.

110. Minimal production configuration

Dedicated user, explicit provider/model, protected secrets, SSH keys, controlled sudo, service supervision, logs, backups and monitoring.

111. Sensible work model

human goal → inspect → plan → controlled execution → validation → Git/log record

112. What to store where

config → ~/.hermes / templates
secrets → protected env/secret store
projects → Git repos
runbooks → docs/repo
host access → ~/.ssh
logs → journald/files

113. Commands - cheat sheet

Installation

follow current upstream install command.

Diagnostics

hermes --help + provider/env checks.

Start

start CLI/gateway according to installed version.

Configuration

edit config.yaml / protected env.

Gateway

service/systemd user unit.

Sessions

list/new/switch according to version.

Profiles

create/select profile.

Memory

inspect/update memory policy.

Message

hermes send where supported.

114. FreeBSD - cheat sheet for Hermes

System

freebsd-version
uptime

Packages

pkg update
pkg upgrade

Services

service NAME status

Enable

sysrc NAME_enable=YES

Network

ifconfig
netstat -rn
sockstat -4 -6 -l

Disks

df -h
gpart show

ZFS

zpool status
zfs list

115. Debian - cheat sheet for Hermes

System

cat /etc/os-release
uptime

Packages

sudo apt update
sudo apt upgrade

Services

systemctl status NAME

Logs

journalctl -u NAME

Network

ip addr
ip route
ss -lntup

Resources

df -h
free -h
top

116. How to teach your own Hermes

Give concise project instructions, host runbooks, examples of good changes and clear definitions of done.

117. Most important rule

Do not grant an autonomous agent more power than you can audit and recover from.

118. Recommended Debian + FreeBSD architecture

Debian VPS: Hermes + gateway + Signal + model access
        ↓ SSH
FreeBSD: storage/services managed by limited account

119. First day - concrete checklist

Install Hermes, configure one provider/model, create dedicated user, verify CLI, configure SSH, set up one communication channel, create backup, test one harmless workflow.

120. Second stage

Add systemd gateway, profiles, memory policy, notifications and repository workflows.

121. Third stage

Only then add browser automation, cron, multiple models, wider host access or autonomous procedures.

122. Useful sources

Current Hermes upstream docs/repository, model-provider docs, Debian docs and FreeBSD Handbook.

123. TL;DR

Run Hermes on Debian for simplicity, manage FreeBSD over SSH, use dedicated users/limited privileges/Git/backups/runbooks, and increase autonomy gradually.