SSD Nodes Learn Hosting plans →
Hướng dẫn Matt ConnorBởi Matt Connor · Cập nhật ngày 2026-10-18

Hermes Agent hay OpenClaw: chọn gì cho VPS?

So sánh Hermes Agent v0.21.1 và OpenClaw trên VPS: port, sandbox, memory, skills, Claude auth và khi nào nên chọn agent chạy job hay nhiều kênh chat.

Câu trả lời ngắn

Hermes Agent và OpenClaw đều cung cấp một agent chạy liên tục trên VPS mà bạn có thể truy cập từ ứng dụng chat. Chọn Hermes Agent khi công việc chính của agent là các tác vụ lặp lại: job được lập lịch và các quy trình mà agent chỉ cần học một lần rồi tái sử dụng. Chọn OpenClaw khi công việc chính là khả năng tiếp cận: một assistant trả lời trên WhatsApp, Telegram, Discord, Slack và hơn 20 kênh khác, đồng thời có thể mở rộng bằng các package từ một public registry. Cả hai đều chạy từ CLI (command-line interface) và từ chat, nên lựa chọn phụ thuộc vào ưu tiên của từng dự án và vào những gì mỗi dự án mở trên server của bạn.

Bài so sánh này được thực hiện dựa trên tag v2026.9.7 của Hermes Agent (7 September 2026, phát hành dưới dạng v0.21.1) và tag v2026.9.4 của OpenClaw (11 September 2026), sau đó được kiểm tra lại theo tài liệu hiện tại của cả hai dự án vào 10 October 2026. Số phiên bản phát hành, các tùy chọn pinning của OpenClaw và phần về gói thuê bao Claude được kiểm tra lại vào 17 October 2026. Cả hai dự án đều phát hành thường xuyên, vì vậy hãy kiểm tra tài liệu nếu có nội dung đã thay đổi. Bản stable mới nhất của OpenClaw hiện là v2026.10.4 (16 October 2026), còn Hermes đã chuyển từ date tag sang version tag; bản v0.22.2 được phát hành vào 15 October 2026. Mọi nhận định dưới đây đều dựa trên tài liệu chính thức của từng dự án hoặc hai nguồn bên ngoài được nêu tại nơi sử dụng.

Mục đích của từng dự án: agent-first hay gateway-first

So sánh của Hostinger gọi Hermes Agent là “agent-first” và OpenClaw là “gateway-first”. Cách phân loại này hợp lý và là cách nhanh nhất để hiểu hai dự án.

Hermes Agent, do Nous Research phát triển, được xây dựng xoay quanh một worker. Bạn giao cho nó một tác vụ. Nó chạy tác vụ trong terminal backend và ghi lại những gì đã học thành một skill. Nó cũng lưu một lượng nhỏ các thông tin bền vững. Chat chỉ là một trong nhiều cách gửi công việc. CLI, cron job, messaging gateway và desktop app đều cung cấp đầu vào cho cùng một agent. Gateway là một tính năng được bật bằng hermes gateway setup, không phải thành phần cốt lõi bạn cài đặt.

OpenClaw được xây dựng xoay quanh Gateway. Gateway là một tiến trình chạy lâu dài. Tài liệu của dự án gọi đây là nguồn sự thật duy nhất cho session, định tuyến và kết nối đến các channel. Model và agent harness là các plugin gắn vào Gateway. README liệt kê Claude, Codex và local model là những harness có thể thay đổi. Khả năng tiếp cận nhiều channel là sản phẩm chính. Agent chỉ là một thành phần được Gateway cung cấp.

Hai dự án đã học hỏi các ý tưởng tốt của nhau. Hiện cả hai đều ghép những người gửi tin nhắn chưa xác định với một code trước khi cho phép họ trao đổi với bot. Cả hai cũng cho phép agent tự viết skill: Hermes thực hiện việc này thông qua tool skill_manage, còn OpenClaw sử dụng Skill Workshop. Cách phân loại cốt lõi vẫn đúng: Hermes là một worker có chat front end, còn OpenClaw là một chat hub có worker phía sau.

Đường dẫn cài đặt và mức sử dụng tài nguyên trên VPS

Không dự án nào nêu mức RAM hoặc CPU tối thiểu, nên phần này không tự đưa ra con số. Cả hai agent đều nhẹ so với các lần gọi model mà chúng thực hiện. Tải thực tế trên máy chủ phụ thuộc vào những gì bạn yêu cầu agent chạy. VPS chạy coding-agent cần bao nhiêu RAM và CPU hướng dẫn tính tài nguyên theo workload thay vì theo agent.

Có một con số được tài liệu ghi rõ và đáng lưu ý. Khi Hermes dùng Docker terminal backend, tài liệu đặt giới hạn cho sandbox container mặc định ở container_cpu: 1 và container_memory: 5120 (tính bằng MB). Đây là giới hạn của container, không phải mức tài nguyên được đo thực tế. Tuy nhiên, VPS nhỏ hơn các mức này sẽ không thể đáp ứng chúng.

