Hermes Profile Distributions

Profile Distributions: แชร์ Agent ทั้งตัว

Profile Distribution คือการแพ็กเกจ Hermes agent ทั้งหมด — บุคลิกภาพ, skills, cron jobs, การเชื่อมต่อ MCP, config — ลงใน git repository คนที่มีสิทธิ์เข้าถึง repo ก็สามารถติดตั้ง agent ตัวเต็มได้ด้วยคำสั่งเดียว อัปเดตได้ทันที โดยที่ memories, sessions และ API keys ของแต่ละคนยังคงแยกกันอยู่

ถ้า profile คือ agent ที่ทำงานบนเครื่อง local แล้ว distribution ก็คือ agent นั้นที่ถูกทำให้แชร์ได้ง่าย

ความหมายของ Distribution

ก่อนมี distribution การแชร์ Hermes agent หมายถึงการส่งให้คนอื่น:

  1. SOUL.md ของคุณ

  2. รายการ skills ที่ต้องติดตั้ง

  3. config.yaml (ตัด secrets ออก)

  4. คำอธิบายว่าต่อ MCP servers อะไรไว้บ้าง

  5. cron jobs ที่เคยตั้งไว้

  6. คำแนะนำเรื่อง env vars ที่ต้องใช้

…แล้วหวังว่าเขาจะประกอบถูก ทุกครั้งที่อัปเดตเวอร์ชันหรือแก้ bug ก็ต้องส่งใหม่ซ้ำเดิม

แต่ด้วย distribution สิ่งทั้งหมดนี้รวมอยู่ใน git repo เดียว:

my-research-agent/
├── distribution.yaml    # manifest: ชื่อ, เวอร์ชัน, ข้อกำหนด env vars
├── SOUL.md              # บุคลิกภาพ / system prompt ของ agent
├── config.yaml          # model, temperature, reasoning, tool defaults
├── skills/              # bundled skills ที่มากับ agent
├── cron/                # งานที่ agent จะรันตามกำหนด
└── mcp.json             # MCP servers ที่ agent เชื่อมต่อ

ผู้รับแค่รัน:

hermes profile install github.com/you/my-research-agent --alias

พวกเขาก็ได้ agent ตัวเต็มทันที กรอก API keys ของตัวเอง (.env.EXAMPLE → .env) แล้วเริ่มใช้ my-research-agent chat หรือติดต่อผ่าน Telegram / Discord / Slack / gateway platform ใดๆ ก็ได้ เมื่อคุณ push เวอร์ชันใหม่ ผู้ใช้ก็รัน hermes profile update my-research-agent เพื่อดึงการเปลี่ยนแปลง — memories และ sessions ของพวกเขาไม่โดนแตะ

ทำไมต้องใช้ git?

เราเคยพิจารณา tarballs, HTTP archives, รูปแบบเฉพาะของตัวเอง แต่ไม่มีอะไรดีกว่า git:

  • Zero build step สำหรับผู้สร้าง — push ขึ้น GitHub ผู้บริโภคก็ install ได้เลย ไม่ต้องมีขั้นตอน "pack this, upload that, update the index"

  • Tags, branches, commits คือระบบ versioning อยู่แล้ว การ push tag ทำหน้าที่เหมือน "pack + upload release" ของเครื่องมืออื่น

  • อัปเดตคือการ fetch ไม่ใช่ดาวน์โหลด archive ใหม่ทั้งหมด

  • โปร่งใส — ผู้ใช้สามารถ browse repo อ่าน diff ระหว่างเวอร์ชัน เปิด issue fork เพื่อ customize ได้

  • Private repos ใช้งานได้ฟรี — SSH keys, git credential helpers, GitHub CLI stored credentials อะไรก็ตามที่ terminal ตั้งไว้แล้ว ก็ใช้ได้ทันที

  • Reproducibility คือ commit SHA เหมือน pip และ npm บันทึกไว้

