Đại lý Hermes — Docker
Có hai cách riêng biệt mà Docker giao tiếp với Đại lý Hermes:
- Chạy Hermes IN Docker — bản thân tác nhân chạy bên trong một vùng chứa (trọng tâm chính của trang này)
- Docker với tư cách là chương trình phụ trợ đầu cuối — tác nhân chạy trên máy chủ của bạn nhưng thực thi mọi lệnh bên trong một vùng chứa hộp cát Docker duy nhất, liên tục tồn tại qua các lệnh gọi công cụ,
/new ` và các tác nhân phụ trong vòng đời của quy trình Hermes (xem Configuration → Docker Backend)
Trang này bao gồm tùy chọn 1. Vùng chứa lưu trữ tất cả dữ liệu người dùng (cấu hình, khóa API, phiên, kỹ năng, ký ức) trong một thư mục được gắn từ máy chủ tại
/opt/data
. Bản thân hình ảnh không có trạng thái và có thể được nâng cấp bằng cách lấy phiên bản mới mà không làm mất bất kỳ cấu hình nào.
Bắt đầu nhanh
Nếu đây là lần đầu tiên bạn chạy Hermes Agent, hãy tạo một thư mục dữ liệu trên máy chủ và khởi động vùng chứa một cách tương tác để chạy trình hướng dẫn thiết lập:
mkdir -p ~/.Hermes
Docker run -it --rm \
-v ~/.Hermes:/opt/data \
NousResearch/Hermes-agent setup
`
``Thao tác này sẽ đưa bạn vào trình hướng dẫn thiết lập, trình hướng dẫn này sẽ nhắc bạn nhập khóa API và ghi chúng vào
~/.Hermes/.env
. Bạn chỉ cần làm điều này một lần. Bạn nên thiết lập một hệ thống trò chuyện để cổng hoạt động vào thời điểm này.
## Chạy ở chế độ cổng
Sau khi được định cấu hình, hãy chạy vùng chứa ở chế độ nền dưới dạng một cổng liên tục (Telegram, Discord, Slack, WhatsApp, v.v.):
``` sh
Docker run -d \
--name Hermes \
--restart unless-stopped \
-v ~/.Hermes:/opt/data \
-p 8642:8642 \
NousResearch/Hermes-agent gateway run
`
``Cổng 8642 hiển thị [OpenAI-compatible API server](./features/API-server.md) và điểm cuối tình trạng của cổng. Đây là tùy chọn nếu bạn chỉ sử dụng các nền tảng trò chuyện (Telegram, Discord, v.v.), nhưng bắt buộc nếu bạn muốn trang tổng quan hoặc các công cụ bên ngoài tiếp cận cổng.
Lưu ý: máy chủ API được kiểm soát trên
`API_SERVER_ENABLED=true
. Để hiển thị nó ngoài
`127.0.0.1
` bên trong vùng chứa, hãy đặt cả
`API_SERVER_HOST=0.0.0.0
` và
`API_SERVER_KEY
` (tối thiểu 8 ký tự — tạo một ký tự có
`openSSL rand -hex 32
). Ví dụ:
``` sh
Docker run -d \
--name Hermes \
--restart unless-stopped \
-v ~/.Hermes:/opt/data \
-p 8642:8642 \
-e API_SERVER_ENABLED=true \
-e API_SERVER_HOST=0.0.0.0 \
-e API_SERVER_KEY="$(openSSL rand -hex 32)" \
-e API_SERVER_CORS_ORIGINS='*' \
NousResearch/Hermes-agent gateway run
`
``Mở bất kỳ cổng nào trên máy kết nối internet đều có nguy cơ bảo mật. Bạn không nên làm điều đó trừ khi bạn hiểu những rủi ro.
## Chạy bảng điều khiển
Bảng điều khiển web tích hợp chạy như một quy trình phụ tùy chọn bên trong cùng một vùng chứa với cổng. Đặt
`Hermes_DASHBOARD=1
` để chạy bảng thông tin trên vòng lặp vùng chứa (
`127.0.0.1
) theo mặc định:
``` sh
Docker run -d \
--name Hermes \
--restart unless-stopped \
-v ~/.Hermes:/opt/data \
-p 8642:8642 \
-e Hermes_DASHBOARD=1 \
NousResearch/Hermes-agent gateway run
`
``Điểm vào khởi động
`Hermes dashboard
` ở chế độ nền (chạy với tư cách người dùng
`Hermes
` không phải root) trước
`exec
-ing lệnh chính. Đầu ra của bảng thông tin có tiền tố
[dashboard]
` trong
`Docker logs
` nên rất dễ tách biệt khỏi nhật ký cổng.
| Biến môi trường | Mô tả | Mặc định |
|-------------|-------------|----------|
|
`Hermes_DASHBOARD
` | Đặt thành
`1
` (hoặc
`true
` /
`yes
) để khởi chạy bảng điều khiển cùng với lệnh chính | *(không đặt — bảng thông tin chưa khởi động)* |
|
`Hermes_DASHBOARD_HOST
` | Địa chỉ liên kết cho máy chủ HTTP bảng điều khiển |
127.0.0.1
` |
|
`Hermes_DASHBOARD_PORT
` | Cổng cho máy chủ HTTP bảng điều khiển |
9119
` |
|
`Hermes_DASHBOARD_TUI
` | Đặt thành
`1
` để hiển thị tab Trò chuyện trong trình duyệt (được nhúng
`Hermes --TUI
` qua PTY/WebSocket) | *(không đặt)* |
Theo mặc định, bảng thông tin vẫn ở trạng thái lặp lại để tránh hiển thị bề mặt web chưa được xác thực qua mạng. Để xuất bản nó một cách có chủ ý, hãy đặt
`Hermes_DASHBOARD_HOST=0.0.0.0
` và định cấu hình proxy ngược/ranh giới mạng đáng tin cậy của riêng bạn. Trong trường hợp đó, bạn phải thêm rõ ràng hành vi
--insecure
` bằng cách chuyển máy chủ/cờ trong đường dẫn lệnh của mình (điểm vào không còn tự động bật chế độ không an toàn nữa).
:::note
Quy trình phụ của trang tổng quan **không được giám sát** — nếu gặp sự cố, quy trình này sẽ không hoạt động cho đến khi vùng chứa khởi động lại. Việc chạy nó dưới dạng vùng chứa riêng biệt không được hỗ trợ: tính năng phát hiện hoạt động cổng của bảng thông tin yêu cầu không gian tên PID chung với quy trình cổng.
:::
## Chạy tương tác (trò chuyện CLI)
Để mở phiên trò chuyện tương tác dựa trên thư mục dữ liệu đang chạy:
``` sh
Docker run -it --rm \
-v ~/.Hermes:/opt/data \
NousResearch/Hermes-agent
`
``Hoặc nếu bạn đã mở một terminal trong vùng chứa đang chạy của mình (ví dụ: thông qua Docker Desktop), chỉ cần chạy:
``` sh
/opt/Hermes/.venv/bin/Hermes
`
## Khối lượng liên tục
Tập
/opt/data
` là nguồn sự thật duy nhất cho toàn bộ bang Hermes. Nó ánh xạ tới thư mục
~/.Hermes/
` trên máy chủ của bạn và chứa:| Đường dẫn | Nội dung |
|------|----------|
|
.env
` | Khóa API và bí mật |
|
`config.yaml
` | Tất cả cấu hình Hermes |
|
`SOUL.md
` | Tính cách/danh tính của đại lý |
|
`sessions/
` | Lịch sử hội thoại |
|
`memories/
` | Lưu trữ bộ nhớ liên tục |
|
`skills/
` | Kỹ năng cài đặt |
|
`cron/
` | Định nghĩa công việc theo lịch trình |
|
`hooks/
` | Móc sự kiện |
|
`logs/
` | Nhật ký thời gian chạy |
|
`skins/
` | Giao diện CLI tùy chỉnh |
:::warning
Không bao giờ chạy đồng thời hai vùng chứa Hermes **gateway** trên cùng một thư mục dữ liệu — tệp phiên và kho lưu trữ bộ nhớ không được thiết kế để truy cập ghi đồng thời.
:::
## Hỗ trợ đa cấu hình
Hermes hỗ trợ [multiple profiles](../reference/profile-commands.md) - các thư mục
~/.Hermes/
` riêng biệt cho phép bạn chạy các tác nhân độc lập (SOUL, kỹ năng, bộ nhớ, phiên, thông tin xác thực khác nhau) từ một cài đặt duy nhất. **Khi chạy trong Docker, không nên sử dụng tính năng đa cấu hình tích hợp của Hermes.**
Thay vào đó, mẫu được đề xuất là **một vùng chứa cho mỗi cấu hình**, với mỗi vùng chứa liên kết gắn thư mục máy chủ riêng của nó dưới dạng
/opt/data
:
``` sh
# Work profile
Docker run -d \
--name Hermes-work \
--restart unless-stopped \
-v ~/.Hermes-work:/opt/data \
-p 8642:8642 \
NousResearch/Hermes-agent gateway run
# Personal profile
Docker run -d \
--name Hermes-personal \
--restart unless-stopped \
-v ~/.Hermes-personal:/opt/data \
-p 8643:8642 \
NousResearch/Hermes-agent gateway run
`
``Tại sao phải tách các vùng chứa trên các cấu hình trong Docker:
- **Cách ly** — mỗi vùng chứa có hệ thống tệp, bảng quy trình và giới hạn tài nguyên riêng. Sự cố, thay đổi phụ thuộc hoặc phiên chạy trốn trong một cấu hình không thể ảnh hưởng đến cấu hình khác.
- **Vòng đời độc lập** — nâng cấp, khởi động lại, tạm dừng hoặc khôi phục từng tác nhân một cách riêng biệt (
`Docker restart Hermes-work
` giữ nguyên
`Hermes-personal
).
- **Tách cổng và mạng rõ ràng** — mỗi cổng liên kết cổng máy chủ riêng của nó; không có nguy cơ trao đổi chéo giữa các nền tảng trò chuyện hoặc máy chủ API.
- **Mô hình tinh thần đơn giản hơn** — vùng chứa *là* hồ sơ. Tất cả các bản sao lưu, di chuyển và quyền đều tuân theo thư mục được gắn kết mà không cần ghi nhớ thêm cờ
--profile
.
- **Tránh rủi ro ghi đồng thời** — cảnh báo ở trên về việc không bao giờ chạy hai cổng trên cùng một thư mục dữ liệu vẫn áp dụng cho các cấu hình trong một vùng chứa duy nhất.
Trong Docker Compose, điều này chỉ có nghĩa là khai báo một dịch vụ cho mỗi hồ sơ với
`container_name
,
`volumes
` và
`ports
` riêng biệt:
``` yaml
services:
Hermes-work:
image: NousResearch/Hermes-agent:latest
container_name: Hermes-work
restart: unless-stopped
command: gateway run
ports:
- "8642:8642"
volumes:
- ~/.Hermes-work:/opt/data
Hermes-personal:
image: NousResearch/Hermes-agent:latest
container_name: Hermes-personal
restart: unless-stopped
command: gateway run
ports:
- "8643:8642"
volumes:
- ~/.Hermes-personal:/opt/data
`
## Chuyển tiếp biến môi trường
Khóa API được đọc từ
/opt/data/.env
` bên trong vùng chứa. Bạn cũng có thể truyền trực tiếp các biến môi trường:
``` sh
Docker run -it --rm \
-v ~/.Hermes:/opt/data \
-e Anthropic_API_KEY="sk-ant-..." \
-e OpenAI_API_KEY="sk-..." \
NousResearch/Hermes-agent
`
``Cờ
-e
` trực tiếp ghi đè các giá trị từ
.env
. Điều này hữu ích cho việc tích hợp CI/CD hoặc trình quản lý bí mật mà bạn không muốn có khóa trên đĩa.
:::note[Looking for Docker as the **terminal backend**?]
Trang này đề cập đến việc chạy chính Hermes bên trong Docker. Nếu bạn muốn Hermes thực thi các lệnh gọi
`terminal
` /
`execute_code
` của tác nhân bên trong vùng chứa hộp cát Docker (một vùng chứa liên tục cho mỗi quy trình Hermes), thì đó là một khối cấu hình riêng biệt —
`terminal.backend: Docker
` cộng với
`terminal.Docker_image
,
`terminal.Docker_volumes
,
`terminal.Docker_forward_env
,
`terminal.Docker_run_as_host_user
` và
`terminal.Docker_extra_args
. Xem [Configuration → Docker Backend](configuration.md#Docker-backend) để biết trọn bộ.
:::
## Ví dụ về soạn thảo Docker
Để triển khai liên tục với cả cổng và bảng thông tin,
`Docker-compose.YAML
` rất tiện lợi:
``` yaml
services:
Hermes:
image: NousResearch/Hermes-agent:latest
container_name: Hermes
restart: unless-stopped
command: gateway run
ports:
- "8642:8642" # gateway API
- "9119:9119" # dashboard (only reached when Hermes_DASHBOARD=1)
volumes:
- ~/.Hermes:/opt/data
environment:
- Hermes_DASHBOARD=1
# Uncomment to forward specific env vars instead of using .env file:
# - Anthropic_API_KEY=$\{Anthropic_API_KEY}
# - OpenAI_API_KEY=$\{OpenAI_API_KEY}
# - Telegram_BOT_TOKEN=$\{Telegram_BOT_TOKEN}
deploy:
resources:
limits:
memory: 4G
cpus: "2.0"
`
``Bắt đầu với
`Docker compose up -d
` và xem nhật ký với
`Docker compose logs -f
. Đầu ra của bảng thông tin có tiền tố
[dashboard]
` nên dễ dàng lọc khỏi nhật ký cổng.
## Giới hạn tài nguyên
Thùng chứa Hermes cần nguồn lực vừa phải. Mức tối thiểu được đề xuất:
| Tài nguyên | Tối thiểu | Được đề xuất |
|----------|----------|-------------|
| Ký ức | 1 GB | 2–4GB |
| CPU | 1 lõi | 2 lõi |
| Đĩa (khối lượng dữ liệu) | 500 MB | 2+ GB (tăng dần theo phiên/kỹ năng) |
Tự động hóa trình duyệt (Playwright/Chromium) là tính năng ngốn bộ nhớ nhất. Nếu bạn không cần công cụ trình duyệt thì 1 GB là đủ. Với các công cụ trình duyệt đang hoạt động, hãy phân bổ ít nhất 2 GB.
Đặt giới hạn trong Docker:
``` sh
Docker run -d \
--name Hermes \
--restart unless-stopped \
--memory=4g --cpus=2 \
-v ~/.Hermes:/opt/data \
NousResearch/Hermes-agent gateway run
`
## Dockerfile làm gì
Hình ảnh chính thức dựa trên
`debian:13.4
` và bao gồm:- Python 3 với tất cả các phụ thuộc của Hermes (
`uv pip install -e ".[all]"
)
- Node.js + npm (để tự động hóa trình duyệt và cầu nối WhatsApp)
- Nhà viết kịch với Crom (
`npx playwright install --with-deps chromium --only-shell
)
- ripgrep, ffmpeg, git và tini làm tiện ích hệ thống
- **
`Docker-CLI
** — để các tác nhân chạy bên trong vùng chứa có thể điều khiển daemon Docker của máy chủ (
/var/run/Docker.sock
` gắn liên kết để chọn tham gia) cho
`Docker build
,
`Docker run
, kiểm tra vùng chứa, v.v.
- **
`openSSH-CLIent
** — kích hoạt [SSH terminal backend](/docs/user-guide/configuration#SSH-backend) từ bên trong vùng chứa. Phần phụ trợ SSH bao bọc hệ thống nhị phân
`SSH
; không có điều này, nó sẽ âm thầm thất bại trong quá trình cài đặt trong vùng chứa.
- Cầu WhatsApp (
`scripts/WhatsApp-bridge/
)
Tập lệnh điểm vào (
`Docker/entrypoint.sh
) khởi động khối lượng dữ liệu trong lần chạy đầu tiên:
- Tạo cấu trúc thư mục (
`sessions/
,
`memories/
,
`skills/
, v.v.)
- Sao chép
.env.example
` →
.env
` nếu không tồn tại
.env
- Sao chép mặc định
`config.yaml
` nếu thiếu
- Sao chép mặc định
`SOUL.md
` nếu thiếu
- Đồng bộ hóa các kỹ năng đi kèm bằng cách sử dụng cách tiếp cận dựa trên bảng kê khai (bảo toàn các chỉnh sửa của người dùng)
- Tùy chọn khởi chạy
`Hermes dashboard
` làm quy trình phụ nền khi
`Hermes_DASHBOARD=1
` (xem [Running the dashboard](#running-the-dashboard))
- Sau đó chạy
`Hermes
` với bất kỳ đối số nào bạn vượt qua
:::warning
Không ghi đè điểm nhập hình ảnh trừ khi bạn giữ
/opt/Hermes/Docker/entrypoint.sh
` trong chuỗi lệnh. Điểm vào giảm đặc quyền gốc cho người dùng
`Hermes
` trước khi các tệp trạng thái cổng được tạo. Theo mặc định, việc khởi động
`Hermes gateway run
` với quyền root bên trong hình ảnh chính thức bị từ chối vì nó có thể để lại các tệp thuộc quyền sở hữu của root trong
/opt/data
` và làm hỏng bảng điều khiển hoặc cổng khởi động sau này. Chỉ đặt
`Hermes_ALLOW_ROOT_GATEWAY=1
` khi bạn cố tình chấp nhận rủi ro đó.
:::
## Nâng cấp
Kéo hình ảnh mới nhất và tạo lại vùng chứa. Thư mục dữ liệu của bạn không bị ảnh hưởng.
``` sh
Docker pull NousResearch/Hermes-agent:latest
Docker rm -f Hermes
Docker run -d \
--name Hermes \
--restart unless-stopped \
-v ~/.Hermes:/opt/data \
NousResearch/Hermes-agent gateway run
`
``Hoặc với Docker Compose:
``` sh
Docker compose pull
Docker compose up -d
`
## Tệp kỹ năng và thông tin xác thực
Khi sử dụng Docker làm môi trường thực thi (không phải các phương thức ở trên mà là khi tác nhân chạy các lệnh bên trong hộp cát Docker — xem [Configuration → Docker Backend](./configuration.md#Docker-backend)), Hermes sử dụng lại một vùng chứa tồn tại lâu dài duy nhất cho tất cả lệnh gọi công cụ và tự động liên kết gắn kết thư mục kỹ năng (
~/.Hermes/skills/
) và mọi tệp thông tin xác thực được kỹ năng khai báo vào vùng chứa đó dưới dạng ổ đĩa chỉ đọc. Các tập lệnh kỹ năng, mẫu và tài liệu tham khảo có sẵn bên trong hộp cát mà không cần cấu hình thủ công và vì vùng chứa vẫn tồn tại trong suốt quá trình xử lý Hermes nên mọi phần phụ thuộc bạn cài đặt hoặc tệp bạn viết sẽ vẫn tồn tại cho lệnh gọi công cụ tiếp theo.
Quá trình đồng bộ hóa tương tự cũng xảy ra đối với các chương trình phụ trợ SSH và Modal - các tệp kỹ năng và thông tin xác thực được tải lên thông qua rsync hoặc API gắn kết Modal trước mỗi lệnh.
## Kết nối với máy chủ suy luận cục bộ (vLLM, OLlama, v.v.)
Khi chạy Hermes trong Docker và máy chủ suy luận của bạn (vLLM, OLlama, suy luận tạo văn bản, v.v.) cũng đang chạy trên máy chủ hoặc trong một vùng chứa khác, việc kết nối mạng cần được chú ý nhiều hơn.
### Docker Compose (được khuyến nghị)
Đặt cả hai dịch vụ trên cùng một mạng Docker. Đây là cách tiếp cận đáng tin cậy nhất:
`YAML
services:
vLLM:
image: vLLM/vLLM-OpenAI:latest
container_name: vLLM
command: >
--model Qwen/Qwen2.5-7B-Instruct
--served-model-name my-model
--host 0.0.0.0
--port 8000
ports:
- "8000:8000"
networks:
- Hermes-net
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
Hermes:
image: NousResearch/Hermes-agent:latest
container_name: Hermes
restart: unless-stopped
command: gateway run
ports:
- "8642:8642"
volumes:
- ~/.Hermes:/opt/data
networks:
- Hermes-net`networks:
Hermes-net:
driver: bridge
`
``Sau đó, trong
~/.Hermes/config.yaml
` của bạn, hãy sử dụng **tên vùng chứa** làm tên máy chủ:
``` yaml
model:
provider: custom
model: my-model
base_url: http://vLLM:8000/v1
API_key: "none"
`
:::tip[Key points]
- Sử dụng **tên vùng chứa** (
`vLLM
) làm tên máy chủ — không phải
`localhost
` hoặc
`127.0.0.1
, vốn đề cập đến chính vùng chứa Hermes.
- Giá trị
`model
` phải khớp với
--served-model-name
` mà bạn đã chuyển cho vLLM.
- Đặt
`API_key
` thành bất kỳ chuỗi không trống nào (vLLM yêu cầu tiêu đề nhưng không xác thực nó theo mặc định).
- **không** bao gồm dấu gạch chéo cuối trong
`base_url
.
:::
### Chạy Docker độc lập (không có Compose)
Nếu máy chủ suy luận của bạn chạy trực tiếp trên máy chủ (không phải trong Docker), hãy sử dụng
`host.Docker.internal
` trên macOS/Windows hoặc
--network host
` trên Linux:
**macOS / Windows:**
``` sh
Docker run -d \
--name Hermes \
-v ~/.Hermes:/opt/data \
-p 8642:8642 \
NousResearch/Hermes-agent gateway run
`
`
``` yaml
# config.yaml
model:
provider: custom
model: my-model
base_url: http://host.Docker.internal:8000/v1
API_key: "none"
`
``**Linux (mạng máy chủ):**
``` sh
Docker run -d \
--name Hermes \
--network host \
-v ~/.Hermes:/opt/data \
NousResearch/Hermes-agent gateway run
`
`
``` yaml
# config.yaml
model:
provider: custom
model: my-model
base_url: http://127.0.0.1:8000/v1
API_key: "none"
`
:::warning[With XPROTECTX126XPROTECTX, the XPROTECTX127XPROTECTX flag is ignored — all container ports are directly exposed on the host.]
:::
### Đang xác minh kết nối
Từ bên trong vùng chứa Hermes, hãy xác nhận rằng máy chủ suy luận có thể truy cập được:
``` sh
Docker exec Hermes curl -s http://vLLM:8000/v1/models
`
``Bạn sẽ thấy phản hồi JSON liệt kê mô hình được cung cấp của bạn. Nếu điều này không thành công, hãy kiểm tra:1. Cả hai container đều nằm trên cùng một mạng Docker (
`Docker network inspect Hermes-net
)
2. Máy chủ suy luận đang lắng nghe trên
`0.0.0.0
, không phải
`127.0.0.1
3. Số cổng trùng khớp`###OLlama
OLlama hoạt động theo cách tương tự. Nếu OLlama chạy trên máy chủ, hãy sử dụng
`host.Docker.internal:11434
` (macOS/Windows) hoặc
`127.0.0.1:11434
` (Linux với
--network host
). Nếu OLlama chạy trong vùng chứa riêng của nó trên cùng một mạng Docker:
``` yaml
model:
provider: custom
model: Llama3
base_url: http://OLlama:11434/v1
API_key: "none"
`
## Khắc phục sự cố
### Container thoát ngay lập tức
Kiểm tra nhật ký:
`Docker logs Hermes
. Nguyên nhân phổ biến:
- Tệp
.env
` bị thiếu hoặc không hợp lệ - trước tiên hãy chạy tương tác để hoàn tất thiết lập
- Xung đột cổng nếu chạy với các cổng bị lộ
### Lỗi "Quyền bị từ chối"
Điểm vào của vùng chứa sẽ giảm đặc quyền cho người dùng
`Hermes
` không phải root (UID 10000) thông qua
`gosu
. Nếu máy chủ
~/.Hermes/
` của bạn thuộc sở hữu của một UID khác, hãy đặt
`Hermes_UID
/
`Hermes_GID
` để khớp với người dùng máy chủ của bạn hoặc đảm bảo thư mục dữ liệu có thể ghi:
``` sh
chmod -R 755 ~/.Hermes
`
### Công cụ trình duyệt không hoạt động
Nhà viết kịch cần có bộ nhớ chung. Thêm
`
--shm-size=1g
` vào lệnh chạy Docker của bạn:
``` sh
Docker run -d \
--name Hermes \
--shm-size=1g \
-v ~/.Hermes:/opt/data \
NousResearch/Hermes-agent gateway run
`
### Cổng không kết nối lại sau sự cố mạng
Cờ
--restart unless-stopped
` xử lý hầu hết các lỗi nhất thời. Nếu cổng bị kẹt, hãy khởi động lại vùng chứa:
``` sh
Docker restart Hermes
`
### Kiểm tra tình trạng container
`sh
Docker logs --tail 50 Hermes # Recent logs
Docker run -it --rm NousResearch/Hermes-agent:latest version # Verify version
Docker stats Hermes # Resource usage
`