Hermes cài đặt bằng một script. Bản cài đặt hiện tại chạy trên Python 3.14. Installer tải Python thông qua uv riêng, đã được pin và xác minh checksum, thay vì dùng Python của hệ thống. Trên Linux, script cần có sẵn git, curl, tar và các tiện ích SHA-256 (sha256sum, thuộc coreutils). Trên các hệ thống dùng glibc, Node.js do installer quản lý cần libatomic. Installer sẽ thêm package này nếu package chưa có.

sudo apt update && sudo apt install -y git curl tar coreutils
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
source ~/.bashrc
hermes doctor

Mã nguồn được đặt tại ~/.hermes/hermes-agent/ dưới dạng git checkout có thể chỉnh sửa. Command được đặt tại ~/.local/bin/hermes. Toàn bộ dữ liệu nằm dưới ~/.hermes/. Installer không bao giờ yêu cầu root. Installer chỉ gọi sudo khi user không phải root thiếu libatomic. Tài liệu yêu cầu chạy installer bằng user sẽ chạy agent, vì user đó sở hữu checkout, config và launcher. Trang tài liệu không mô tả việc pin phiên bản, nhưng installer script chấp nhận --commit SHA. Tùy chọn này pin checkout vào một commit cụ thể sau khi clone hoặc update, và dừng nếu commit đó không có trên branch đang cài đặt. Lấy commit đứng sau tag, export commit đó thành HERMES_SHA, rồi truyền vào:

git ls-remote --tags https://github.com/NousResearch/hermes-agent v2026.9.7
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --commit "$HERMES_SHA"

Nếu ls-remote in ra 2 dòng, dùng dòng kết thúc bằng ^{}. Đó là commit mà annotated tag trỏ tới. --commit yêu cầu commit SHA thay vì tag object. Sau khi cài đặt, hermes model chọn provider và model, hermes tools bật tools, hermes setup chạy toàn bộ wizard, còn hermes doctor kiểm tra kết quả.

OpenClaw cũng cài đặt bằng một script hoặc thông qua npm, và cần Node. Tài liệu yêu cầu Node 24.16 trở lên hoặc 26.1 trở lên. Tài liệu cũng cho biết Linux installer sẽ tải Node 24 LTS (long-term support) nếu Node chưa có. Hosted installer và npm đều chấp nhận phiên bản cụ thể. Đây là cách pin phiên bản: flag --version của installer nhận npm version, dist-tag hoặc package spec, và mặc định là latest. Trang Updating cũng đưa ra các lệnh cài phiên bản cụ thể cho pnpm và Bun. Tài liệu cung cấp flag --allow-scripts=openclaw cho npm 12 hoặc 11.16 trở lên. Với npm cũ hơn, chạy cùng command nhưng bỏ flag này.

curl -fsSL https://openclaw.ai/install.sh | bash
# or, pinned through the installer:
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --version 2026.9.4
# or, pinned through npm:
npm install -g openclaw@2026.9.4 --allow-scripts=openclaw
openclaw onboard --install-daemon

openclaw onboard --install-daemon chạy setup wizard và cài Gateway dưới dạng systemd user service trên Linux. Config nằm tại ~/.openclaw/openclaw.json. Đây là JSON5, nên cho phép dùng comment và dấu phẩy ở cuối. OpenClaw cũng phát hành một nhánh Extended Stable dành cho người muốn có ít thay đổi hơn mỗi tháng. Tính đến ngày 17 tháng 10 năm 2026, bản phát hành hiện tại là 2026.9.33, được phát hành ngày 15 tháng 10 năm 2026. Tài liệu mô tả 4 channel: stable, extended-stable, beta và dev, cùng openclaw update --channel <name> để chuyển giữa các channel.

Hướng dẫn VPS cho Hermes Agent và hướng dẫn containment cho OpenClaw trình bày đầy đủ cách cài đặt từng agent, cùng các bước kiểm tra cần đạt.

Mỗi thành phần mở gì trên mạng

Phần này quyết định cấu hình firewall, nên cần kiểm tra cẩn thận nhất.

OpenClaw mặc định mở một cổng. Gateway lắng nghe trên TCP 18789 theo mặc định. Giá trị này được chọn theo thứ tự: --port, rồi OPENCLAW_GATEWAY_PORT, tiếp theo là gateway.port trong config, cuối cùng là 18789. gateway.bind mặc định là loopback. Các giá trị còn lại là auto, lan (có nghĩa là 0.0.0.0), tailnet và custom. Control UI dùng cùng cổng này, tại đường dẫn gốc: http://127.0.0.1:18789/. gateway.controlUi.basePath chỉ thêm một prefix như /openclaw khi bạn phục vụ UI bên dưới một đường dẫn của reverse proxy. Tài liệu nêu rõ rủi ro: "Bind không phải loopback yêu cầu gateway auth. Trên thực tế, điều đó có nghĩa là dùng chung token/password hoặc một reverse proxy nhận diện danh tính." gateway.auth.mode nhận none, token, password hoặc trusted-proxy. Onboarding wizard mặc định tạo một token. Giữ bind ở loopback, truy cập UI qua SSH tunnel và chạy openclaw security audit để phát hiện mọi thay đổi so với các giá trị mặc định đó.