ข้อแลกเปลี่ยน: ผู้ใช้ต้องมี git ติดตั้ง แต่บนเครื่องที่รัน Hermes ในปี 2026 นั่นเป็นเรื่องปกติอยู่แล้ว

เมื่อไหร่ควรใช้ Distribution?

เหมาะสำหรับ:

  • กำลังแชร์ agent เฉพาะทาง — compliance monitor, code reviewer, research assistant, customer-support bot — กับทีมหรือชุมชน

  • Deploy agent เดียวกันไปยังหลายเครื่อง โดยไม่อยาก copy ไฟล์ทีละเครื่อง

  • กำลัง iterate บน agent และต้องการให้ผู้ใช้นำเวอร์ชันใหม่มาด้วยคำสั่งเดียว

  • กำลังสร้าง agent เป็น product — opinionated defaults, curated skills, tuned prompts — ที่คนอื่นควรใช้เป็นจุดเริ่มต้น

ไม่เหมาะสำหรับ:

  • แค่อยาก backup profile บนเครื่องตัวเอง → ใช้ hermes profile export / import จะเหมาะสมกว่า

  • อยากแชร์ API keys ไปด้วยกับ agent → auth.json และ .env ถูกยกเว้นจาก distribution โดยตั้งใจ ผู้ติดตั้งแต่ละคนต้องนำ credentials ของตัวเองมา

  • อยากแชร์ memories / sessions / ประวัติการสนทนา → นี่คือข้อมูลของผู้ใช้ ไม่ใช่เนื้อหาของ distribution ไม่เคยส่งออกไป

Lifecycle: ผู้สร้าง → ผู้ติดตั้ง → อัปเดต

สำหรับผู้สร้าง: การเผยแพร่ Distribution

ขั้นตอนที่ 1 — เริ่มจาก profile ที่ทำงานได้แล้ว

hermes profile create research-bot
research-bot setup                    # ตั้งค่า model, API keys
# แก้ไข ~/.hermes/profiles/research-bot/SOUL.md
# ติดตั้ง skills, ต่อ MCP servers, ตั้ง cron jobs ฯลฯ
research-bot chat                     # ทดสอบจนกว่าจะรู้สึกดี

ขั้นตอนที่ 2 — เพิ่ม distribution.yaml

สร้าง ~/.hermes/profiles/research-bot/distribution.yaml:

name: research-bot
version: 1.0.0
description: "Autonomous research assistant with arXiv and web tools"
hermes_requires: ">=0.12.0"
author: "Your Name"
license: "MIT"

env_requires:
  - name: OPENAI_API_KEY
    description: "OpenAI API key (for model access)"
    required: true
  - name: SERPAPI_KEY
    description: "SerpAPI key for web search"
    required: false
    default: ""

นั่นคือ manifest ทั้งหมด ทุก field นอกจากชื่อมีค่า default ที่สมเหตุสมผลอยู่แล้ว

ขั้นตอนที่ 3 — Push ขึ้น git repo

cd ~/.hermes/profiles/research-bot
git init
git add .
git commit -m "v1.0.0"
git remote add origin git@github.com:you/research-bot.git
git tag v1.0.0
git push -u origin main --tags

repo นี้คือ distribution แล้ว คนที่มีสิทธิ์เข้าถึงก็สามารถ install ได้

ขั้นตอนที่ 4 — Tag เวอร์ชันที่เสถียร

ทุกครั้งที่ agent ถึงจุดที่เสถียร ให้ bump version และ tag:

# แก้ไข distribution.yaml: version: 1.1.0
git add distribution.yaml SOUL.md skills/
git commit -m "v1.1.0: tighter research SOUL, add arxiv skill"
git tag v1.1.0
git push --tags

ผู้รับที่รัน hermes profile update research-bot จะดึงเวอร์ชันล่าสุดมา

สำหรับผู้ติดตั้ง: การใช้ Distribution

Install:

hermes profile install github.com/you/research-bot --alias

สิ่งที่เกิดขึ้น:

  1. Clone repo ลง temporary directory

  2. อ่าน distribution.yaml แสดง manifest (ชื่อ, เวอร์ชัน, คำอธิบาย, ผู้สร้าง, env vars ที่จำเป็น)

  3. ตรวจสอบแต่ละ env var กับ shell environment และ .env ที่มีอยู่ บอกว่า ✓ set หรือต้องตั้งค่า

  4. ขอ confirmation (ใช้ -y / --yes เพื่อข้าม)

  5. คัดลอกไฟล์ที่ distribution เป็นเจ้าของลง ~/.hermes/profiles/research-bot/

  6. เขียน .env.EXAMPLE พร้อม key ที่จำเป็นแบบ comment — copy ไป .env แล้วกรอกค่า

Source types: git URL ใดๆ ก็ใช้ได้:

# GitHub shorthand
hermes profile install github.com/you/research-bot

# Full HTTPS
hermes profile install https://github.com/you/research-bot.git

# SSH
hermes profile install git@github.com:you/research-bot.git

# Self-hosted, GitLab, Gitea, Forgejo — git host ใดๆ ก็ได้
hermes profile install https://git.example.com/team/research-bot.git

# Private repo ใช้ git auth ที่ตั้งค่าไว้แล้ว
hermes profile install git@github.com:your-org/internal-bot.git

# Local directory ระหว่างพัฒนา (ไม่ต้อง push git)
hermes profile install ~/my-profile-in-progress/

Override ชื่อ profile:

ผู้ใช้สองคนต้องการ distribution เดียวกันแต่ชื่อต่างกัน:

# Alice
hermes profile install github.com/acme/support-bot --name support-us --alias
# Bob (distribution เดียวกัน แต่ชื่อ local ต่างกัน)
hermes profile install github.com/acme/support-bot --name support-eu --alias

กรอก env vars:

หลัง install profile จะมี .env.EXAMPLE:

cp ~/.hermes/profiles/research-bot/.env.EXAMPLE ~/.hermes/profiles/research-bot/.env
# แก้ไข .env ใส่ API keys จริงของคุณ

env var ที่จำเป็นซึ่งมีอยู่แล้วใน shell environment (เช่น OPENAI_API_KEY ใน ~/.zshrc) จะถูกทำเครื่องหมาย ✓ set ตอน install — ไม่ต้อง duplicate ใน .env

ตรวจสอบสิ่งที่ติดตั้ง:

hermes profile info research-bot

แสดงข้อมูล: distribution, เวอร์ชัน, คำอธิบาย, ผู้สร้าง, requirements, source URL, วันที่ติดตั้ง, และ env vars ที่จำเป็น

hermes profile list ยังแสดงคอลัมน์ Distribution ให้เห็นได้ทันทีว่า profile ไหนมาจาก repo กับไหนสร้างเอง

อัปเดต:

hermes profile update research-bot

สิ่งที่เกิดขึ้น:

  1. Re-clone repo จาก source URL ที่บันทึกไว้

  2. แทนที่ไฟล์ distribution-owned (SOUL, skills, cron, mcp.json)

  3. รักษา config.yaml ไว้ — คุณอาจ tune model, temperature หรือ setting อื่นๆ ใช้ --force-config เพื่อ overwrite

  4. ไม่แตะ user data เลย: memories, sessions, auth, .env, logs, state

ลบ:

hermes profile delete research-bot

ก่อนลบจะแสดงข้อมูล distribution ให้คุณรู้ที่มาที่ไป ก่อนยืนยันการลบ

Use Cases และ Patterns

Personal: ซิงค์ agent เดียวกันข้ามเครื่อง

สร้าง research assistant บนแล็ปท็อป อยากให้ agent เดียวกันบนเวิร์กสเตชัน:

# แล็ปท็อป
cd ~/.hermes/profiles/research-bot
git init && git add . && git commit -m "initial"
git remote add origin git@github.com:you/research-bot.git
git push -u origin main

# เวิร์กสเตชัน
hermes profile install github.com/you/research-bot --alias
# กรอก .env จบ