Hermes không mở cổng cho gateway core. Gateway kết nối ra từng nền tảng chat với vai trò client. CLI kết nối ra model endpoint và terminal backend. Docker backend kết nối tới Docker socket cục bộ. SSH backend kết nối tới một host khác qua cổng 22. Các cổng được tài liệu Hermes nêu ra thuộc về những thành phần tùy chọn: webhook adapter (mặc định tắt, WEBHOOK_PORT 8644), webhook của WhatsApp Business Cloud API (mặc định 8090) và WhatsApp bridge, dùng cổng 3000 trên máy. Trang WhatsApp không cho biết bridge bind vào địa chỉ nào, nên hãy đóng cổng đó trên firewall. Vì vậy, một máy chạy Hermes có thể giữ policy inbound là "chỉ SSH"; không cần thay đổi gì ở agent, trừ khi bạn bật một trong hai webhook.

Các nền tảng chat chủ yếu không cần cổng inbound trên cả hai project. Cả hai đều dùng long polling hoặc WebSockets outbound cho các channel chính. Tích hợp Slack của Hermes dùng Socket Mode, và tài liệu nói instance của bạn "không cần public". Tích hợp WhatsApp của Hermes chạy một Node.js bridge mô phỏng một phiên WhatsApp Web, được ghép nối bằng mã QR, và yêu cầu Node.js v18 trở lên trên máy. Channel Telegram của OpenClaw nói rằng "Long polling là transport mặc định. Webhook mode là tùy chọn", còn channel WhatsApp chỉ dùng QR và chạy qua WhatsApp Web, với Gateway quản lý socket. Các ngoại lệ là những đường dẫn có public URL: webhook mode của Telegram trong OpenClaw (webhookUrl, webhookSecret, webhookPath), generic webhook adapter của Hermes và tùy chọn WhatsApp Business Cloud API riêng của Hermes. Theo tài liệu, tùy chọn này cần Meta Business account và public webhook URL. Không bật chúng nếu bạn không có lý do cụ thể.

Cả hai mặc định từ chối các sender chat không xác định. Hermes kiểm tra theo thứ tự: flag allow-all riêng của từng platform, danh sách pairing đã phê duyệt, allowlist riêng của từng platform như TELEGRAM_ALLOWED_USERS, GATEWAY_ALLOWED_USERS dùng chung, flag allow-all dùng chung, rồi mới deny. Sender không xác định sẽ nhận một pairing code gồm 8 ký tự qua DM (tin nhắn trực tiếp). Bạn phê duyệt bằng hermes pairing approve <platform> <code>. dmPolicy của OpenClaw mặc định là pairing trên Telegram và WhatsApp; bạn phê duyệt bằng openclaw pairing approve <channel> <code>. Không bao giờ đặt GATEWAY_ALLOW_ALL_USERS=true hoặc dmPolicy: open trên bot có thể chạy shell command.

Cách cơ chế cô lập của OpenClaw áp dụng cho Hermes

Cơ chế cô lập trong hướng dẫn cô lập OpenClaw dựa trên một user riêng không có quyền đặc biệt, một Gateway chỉ bind vào loopback phía sau firewall của VPS, một Docker sandbox để thực thi tool với agents.defaults.sandbox.mode được đặt thành all, và một token cho mọi địa chỉ không phải loopback. Trang sandbox của OpenClaw nêu rõ ranh giới này: bản thân tiến trình Gateway luôn chạy trên host, còn sandbox chỉ chuyển phần thực thi tool vào đó. tools.elevated là một lối thoát, cho phép chạy bên ngoài sandbox.

User riêng và firewall có thể áp dụng nguyên trạng cho Hermes. User riêng tạo cùng một lớp ngăn cách, và checklist production của Hermes nêu rõ trong 6 từ: "Không bao giờ chạy gateway bằng root". Lớp firewall đơn giản hơn vì core gateway không có port để giới hạn, còn token không có gì cần bảo vệ.

Sandbox tương ứng với terminal.backend trong ~/.hermes/config.yaml. Hermes hỗ trợ 7 backend: local, docker, ssh, singularity, modal, daytona và vercel_sandbox. Với docker, container chạy với --cap-drop ALL, sau đó thêm lại DAC_OVERRIDE, CHOWN và FOWNER, đồng thời đặt --security-opt no-new-privileges và --pids-limit 256, với /tmp và /var/tmp trên tmpfs được mount tại nosuid. Có một điểm khác biệt quan trọng. Tài liệu Hermes cho biết các kiểm tra lệnh nguy hiểm bị bỏ qua trên các backend docker, singularity, modal, daytona và vercel_sandbox "vì bản thân container là ranh giới bảo mật". Vì vậy, trên Hermes, mỗi backend dùng một trong hai lớp ngăn cách. Với backend local, bạn có bước yêu cầu phê duyệt nhưng không có container. Với docker, bạn có container nhưng không có bước yêu cầu phê duyệt.

Tài liệu Hermes cũng đưa ra một mô hình triển khai riêng: "chạy gateway trên một máy hoặc VM riêng" (virtual machine) với terminal.backend: ssh. Máy gateway lưu các token chat và model key nhưng không bao giờ chạy command. Máy worker chạy command và không lưu gì có giá trị để kẻ tấn công đánh cắp. Một VM tạm thời cho coding agent là worker phù hợp với mô hình này, vì bạn rebuild nó thay vì phải dọn sạch.

Bộ nhớ: hai tệp nhỏ được cố định, hoặc một workspace trực tiếp

Mô hình bộ nhớ khác nhau nhiều hơn bất kỳ khía cạnh nào khác trong phần so sánh này, và phần so sánh hai mô hình của mem0 là tài liệu giải thích rõ nhất về khác biệt đó. Tóm tắt của tài liệu: Hermes “tối ưu cho các phiên dài ổn định với cache”, còn “OpenClaw tối ưu cho khả năng hiển thị tức thời”.

Biểu đồPrompt-memory size limit per file, in characters
Dữ liệu đằng sau biểu đồ này
[
  {
    "label": "Hermes MEMORY.md (hard cap)",
    "char_limit": "2,200"
  },
  {
    "label": "Hermes USER.md (hard cap)",
    "char_limit": "1,375"
  },
  {
    "label": "OpenClaw MEMORY.md (soft target)",
    "char_limit": "20,000"
  }
]

Các số liệu của Hermes lấy từ tài liệu về bộ nhớ của dự án. Số liệu của OpenClaw là mục tiêu tương đối do mem0 báo cáo.

Hermes duy trì hai tệp trong ~/.hermes/memories/. MEMORY.md chứa ghi chú của chính agent và giới hạn ở 2,200 ký tự. USER.md chứa thông tin về bạn và giới hạn ở 1,375 ký tự. Tài liệu cho biết các giới hạn này là bắt buộc: ghi vượt giới hạn sẽ trả về lỗi thay vì âm thầm cắt ngắn. Agent chỉnh sửa các tệp này bằng ba động từ, add, replace và remove, trong đó replace và remove tìm khớp theo một chuỗi con. Cả hai tệp được nạp một lần khi bắt đầu phiên dưới dạng một block cố định trong system prompt, nhờ đó giữ prefix của prompt-cache ổn định. Đổi lại, khi agent ghi một memory trong lúc phiên đang chạy, memory đó được lưu trên disk ngay nhưng chưa xuất hiện trong prompt cho đến phiên tiếp theo. Với các thông tin cũ hơn, session_search chạy FTS5 (full-text search của SQLite) trên toàn bộ các cuộc hội thoại trước đó trong ~/.hermes/state.db.

OpenClaw coi memory là một workspace. ~/.openclaw/workspace/MEMORY.md là tệp chính, với mục tiêu tương đối khoảng 20,000 ký tự, cùng các ghi chú hằng ngày trong memory/YYYY-MM-DD.md; tệp của hôm nay và hôm qua được tự động nạp. Một tool memory_search thực hiện truy xuất kết hợp, gồm độ tương đồng vector và khớp từ khóa, trên toàn bộ dữ liệu đó. mem0 lưu ý rằng memory được chèn lại vào mỗi lượt, nên nội dung ghi mới sẽ hiển thị ở lượt tiếp theo.

Lựa chọn nào tốt hơn phụ thuộc vào công việc. Một agent Hermes chạy cùng một cron job mỗi đêm cần prompt ổn định và một tập thông tin nhỏ mà nó có thể tin cậy. Một assistant OpenClaw xử lý hàng trăm cuộc trò chuyện ngắn mỗi ngày cần nhớ điều bạn vừa nói một giờ trước mà không phải restart. Hermes liệt kê Mem0 trong số các plugin external memory provider. Bạn thêm plugin này bằng hermes plugins install mem0 và cấu hình bằng hermes memory setup; mem0 cũng phát hành một plugin @mem0/openclaw-mem0 cho OpenClaw. Tự host một memory server Mem0 cung cấp cho cả hai agent cùng một cơ chế trích xuất thông tin phía server và loại bỏ giới hạn kích thước khỏi cuộc trò chuyện. Bất kỳ tệp nào agent ghi vào đều trở thành đầu vào mà nó tin cậy về sau, vì vậy cách memory của agent bị đầu độc áp dụng cho cả hai dự án và cho các skill trong phần tiếp theo.

Kỹ năng: quy trình tự viết hoặc registry công khai