ทุก iteration บนแล็ปท็อป (git commit && push) จะ pull ไปเวิร์กสเตชันด้วย hermes profile update Memories แต่ละเครื่องแยกกัน — แล็ปท็อปจำการสนทนาของตัวเอง เวิร์กสเตชันก็เช่นกัน ไม่ชนกัน

Team: ส่ง agent ภายในทีมที่ผ่านการ review

ทีม engineering ต้องการ PR-review bot ที่มี SOUL เฉพาะ, skills เฉพาะ และ cron ที่รันทุก PR ผ่าน bot:

# Engineering lead
cd ~/.hermes/profiles/pr-reviewer
git init && git add . && git commit -m "v1.0 PR reviewer"
git tag v1.0.0
git push -u origin main --tags

# วิศวกรแต่ละคน
hermes profile install git@github.com:your-org/pr-reviewer.git --alias
pr-reviewer chat

เมื่อ lead ส่ง v1.1 (SOUL ดีขึ้น, skill ใหม่) วิศวกรรัน hermes profile update pr-reviewer ทุกคนก็ได้เวอร์ชันใหม่ภายในนาที

Community: เผยแพร่ agent สาธารณะ

สร้างอะไรที่แปลกใหม่ — "Polymarket trader" หรือ "academic paper summarizer" อยากแชร์ให้ทุกคนใช้:

# คุณ
cd ~/.hermes/profiles/polymarket-trader
git init && git add . && git commit -m "v1.0"
git tag v1.0.0
git remote add origin https://github.com/you/hermes-polymarket-trader.git
git push -u origin main --tags

# ทุกคน
hermes profile install github.com/you/hermes-polymarket-trader --alias

ทวีตคำสั่ง install คนที่ลองส่ง issue และ PR ให้คุณ ถ้าใครอยาก customize ก็ fork — workflow git แบบเดิมที่ทุกคนคุ้นเคย

Product: ส่ง agent เป็น product

สร้าง Hermes-on-top — compliance-monitoring harness, customer-support stack, research platform เฉพาะโดเมน อยาก distribute เป็น product:

# distribution.yaml
name: telemetry-harness
version: 2.3.1
description: "Compliance telemetry harness"
hermes_requires: ">=0.13.0"
author: "Acme Compliance Inc."
license: "Commercial"

env_requires:
  - name: ACME_API_KEY
    description: "Your Acme Compliance license key"
    required: true

ลูกค้า install ด้วยคำสั่งเดียว อัปเดต rollout ทันทีที่ tag release ใหม่ — compliance data (memories/, sessions/) ไม่เคยออกจากเครื่องพวกเขา

Ephemeral: สคริปต์ชั่วคราวบน shared infra

คุณเป็น ops lead ต้องการ agent ชั่วคราวที่วินิจฉัย production incident — SOUL พร้อม tools และ MCP connections ที่ถูกต้อง — รันบนแล็ปท็อปของ on-call engineers 3 คนในสัปดาห์หน้า:

# คุณ
git push -u origin main

# On-call แต่ละคน
hermes profile install git@github.com:your-org/incident-2026-q2.git --alias

# Incident แก้ไขแล้ว — ลบทิ้ง
hermes profile delete incident-2026-q2

cycle install-delete ถูกพอที่จะเป็น disposable ได้

Recipes