Hermes tự viết các skill. Một skill là một thư mục bên dưới ~/.hermes/skills/, có thư mục SKILL.md và tùy chọn các thư mục scripts/, references/, templates/ và examples/, theo định dạng agentskills.io. Agent có tool skill_manage. System prompt của agent nêu 3 trigger để viết skill: agent đã xây dựng được một quy trình nhiều bước đáng lặp lại, đã tìm ra workaround sau một lỗi, hoặc đã tiếp nhận một correction từ bạn. Tài liệu mô tả mục tiêu là "bài học, không phải log". Nếu không muốn agent tự chỉnh sửa instruction set mà không được review, hãy đặt skills.write_approval: true. Khi đó, skill mới sẽ được stage bên dưới ~/.hermes/pending/skills/ cho đến khi bạn approve. Hermes cũng có thể cài skill từ bên ngoài bằng hermes skills install <identifier>: từ các GitHub repo như anthropics/skills, từ skills.sh, từ URL trực tiếp đến SKILL.md, hoặc trực tiếp từ ClawHub. Tài liệu cho biết mọi lần cài từ hub đều được scan để phát hiện data exfiltration, prompt injection và destructive command. Có thể dùng --force để override một finding của community nếu finding đó không nguy hiểm. Tuy nhiên, một "kết quả scan nguy hiểm" vẫn chặn việc cài đặt ngay cả khi có --force.

OpenClaw tải skill và plugin từ ClawHub, registry công khai của nó. openclaw skills search "calendar" tìm skill, openclaw skills install @openclaw/demo cài skill, openclaw skills update --all giữ chúng luôn cập nhật, còn code plugin sẽ đi qua openclaw plugins install clawhub:<package>. Skill được nạp từ một tập thư mục theo thứ tự ưu tiên: <workspace>/skills được ưu tiên hơn <workspace>/.agents/skills và ~/.agents/skills, tiếp theo là <state-dir>/skills được quản lý, sau đó là các skill mà agent đã học trong workshop, rồi đến bộ skill đi kèm. SKILL.md của một skill có thể khai báo metadata.openclaw.requires.bins và requires.env. OpenClaw sẽ loại skill đó ngay khi nạp nếu thiếu binary hoặc biến tương ứng. Đây là lỗi rõ ràng hơn so với một skill chỉ hoạt động một phần. Agent cũng tự viết skill. Skill Workshop lưu các skill đã học này. Tài liệu ghi rằng "Mọi thay đổi được áp dụng ngay lập tức, phiên bản trước được lưu trước, và có thể hoàn tác." Với skills.workshop.autonomous.mode: auto mặc định, một background review sẽ tự tạo và cập nhật các skill. Bạn hoàn tác thay đổi bằng cách trả lời "undo" trong chat, từ Control UI hoặc bằng openclaw skills workshop restore <name>. Đặt mode thành off sẽ dừng background review, nhưng agent vẫn viết skill khi bạn yêu cầu.

Các cơ chế review khác nhau ở nơi thực hiện kiểm tra. Tài liệu ClawHub cho biết hệ thống "chạy kiểm tra tự động trên các skill đã publish và các bản phát hành plugin", các bản phát hành bị giữ để scan hoặc bị block có thể biến mất khỏi catalogue công khai, user đã đăng nhập có thể report một package và moderator có thể ẩn package đó. Việc publish cũng cần một GitHub account đủ cũ để vượt qua upload gate. Đây là review tại registry. Hermes chạy scan lúc cài đặt trên máy của bạn, còn write-approval gate áp dụng cho các skill do chính agent của nó viết. Skill mà OpenClaw học được không có bước approval; cơ chế kiểm tra ở đây là lịch sử undo. Trang skill của OpenClaw vẫn kết thúc bằng dòng quan trọng cho cả hai hệ thống: "Hãy coi skill bên thứ ba là code không đáng tin cậy. Đọc chúng trước khi bật."

Các tùy chọn model và xác thực, cùng câu hỏi về gói Claude

Cả hai project đều chạy bằng API key hoặc model cục bộ, và cả hai đều định tuyến qua OpenRouter. Điểm khác biệt nằm ở các cách dùng subscription, cũng là điều mà hầu hết người tìm kiếm chủ đề này muốn biết.

API key. Hermes đọc ANTHROPIC_API_KEY, OPENROUTER_API_KEY, OPENAI_API_KEY và nhiều biến khác từ ~/.hermes/.env. hermes model cho phép chọn provider và model bằng giao diện tương tác, còn hermes config get model.default hiển thị lựa chọn đó. Nous Portal là provider riêng: hermes setup --portal là một lần đăng nhập OAuth, cung cấp cả model provider và hosted tool gateway. OpenClaw nhận ANTHROPIC_API_KEY qua openclaw onboard --anthropic-api-key "$ANTHROPIC_API_KEY", còn openclaw models list --provider anthropic hiển thị những gì nó có thể truy cập. Tài liệu của project cho biết thiết lập API mới và Claude CLI mặc định dùng Opus 5.5 (anthropic/claude-opus-5-5), đồng thời liệt kê anthropic/claude-sonnet-5-5 và anthropic/claude-fable-5-1; bạn phải chọn các model này một cách rõ ràng.

Model cục bộ qua Ollama. Hai project trỏ đến Ollama theo cách khác nhau, và nhầm lẫn hai cách này sẽ khiến hệ thống lỗi. Hermes dùng endpoint tương thích OpenAI: trong config.yaml, đặt model.provider: custom và model.base_url: http://localhost:11434/v1, hoặc chọn "Custom endpoint" trong hermes model. Tài liệu cũng nêu rằng Hermes "yêu cầu context ít nhất 64,000 token để agent sử dụng tool", trong khi giá trị mặc định của Ollama thấp hơn nhiều, vì vậy hãy khởi động Ollama bằng OLLAMA_CONTEXT_LENGTH=64000 ollama serve. OpenClaw làm ngược lại. Trang Ollama của project ghi: "Không dùng URL tương thích OpenAI /v1 (http://host:11434/v1). URL này làm hỏng việc gọi tool và model có thể xuất raw tool-call JSON dưới dạng văn bản thường." Theo mặc định, OpenClaw giao tiếp với /api/chat native của Ollama. Base URL phải được cung cấp không kèm path, như trong http://host:11434, và model được đặt tên là ollama/<model>. Nếu bỏ trống base URL, project sẽ dùng host cục bộ mặc định. Cùng một daemon nhưng dùng hai URL ngược nhau.

Một subscription Claude. Dưới đây là chính xác những gì tài liệu của từng project nêu, tính đến tháng 10 năm 2026, không thêm thông tin nào khác.

Hermes: có thể đăng nhập OAuth qua hermes model (chọn Anthropic OAuth) hoặc hermes auth add anthropic --type oauth, sau đó Hermes định tuyến "theo cách Claude Code sử dụng account Anthropic của bạn". Tài liệu nói thêm: "Tính năng này chỉ hoạt động nếu bạn dùng gói Claude Max và đã mua thêm usage credits." Hạn mức Max cơ bản không bị trừ; usage được tính vào extra credits. Claude Pro không thể dùng cách này, và tài liệu provider hướng người dùng Pro đến ANTHROPIC_API_KEY.

Hermes cũng mô tả một cách riêng thứ hai, mới hơn tag được dùng để cố định trong phần so sánh này: plugin thử nghiệm claude-subscription-directsdk. Plugin yêu cầu Hermes 0.21.4 trở lên, vì vậy v2026.9.7 (v0.21.1) không thể load plugin này. Trang hướng dẫn yêu cầu subscription Claude Pro hoặc Max và Claude Code CLI chính thức, đã được cài đặt và đăng nhập. Plugin không tự lưu credential mà gửi mọi lượt xử lý qua claude, nên không cần API key riêng. Mỗi lượt sử dụng Agent SDK allowance của subscription và được tính theo cùng mức với claude -p. Extra usage credits chỉ được dùng trong một trường hợp ngoại lệ: trên Pro, Fable 5.1 tính phí vào usage credits ngay từ request đầu tiên, và trang hướng dẫn ghi: "Hãy tắt extra usage trong account nếu bạn không muốn bị tính phí vượt hạn mức." Cài đặt bằng hermes plugins install claude-subscription-directsdk, chạy claude auth login, sau đó chọn "Claude Subscription DirectSDK (Experimental)" trong hermes model.

OpenClaw: tài liệu mô tả việc dùng lại "một Claude Code login hiện có thông qua executable đã cài trên cùng host". Bạn cài Claude CLI trên VPS, chạy claude auth login, rồi chọn "Claude CLI" trong openclaw onboard. Cách thứ hai dùng setup token: chạy claude setup-token, sau đó chạy openclaw models auth login --provider anthropic --method setup-token. Hai câu trong cùng trang tài liệu nêu rõ giới hạn: "Claude Code quản lý login và subscription hiện có; OpenClaw không lưu hoặc refresh login đó", và usage của subscription qua Agent SDK, claude -p cùng các app bên thứ ba "vẫn được tính vào usage limit của subscription đang đăng nhập".

Hai project mô tả cách tính phí usage này khác nhau, và không trang nào trong số đó là tài liệu của Anthropic. Trước khi xây dựng workload chạy hằng đêm bằng subscription login, hãy đọc điều khoản hiện tại của Anthropic về việc sử dụng gói Claude qua bên thứ ba. Cả hai project đều có tài liệu cho một cách dùng, và mọi cách đều đi qua identity của Claude Code thay vì chỉ dùng login claude.ai thông thường. Hermes giới hạn cách OAuth của mình cho Max kèm extra credits, còn plugin thử nghiệm dùng Pro hoặc Max thông qua Claude CLI đã đăng nhập. Cách dùng Claude CLI của OpenClaw yêu cầu login đó trên cùng host, còn cách dùng setup token nhận token được tạo trên bất kỳ máy nào đã cài Claude Code.

Các subscription khác. Hermes cũng có tài liệu về OpenAI Codex qua device-code OAuth với ChatGPT plan, và GitHub Copilot qua device flow, dù trang Codex nói rằng các tier nào đủ điều kiện thì "hiện chưa được ghi rõ trong tài liệu". OpenClaw liệt kê Codex trong số các harness có thể thay đổi. Nếu bạn đã trả phí cho một trong các dịch vụ đó, đây là lý do thực tế để ưu tiên project có tài liệu hỗ trợ dịch vụ tương ứng.