Pin เวอร์ชันเฉพาะ: Git ref pinning (#v1.2.0) ยังไม่มาในเวอร์ชันแรก ตอนนี้อัปเดตตาม default branch ตรวจสอบเวอร์ชันที่ติดตั้งด้วย hermes profile info <name>

ตรวจสอบเวอร์ชันปัจจุบัน vs ล่าสุด:

# เวอร์ชันที่ติดตั้งของคุณ
hermes profile info research-bot | grep Version

# Latest upstream (โดยไม่ต้อง install)
git ls-remote --tags https://github.com/you/research-bot | tail -5

รักษา local config customization ผ่านการอัปเดต:

ค่า default ของ update รักษา config.yaml ไว้แล้ว เพื่อความปลอดภัย ให้เขียน tweak ของคุณลงไฟล์ที่ distribution ไม่เป็นเจ้าของ:

# ~/.hermes/profiles/research-bot/local/my-overrides.yaml

Force clean re-install:

# ลบและ install ใหม่ทั้งหมด (เสีย memories/sessions ด้วย)
hermes profile delete research-bot --yes
hermes profile install github.com/you/research-bot --alias

# อัปเดตเป็น current main แต่ reset config.yaml เป็น default ของ distribution
hermes profile update research-bot --force-config --yes

Fork และ customize:

# Fork repo บน GitHub แล้ว install fork ของคุณ
hermes profile install github.com/yourname/forked-research-bot --alias

# Iterate ใน ~/.hermes/profiles/forked-research-bot/
# แก้ SOUL.md, commit, push ไปที่ fork ของคุณ
# อัปเดตจาก upstream: pull เข้า fork ตามปกติ

ทดสอบ distribution ก่อน push:

# Install จาก local directory (ไม่ต้อง push git)
hermes profile install ~/.hermes/profiles/research-bot --name research-bot-test --alias

# Tweak, delete, re-install จนกว่าจะถูกต้อง
hermes profile delete research-bot-test --yes
hermes profile install ~/.hermes/profiles/research-bot --name research-bot-test

สิ่งที่ NOT อยู่ใน distribution (ตลอดกาล)

Installer จะยกเว้น path เหล่านี้เสมอ แม้ผู้สร้างจะเผลอใส่เข้ามา ไม่มี config option ให้ override — safety guard นี้เป็น regression-tested invariant:

  • auth.json — OAuth tokens, platform credentials

  • .env — API keys, secrets

  • memories/ — conversation memory

  • sessions/ — conversation history

  • state.db, state.db-shm, state.db-wal — session metadata

  • logs/ — agent และ error logs

  • workspace/ — generated working files

  • plans/ — scratch plans

  • home/ — user's home mount ใน Docker backends

  • *_cache/ — image / audio / document caches

  • local/ — user-reserved customization namespace

เมื่อคุณ clone distribution path เหล่านี้ไม่มีอยู่จริง เมื่อคุณ update พวกมันยังคงอยู่ ถ้าคุณ install distribution เดียวกันบน 5 เครื่อง คุณจะมีข้อมูลแยกกัน 5 ชุด — หนึ่งในแต่ละเครื่อง

Security และ Trust

Profile distributions ยังไม่ได้ sign โดย default คุณต้อง trust:

  • git host (GitHub / GitLab / ที่ไหนก็ตาม) ว่าส่งข้อมูลที่ผู้สร้าง push มาจริงๆ

  • ผู้สร้าง ว่าไม่ใส่ malicious SOUL, skills หรือ cron jobs เข้ามา

cron jobs จาก distribution ไม่ถูก schedule อัตโนมัติ — installer จะพิมพ์ hermes -p <name> cron list แล้วคุณ enable เอง SOUL.md และ skills จะ active ทันทีที่คุณเริ่ม chat กับ profile ดังนั้นควรอ่านก่อนรันครั้งแรกถ้าติดตั้งจากคนที่ไม่รู้จัก

เปรียบเทียบแบบหยาบ: การ install distribution เหมือนการติดตั้ง browser extension หรือ VS Code extension — low friction, high power, trust the source สำหรับ internal company distributions ใช้ private repo และ git auth ปกติ ไม่ต้องตั้งค่าอะไรใหม่

เวอร์ชันในอนาคตอาจเพิ่ม signing, lockfile (.distribution-lock.yaml) พร้อม commit SHA ที่ resolve แล้ว และ --dry-run flag ที่แสดง diff ก่อน apply update แต่สิ่งเหล่านี้ยังไม่ได้ release ในตอนนี้


อ้างอิง: Profile Distributions — Hermes Agent Documentation