Quan điểm bảo mật theo cách diễn đạt của từng dự án

Hermes kiểm soát lệnh. approvals.mode trong config.yaml mặc định là smart: một model phụ sẽ đánh giá từng lệnh. Lệnh rủi ro thấp được chạy, còn lệnh rõ ràng nguy hiểm sẽ bị từ chối. Với mọi lệnh chưa chắc chắn, hệ thống sẽ hỏi bạn. manual luôn hỏi khi phát hiện lệnh nguy hiểm, còn off tắt cơ chế kiểm soát này. Bộ quét phát hiện lệnh xóa đệ quy, chmod 777 và các biến thể liên quan, mkfs, dd if=, thao tác redirect vào /etc/, systemctl stop, restart, disable hoặc mask, DROP TABLE, curl ... | sh và fork bomb. Trong chat, gateway gửi lệnh và chờ yes, y, approve, ok hoặc go; dùng no, n, deny hoặc cancel để từ chối. Sau thời gian chờ mặc định 300 giây, lệnh sẽ bị từ chối. Flag --yolo (hoặc /yolo trong một session, hoặc HERMES_YOLO_MODE=1) bỏ qua các prompt, nhưng blocklist cứng vẫn có hiệu lực: rm -rf / và các biến thể rõ ràng của nó, fork bomb, mkfs trên root đã mount, dd từ /dev/zero vào disk, và URL không đáng tin được pipe vào sh. Hãy nhớ rằng theo phần containment, cơ chế kiểm soát này bị tắt trên các container backend.

OpenClaw thiết lập ranh giới. Trang bảo mật của dự án nói Gateway là “một ranh giới tin cậy cho mỗi gateway” và “không phải ranh giới bảo mật multi-tenant chống lại những người dùng đối địch nhau”. Vì vậy, hai người không tin cậy lẫn nhau cần dùng hai Gateway với hai bộ credential. Chính sách cho phép và từ chối tool được kiểm tra trước các rule của sandbox, nên một tool bị từ chối trên toàn hệ thống vẫn bị từ chối bên trong sandbox. Profile quyền truy cập theo từng agent và chế độ chỉ đọc giới hạn những gì agent có thể truy cập. openclaw security audit đối chiếu cấu hình đang chạy với các giá trị mặc định an toàn. Phần skills gồm quy trình review trên ClawHub được mô tả ở trên, lịch sử hoàn tác của Skill Workshop và hướng dẫn đọc skills bên thứ ba trước khi enable chúng.

Cả hai dự án đều không tuyên bố nhiều hơn thế. Hermes không tuyên bố bộ quét của mình phát hiện được mọi thứ, và tài liệu của dự án khuyến nghị dùng container hoặc máy thứ hai khi mức độ rủi ro tăng. OpenClaw không tuyên bố sandbox có thể chứa chính Gateway, và dự án nêu rõ điều đó trên trang sandbox. Đây đều là những tài liệu trung thực, một dấu hiệu tốt đối với phần mềm bạn dự định để chạy unattended.

Ma trận quyết định

Workflow lặp lại: Hermes. Cron job có memory, một skill được ghi lại sau lần thứ ba thực hiện cùng một tác vụ, một memory không thể vượt quá giới hạn, và terminal backend do bạn chọn theo mức rủi ro. Nếu phần lớn thời gian trong tuần của agent dành cho job và chỉ thỉnh thoảng trò chuyện, đây là lựa chọn phù hợp.

Khả năng tiếp cận qua messaging: OpenClaw. Hơn 20 kênh phía sau một Gateway, mặc định yêu cầu ghép nối DM trên Telegram và WhatsApp, một Control UI dùng cùng cổng, cùng registry chứa các skill và plugin có sẵn. Nếu phần lớn thời gian trong tuần của agent là trò chuyện trên nhiều ứng dụng và chỉ thỉnh thoảng chạy job, đây là lựa chọn phù hợp.

Một máy: dùng sản phẩm nào cũng được, tùy ranh giới bạn cần. Chạy OpenClaw trên một VPS với user riêng, gateway.bind: loopback, một token và sandbox.mode: all. Chạy Hermes trên một VPS với terminal.backend: docker, nhưng cần biết approval gate bị tắt bên trong container; hoặc dùng terminal.backend: local và approvals.mode: manual, nhưng cần biết approval sai sẽ được thực thi trên host.

Hai máy: Hermes, theo tài liệu của chính dự án. Đặt Gateway trên một VPS, dùng terminal.backend: ssh để kết nối đến một worker VPS; đặt chat token và model key trên máy thứ nhất, còn máy thứ hai không chứa dữ liệu đáng giữ lại. OpenClaw có thể chạy phía sau reverse proxy với xác thực trusted-proxy, nhưng Gateway vẫn thực thi trên host riêng, trừ khi mọi agent đều được sandbox.

Chỉ dùng model local: kiểm tra URL hai lần. Hermes yêu cầu /v1 và context 64k. OpenClaw từ chối /v1 và yêu cầu native API.

Đang trả phí Claude Max kèm extra credits: Hermes có tài liệu cho cách này, nhưng phạm vi hỗ trợ hẹp. Nếu đã chạy Claude Code trên cùng host, OpenClaw có tài liệu về cách tái sử dụng nó; trên Hermes 0.21.4 trở lên, plugin DirectSDK thử nghiệm cũng hỗ trợ cách này với Pro hoặc Max. Nếu đang trả phí Claude Pro, OAuth của Hermes không dùng được cho bạn, vì vậy hãy dùng plugin của nó hoặc một API key; API key hoạt động với cả hai project.

Chưa quyết định giữa hai lựa chọn này và các sản phẩm khác: bài tổng quan về agent tự host đặt cả hai cạnh Agent Zero, OpenHands và các lựa chọn khác trên cùng các tiêu chí.

FAQ

Hermes Agent có thể dùng gói thuê bao Claude Max không?

Tài liệu của Hermes nói là có, theo 2 cách. Đăng nhập Anthropic OAuth qua hermes model hoặc hermes auth add anthropic --type oauth sẽ định tuyến dưới dạng Claude Code bằng tài khoản của bạn. Tài liệu ghi rõ cách này “chỉ hoạt động nếu bạn dùng gói Claude Max và đã mua thêm credit sử dụng”. Mức sử dụng sẽ trừ vào số credit bổ sung đó, không trừ vào hạn mức cơ bản. Plugin thử nghiệm claude-subscription-directsdk, trên Hermes 0.21.4 trở lên, hoạt động với gói Pro hoặc Max thông qua Claude Code CLI đã đăng nhập. Mỗi lượt chạy sẽ dùng hạn mức Agent SDK của gói thuê bao. Tính đến tháng 10 năm 2026, hãy đọc điều khoản riêng của Anthropic trước khi dùng một trong hai cách này cho các tác vụ không cần giám sát.

OpenClaw có cần mở một cổng trên VPS không?

Không, nếu dùng theo cách thông thường. Gateway lắng nghe trên TCP 18789, nhưng gateway.bind mặc định là loopback nên chỉ trả lời trên 127.0.0.1. Truy cập Control UI tại http://127.0.0.1:18789 thông qua SSH tunnel. Telegram dùng long polling. WhatsApp chạy qua một phiên WhatsApp Web do Gateway tự mở. Vì vậy, không channel nào cần cổng inbound, trừ khi bạn chọn chế độ webhook tùy chọn của Telegram. Nếu bind vào lan hoặc tailnet, tài liệu yêu cầu bật gateway auth: shared token hoặc password, hoặc đặt một identity-aware proxy phía trước.

Nên để agent nào chạy không cần giám sát thì an toàn hơn?

Không agent nào an toàn khi chạy trên backend local với approvals bị tắt. Cách an toàn nhất với Hermes là tách thành 2 máy: chạy gateway trên một VPS và terminal.backend: ssh đến một worker VPS. Đây cũng là cách tài liệu của Hermes khuyến nghị “để đạt mức bảo mật cao nhất”. Với OpenClaw, cách an toàn nhất là dùng user không có quyền đặc biệt riêng, gateway.bind: loopback, một token và agents.defaults.sandbox.mode: all. Với cả hai agent, hãy coi các file memory và thư mục skills là dữ liệu đầu vào mà attacker có thể ghi thông qua một tin nhắn chat.

Tôi có thể chạy Hermes Agent và OpenClaw trên cùng một VPS không?

Có. Hai agent không dùng chung port hoặc thư mục. Hermes lưu toàn bộ dữ liệu trong ~/.hermes/. Core gateway của Hermes không mở listening port. WhatsApp bridge tùy chọn của Hermes dùng port 3000. OpenClaw lưu toàn bộ dữ liệu trong ~/.openclaw/ và lắng nghe trên 127.0.0.1:18789. Tạo một Linux user riêng cho mỗi agent để agent bị compromise không thể đọc chat token của agent còn lại. Không trỏ cả hai agent vào cùng một Telegram bot token. Telegram chỉ cho phép một long-polling client trên mỗi bot và sẽ trả lời client thứ hai bằng 409 Conflict: terminated by other getUpdates request.

Làm cách nào để cố định mỗi project ở một release?

Installer và npm của OpenClaw đều nhận version cụ thể: curl -fsSL https://openclaw.ai/install.sh | bash -s -- --version 2026.9.4 hoặc npm install -g openclaw@2026.9.4 --allow-scripts=openclaw. npm view openclaw versions liệt kê các version đã được publish. Installer của Hermes nhận --commit SHA. Vì vậy, hãy lấy commit tương ứng với v2026.9.7 bằng git ls-remote --tags https://github.com/NousResearch/hermes-agent v2026.9.7 rồi truyền commit đó vào bash -s -- --commit <sha>. Cả hai project đều phát hành nhiều lần mỗi tháng. Hermes hiện gắn tag release bằng số version thay vì ngày tháng, nên hãy ghi lại tag mà bạn đã kiểm thử.

#hermes-agent#openclaw#self-hosted-ai-agents#ai-agents#vps