Nous Research が Hermes エージェントのプロファイルビルダーを公開:アイデンティティ、モデル、スキル、MCP サーバーをワンダッシュボードで管理
Nous Research は、Hermes エージェントの複雑な設定を簡素化し、GUI ベースの「Profile Builder」をローカルダッシュボードに導入した。
キーポイント
GUI によるエージェント構築の簡素化
従来の CLI コマンドによる複数ステップの手順を、ブラウザ上のガイド付きフローで置き換え、エージェントのアイデンティティ、モデル、スキル、MCP サーバー設定を一括で行えるようになった。
プロファイル単位での完全な分離
各プロファイルが独立したホームディレクトリを持ち、設定ファイルやメモリ、セッション状態を完全に隔離することで、異なる用途(例:コーディングと研究)のエージェントを同一マシンで安全に並行稼働可能にした。
MCP サーバーとスキルハブの統合
Model Context Protocol (MCP) サーバーを URL やローカルコマンドで即座に接続でき、外部カタログからのスキルインストールも GUI 内で完結するようになり、拡張性が向上した。
プロファイルの分離とトークンロック
各エージェント(コーディング、研究、運用)は独立したプロファイルとして生成され、トークンロックにより誤って共有されるのを防ぎます。
構成ファイルへの標準的な出力
ビルダーで設定されたモデル、MCP サーバー、API キーは、CLI が直接読み取る標準の config.yaml および .env ファイルに書き込まれます。
ダッシュボードのインストール要件と動作
ビルダーを使用するには 'hermes-agent[web]' の追加インストールが必要で、デフォルトではローカルのループバック接続として動作します。
統合型ダッシュボードによる一元管理
アイデンティティ、モデル、スキル、MCP サーバーの設定を単一のフロー内で完結させ、複雑な設定作業を簡素化します。
影響分析・編集コメントを表示
影響分析
この発表は、オープンソースのエージェント開発における参入障壁を下げ、特に CLI に不慣れなユーザーや、複数の異なるプロファイルを持つエージェントを管理する開発者にとって大きな利便性をもたらす。GUI と CLI の両立により、柔軟性を損なうことなく、実用性とアクセシビリティのバランスが改善された。
編集コメント
エージェント開発の現場では、設定ファイルの管理や依存関係の構築がボトルネックになりがちですが、この GUI ツールの導入は実用化を加速させる重要な一歩です。特に MCP プロトコルとの親和性を高める設計は、今後のエコシステム拡大に寄与するでしょう。
Nous Research は、Hermes Agent のための Profile Builder をリリースしました。これはプロジェクトのローカル Web ダッシュボード内に存在します。以前は独自のエージェントを構築するには複数の CLI ステップが必要でしたが、ビルダーは今ではガイド付きフローで案内してくれます。
このフローでは、エージェントのアイデンティティを定義し、モデルとプロバイダを選択します。組み込みスキルとオプションのスキルを選び、ハブからスキルをインストールすることもできます。さらに MCP サーバーも接続可能です。
Hermes Agent は、Nous Research が開発したオープンソースで自己改善型のエージェントです。CLI、デスクトップアプリ、メッセージングプラットフォーム上で動作します。以前はプロファイルは主にターミナルコマンドを通じて組み立てられていましたが、Profile Builder によりそれらの要素がブラウザ上のフォームとして統合されました。
Profile Builder
Hermes におけるプロファイルは、独立したホームディレクトリです。各プロファイルには独自の config.yaml、.env、SOUL.md が格納されます。また、メモリ、セッション、スキル、cron ジョブ、状態データベースもそれぞれ個別に保持されます。
プロファイルを使用することで、1 つのマシン上で孤立したエージェントを複数実行できます。コーディング用エージェントと研究用エージェントが状態を共有することはありません。これがビルダーが生成する単位です。
dashboard を起動するには、hermes dashboard コマンドを実行します。ブラウザでは http://127.0.0.1:9119 で開かれます。デフォルトのバインドはループバックであるため、データはローカルホストから外部に流出しません。ビルダーは CLI の profile コマンドが受け付けるのと同じ入力を収集し、それをプロファイル内のファイルに書き込みます。
ビルダーが設定する項目
ビルダーは 5 つグループの設定を 1 つの場所に集約します:
まず一つ目はアイデンティティです。名前と説明を含みます。名前はシェルコマンドのエイリアスとしても機能します。"coder" という名前のプロファイルを作成すると、"coder chat" が利用可能になります。より深い個性は、プロファイル内の SOUL.md ファイルに記述されます。
二つ目はモデルとプロバイダーです。Hermes は Nous Portal、OpenRouter、NVIDIA、OpenAI などに対応しています。また、ご自身の OpenAI 互換エンドポイントも指定可能です。
三つ目は組み込みスキルで、プロファイルごとにオンオフを切り替えられます。
四つ目は Skills Hub のインストールです。外部カタログから識別子を用いて取得されます。
五つ目は MCP サーバーです。URL またはローカルコマンドによって追加されます。
これらの用語のうち二つについて、簡潔な説明を加えます。
スキルとは、名前、説明、手順を含む SKILL.md ファイルのことです。エージェントは短い説明を低コストで読み取ります。タスクが必要になった場合にのみ、スキルの完全なコンテンツを読み込みます。そのため、多くのスキルを追加しても、すべてのリクエストが肥大化することはありません。
MCP サーバーは、Model Context Protocol を通じて外部ツールを公開します。Hermes は URL 経由で HTTP サーバーを受け付けます。また、ローカルコマンド経由で stdio サーバーも受け付けます。Nous が認定したカタログでは、ワンクリックインストールが可能で、必要なキーについてはインラインでプロンプトが表示されます。
GUI フローと CLI シーケンスの違い
ビルダーは CLI を置き換えるものではありません。フォーム形式でそれを模倣するものです。以下の表に、各ステップを対応するコマンドとマッピングしました。
ステップ | Profile Builder (ダッシュボード) | CLI 相当
作成・命名 | Name フィールド | hermes profile create coder
説明 | Description フィールド | --description "..." または hermes profile describe
モデルとプロバイダー | Model ピッカー | coder config set model
組み込みスキル
コードスキルリストの切り替え / トグル
スキルハブのインストール
検索とインストール:coder skills install
MCP サーバー
追加またはカタログ化されたインストール済みサーバーの編集:edit mcp_servers / coder mcp install
両方のパスは同じプロファイルディレクトリを編集します。ビルダーは摩擦の少ないエントリーポイントです。一方、CLI はスクリプト可能である点で優れています。
ユースケースと例
最初のユースケースは、コードに特化したアシスタントです。コード認識モデルとファイルシステム MCP サーバーを与えます。Git とテストスキルを追加し、メモリを 1 つのプロジェクトに限定します。
2 つ目は研究エージェントです。能力のあるモデルとウェブ抽出スキルを組み合わせて使用します。その発見結果は他のエージェントとは分離されます。後でプロファイルをクローンしても、この分離は維持されます。
3 つ目は運用ボットです。メッセージングチャネルを接続し、cron によるレポートスケジュールを設定します。各プロファイルは独自のゲートウェイとボットトークンを実行します。トークンロックにより、2 つのプロファイルが誤って同じトークンを共有するのを防ぎます。
いずれの場合も、ビルダーは 1 つの孤立したエージェントを生成します。状態の衝突なく複数のエージェントを実行できます。
ビルダーが書き込むもの
ビルダーは、CLI が既に読み込んでいるファイルを編集します。モデルとプロバイダーはプロファイルの config.yaml に配置されます。MCP サーバーはそのファイル内の mcp_servers ブロックに設定されます。API キーはプロファイルの .env ファイルに格納されます。
研究用プロファイルに対応する CLI シークエンスは以下のようになります:
コードをコピーしました
別のブラウザを使用してください
hermes profile create researcher \
--description "Reads source code and external docs, writes findings."
researcher setup # configure API keys + model
researcher config set model anthropic/claude-sonnet-4
researcher skills install openai/skills/k8s
A matching config.yaml for that profile. Note that mcp_servers is a map keyed by server name, not a list:
Copy CodeCopiedUse a different Browser
~/.hermes/profiles/researcher/config.yaml
model:
default: anthropic/claude-sonnet-4
mcp_servers:
filesystem:
command: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
A remote HTTP MCP server uses url and headers instead of command:
Copy CodeCopiedUse a different Browser
mcp_servers:
docs:
url: "https://mcp.example.com/mcp"
headers:
Authorization: "Bearer ${DOCS_API_KEY}"
Reaching the builder requires the dashboard extra. The base install ships without the HTTP stack.
Install it with one command:
Copy CodeCopiedUse a different Browser
pip install 'hermes-agent[web]'
Strengths and Limitations
Strengths:
One flow replaces several CLI steps for a new profile.
Identity, model, skills, and MCP sit in one place.
Output stays in standard config.yaml and .env files.
The dashboard runs locally and binds to loopback by default.
The catalog handles MCP and Skills Hub installs inline.
Limitations:
Profiles do not sandbox filesystem access on the local backend.
非ループバックバインドは、認証プロバイダーが設定されていない場合、失敗してクローズされます。
スキルと MCP の変更は、次のセッションまたはゲートウェイの再起動時に有効になります。
ビルダーは、別々のダッシュボードページにも存在するコントロールを表面化します。
Marktechpost のインタラクティブ解説
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');
#mtp-hpb-700 *{box-sizing:border-box!important;margin:0!important;padding:0!important}
#mtp-hpb-700 hr,#mtp-hpb-700 p:empty,#mtp-hpb-700 del,#mtp-hpb-700 s{display:none!important}
#mtp-hpb-700{
--bg:#06140f!important; --panel:#0b1f19!important; --line:#1b3d35!important; --line2:#24514a!important;
--teal:#2fd6bd!important; --teal2:#13a892!important;
--cream:#f1ead6!important; --soft:#c4d0ca!important; --muted:#7e948c!important; --gold:#e7c478!important;
--mono:'JetBrains Mono',ui-monospace,Menlo,Consolas,monospace!important;
--disp:'Space Grotesk',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif!important;
all:initial!important;
display:flex!important; flex-direction:column!important;
width:100%!important; max-width:700px!important; height:500px!important;
margin:0 auto!important; background:var(--bg)!important; color:var(--cream)!important;
font-family:var(--disp)!important; border:1px solid var(--line)!important;
border-radius:14px!important; overflow:hidden!important; -webkit-font-smoothing:antialiased!important;
}
/* HEADER */
#mtp-hpb-700 .w-head{flex:0 0 auto!important; padding:14px 18px 12px!important; border-bottom:1px solid var(--line)!important;
background:radial-gradient(520px 160px at 88% -30%, rgba(47,214,189,.16), transparent 65%)!important;
display:flex!important; align-items:center!important; gap:10px!important}
#mtp-hpb-700 .w-dot{width:7px!important;height:7px!important;border-radius:50%!important;background:var(--teal)!important;box-shadow:0 0 9px var(--teal)!important;flex:0 0 auto!important;animation:w7pulse 2.4s ease-in-out infinite!important}
@keyframes w7pulse{0%,100%{opacity:1}50%{opacity:.35}}
#mtp-hpb-700 .w-ttl{min-width:0!important}
#mtp-hpb-700 .w-eyebrow{font-family:var(--mono)!important;font-size:9.5px!important;letter-spacing:.2em!important;color:var(--teal)!important;text-transform:uppercase!important;white-space:nowrap!important}
#mtp-hpb-700 .w-h1{font-size:17px!important;font-weight:700!important;color:var(--cream)!important;line-height:1.2!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
#mtp-hpb-700 .w-h1 b{color:var(--teal)!important;font-weight:700!important}
#mtp-hpb-700 .w-demo{margin-left:auto!important;flex:0 0 auto!important;display:flex!important;align-items:center!important;gap:7px!important;border:1px solid rgba(231,196,120,.4)!important;background:rgba(231,196,120,.07)!important;border-radius:8px!important;padding:5px 9px!important}
#mtp-hpb-700 .w-demobadge{font-family:var(--mono)!important;font-size:9px!important;font-weight:600!important;letter-spacing:.13em!important;color:#06140f!important;background:var(--gold)!important;border-radius:4px!important;padding:2px 6px!important}
#mtp-hpb-700 .w-demotxt{font-family:var(--mono)!important;font-size:9.5px!important;color:var(--gold)!important;white-space:nowrap!important}
/* STEP TABS */
#mtp-hpb-700 .w-tabs{flex:0 0 auto!important;display:flex!important;gap:5px!important;padding:9px 18px 0!important}
#mtp-hpb-700 .w-tab{cursor:pointer!important;user-select:none!important;font-family:var(--mono)!important;font-size:10.5px!important;color:var(--muted)!important;border:1px solid var(--line)!important;border-bottom:none!important;background:var(--panel)!important;border-radius:8px 8px 0 0!important;padding:7px 12px!important;transition:.15s!important;white-space:nowrap!important}
#mtp-hpb-700 .w-tab:hover{color:var(--soft)!important}
#mtp-hpb-700 .w-tab.on{color:var(--teal)!important;border-color:var(--teal2)!important;background:linear-gradient(180deg,rgba(47,214,189,.13),rgba(47,214,189,.03))!important}
#mtp-hpb-700 .w-tab .n{color:var(--teal)!important;margin-right:5px!important}
/* BODY */
#mtp-hpb-700 .w-body{flex:1 1 auto!important;min-height:0!important;display:grid!important;grid-template-columns:1fr 1fr!important;gap:12px!important;padding:12px 18px!important}
#mtp-hpb-700 .w-form{border:1px solid var(--teal2)!important;background:var(--panel)!important;border-radius:0 10px 10px 10px!important;padding:13px!important;overflow:auto!important;min-height:0!important}
#mtp-hpb-700 .w-pane{display:none!important}
#mtp-hpb-700 .w-pane.on{display:block!important;animation:w7fade .2s ease!important}
@keyframes w7fade{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
#mtp-hpb-700 .w-flabel{font-family:var(--mono)!important;font-size:9.5px!important;letter-spacing:.13em!important;text-transform:uppercase!important;color:var(--muted)!important;margin-bottom:4px!important;display:block!important}
#mtp-hpb-700 .w-field{margin-bottom:10px!important}
#mtp-hpb-700 .w-input,#mtp-hpb-700 .w-select{width:100%!important;background:#04100c!important;border:1px solid var(--line)!important;border-radius:7px!important;color:var(--cream)!important;font-family:var(--mono)!important;font-size:11.5px!important;padding:8px 10px!important;outline:none!important;transition:.13s!important}
#mtp-hpb-700 .w-input:focus,#mtp-hpb-700 .w-select:focus{border-color:var(--teal)!important;box-shadow:0 0 0 3px rgba(47,214,189,.15)!important}
#mtp-hpb-700 .w-hint{font-family:var(--mono)!important;font-size:9.5px!important;color:var(--muted)!important;margin-top:5px!important}
#mtp-hpb-700 .w-hint b{color:var(--teal)!important;font-weight:600!important}
#mtp-hpb-700 .w-chips{display:flex!important;flex-wrap:wrap!important;gap:6px!important}
#mtp-hpb-700 .w-chip{cursor:pointer!important;user-select:none!important;display:flex!important;align-items:center!important;gap:6px!important;border:1px solid var(--line)!important;background:#04100c!important;border-radius:16px!important;padding:5px 11px!important;font-family:var(--mono)!important;font-size:10.5px!important;color:var(--soft)!important;transition:.13s!important}
#mtp-hpb-700 .w-chip .x{width:5px!important;height:5px!important;border-radius:50%!important;background:var(--muted)!important}
#mtp-hpb-700 .w-chip.on{border-color:var(--teal)!important;color:var(--cream)!important;background:rgba(47,214,189,.1)!important}
#mtp-hpb-700 .w-chip.on .x{background:var(--teal)!important;box-shadow:0 0 6px var(--teal)!important}
#mtp-hpb-700 .w-mcprow{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;border:1px solid var(--line)!important;background:#04100c!important;border-radius:7px!important;padding:7px 9px!important;margin-bottom:6px!important}
#mtp-hpb-700 .w-mcprow .s{font-family:var(--mono)!important;font-size:10.5px!important;color:var(--teal)!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
#mtp-hpb-700 .w-mini{cursor:pointer!important;border:1px solid var(--line2)!important;background:transparent!important;color:var(--muted)!important;font-family:var(--mono)!important;font-size:9.5px!important;padding:4px 9px!important;border-radius:6px!important;transition:.13s!important;white-space:nowrap!important}
#mtp-hpb-700 .w-mini:hover{border-color:#c8624f!important;color:#e98a76!important}
#mtp-hpb-700 .w-mini.add{border-color:var(--teal2)!important;color:var(--teal)!important;background:rgba(47,214,189,.08)!important;font-weight:600!important}
#mtp-hpb-700 .w-mini.add:hover{background:var(--teal)!important;color:#04100c!important;border-color:var(--teal)!important}
#mtp-hpb-700 .w-addrow{display:flex!important;gap:6px!important;margin-top:8px!important}
#mtp-hpb-700 .w-addrow .w-select{flex:0 0 104px!important}
#mtp-hpb-700 .w-addrow .w-input{flex:1 1 auto!important;min-width:0!important}
#mtp-hpb-700 .w-out{border:1px solid var(--line)!important;background:#04100c!important;border-radius:10px!important;display:flex!important;flex-direction:column!important;overflow:hidden!important;min-height:0!important}
#mtp-hpb-700 .w-outhead{flex:0 0 auto!important;display:flex!important;align-items:center!important;gap:8px!important;padding:7px 10px!important;border-bottom:1px solid var(--line)!important;background:var(--panel)!important}
#mtp-hpb-700 .w-fname{font-family:var(--mono)!important;font-size:10px!important;color:var(--teal)!important}
#mtp-hpb-700 .w-copy{margin-left:auto!important;cursor:pointer!important;font-family:var(--mono)!important;font-size:9.5px!important;color:var(--soft)!important;border:1px solid var(--line2)!important;background:transparent!important;padding:4px 9px!important;border-radius:6px!important;transition:.13s!important}
#mtp-hpb-700 .w-copy:hover{border-color:var(--teal)!important;color:var(--teal)!important}
#mtp-hpb-700 .w-code{flex:1 1 auto!important;min-height:0!important;overflow:auto!important;padding:11px 12px!important;font-family:var(--mono)!important;font-size:10.5px!important;line-height:1.65!important;color:var(--cream)!important;white-space:pre!important;tab-size:2!important}
#mtp-hpb-700 .w-code .c{color:var(--muted)!important}
#mtp-hpb-700 .w-code .k{color:var(--teal)!important}
#mtp-hpb-700 .w-code .v{color:var(--gold)!important}
#mtp-hpb-700 .w-code .p{color:var(--soft)!important}
/* FOOTER */
#mtp-hpb-700 .w-foot{flex:0 0 auto!important;display:flex!important;align-items:center!important;gap:10px!important;padding:9px 18px!important;border-top:1px solid var(--line)!important;background:linear-gradient(180deg,transparent,rgba(47,214,189,.05))!important}
#mtp-hpb-700 .w-brand{font-size:13px!important;font-weight:700!important;color:var(--cream)!important;white-space:nowrap!important}
#mtp-hpb-700 .w-brand b{color:var(--teal)!important}
#mtp-hpb-700 .w-disc{font-family:var(--mono)!important;font-size:8.5px!important;line-height:1.45!important;color:var(--muted)!important;min-width:0!important}
#mtp-hpb-700 .w-foot a{margin-left:auto!important;flex:0 0 auto!important;color:var(--teal)!important;text-decoration:none!important;font-family:var(--mono)!important;font-size:10px!important;border:1px solid var(--teal2)!important;padding:5px 11px!important;border-radius:7px!important;transition:.13s!important;white-space:nowrap!important}
#mtp-hpb-700 .w-foot a:hover{background:var(--teal)!important;color:#04100c!important}
@media (max-width:640px){
#mtp-hpb-700{height:auto!important;min-height:500px!important}
#mtp-hpb-700 .w-body{grid-template-columns:1fr!important}
#mtp-hpb-700 .w-out{min-height:170px!important}
#mtp-hpb-700 .w-demotxt{display:none!important}
#mtp-hpb-700 .w-disc{display:none!important}
#mtp-hpb-700 .w-h1{white-space:normal!important}
#mtp-hpb-700 .w-fname{flex:1 1 auto!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
#mtp-hpb-700 .w-copy{flex:0 0 auto!important}
}
@media (prefers-reduced-motion:reduce){
#mtp-hpb-700 *,#mtp-hpb-700 .w-dot{animation:none!important;transition:none!important}
}
Nous Research · Hermes Agent
プロフィールビルダーの解説
デモ(シミュレーション)であり、実際の製品ではありません
プロフィール名
コマンドに変換→研究者チャット
説明
各プロフィールは独立したホームディレクトリとなります。
プロバイダー
OpenRouter
Nous Portal
NVIDIA
OpenAI 互換(カスタム)
モデル ID
hermes モデルでいつでも切り替え可能です。
組み込みツールセット
オフ→agent.disabled_toolsets に書き込まれます。
MCP サーバー
Filesystem
GitHub
HTTP
+ Add
mcp_servers はサーバー名をキーとするマップです。
~/.hermes/profiles/researcher/config.yaml
コピー
Marktechpost
ビルダーのための AI リサーチとツールリングを解読。Marktechpost による独立したデモで、Nous Research とは関係ありません。
marktechpost.com →
(function(){
var root=document.getElementById('mtp-hpb-700');
if(!root||root.dataset.init)return; root.dataset.init='1';
var $=function(s){return root.querySelector(s)};
var $$=function(s){return Array.prototype.slice.call(root.querySelectorAll(s))};
var TABS=['Identity','Model','Tools','MCP'];
var TOOLS=[{id:'terminal'},{id:'web'},{id:'memory'},{id:'files'},{id:'browser'}];
var st={name:'researcher',desc:'ドキュメントを読み、発見を書き込む。',prov:'openrouter',model:'anthropic/claude-sonnet-4',
tools:{terminal:1,web:1,memory:1,files:1,browser:0},
mcp:[{kind:'fs',val:'/home/user/projects'}]};
var cur=0;
function slug(s){return (s||'').toLowerCase().replace(/[^a-z0-9_-]+/g,'-').replace(/^-+|-+$/g,'')||'agent'}
function esc(s){return (s||'').replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>')} // 注:原文の replace(/<g,">) は構文エラーの可能性がありますが、意図された HTML エスケープとして解釈し、安全な出力を想定して修正しました。
var tabsEl=$('#w7-tabs');
TABS.forEach(function(t,i){
var d=document.createElement('div'); d.className='w-tab'+(i===0?' on':''); d.dataset.i=i;
d.innerHTML=''+(i+1)+''+t;
d.addEventListener('click',function(){cur=i;render()});
tabsEl.appendChild(d);
});
var toolsEl=$('#w7-tools');
TOOLS.forEach(function(t){
var c=document.createElement('div'); c.className='w-chip'; c.dataset.id=t.id;
c.innerHTML=''+t.id;
c.addEventListener('click',function(){st.tools[t.id]=st.tools[t.id]?0:1;render()});
toolsEl.appendChild(c);
});
$('#w7-kind').addEventListener('change',function(){
var k=this.value, inp=$('#w7-val');
inp.style.display=(k==='github')?'none':'';
inp.placeholder=(k==='http')?'https://mcp.example.com/mcp':'/home/user/projects';
});
$('#w7-add').addEventListener('click',function(){
var k=$('#w7-kind').value, v=$('#w7-val').value.trim();
if(k!=='github'&&!v){v=(k==='http')?'https://mcp.example.com/mcp':'/home/user/projects'}
st.mcp.push({kind:k,val:v}); $('#w7-val').value=''; render();
});
$('#w7-name').addEventListener('input',function(){st.name=this.value;render()});
$('#w7-desc').addEventListener('input',function(){st
原文を表示
Nous Research has shipped a Profile Builder for Hermes Agent. It lives inside the project’s local web dashboard. Standing up a distinct agent used to mean several CLI steps. The builder now walks you through one guided flow.
In that flow you define an agent’s identity. You pick a model and provider. You choose built-in and optional skills. You install skills from the hub. You attach MCP servers.
Hermes Agent is Nous Research’s open-source, self-improving agent. It runs on the CLI, a desktop app, and messaging platforms. Profiles were previously assembled mostly through terminal commands. The Profile Builder brings those pieces into a browser form.
Profile Builder
A profile in Hermes is a separate home directory. Each profile holds its own config.yaml, .env, and SOUL.md. It also keeps separate memory, sessions, skills, cron jobs, and a state database.
Profiles let you run isolated agents on one machine. A coding agent and a research agent never share state. This is the unit the builder produces.
You launch the dashboard by running hermes dashboard. It opens at http://127.0.0.1:9119 in your browser. The default bind is loopback, so no data leaves localhost. The builder collects the same inputs the CLI profile commands accept. It then writes them into the profile’s files.
The Fields the Builder Configures
The builder gathers five groups of settings in one place:
First is identity, a name and a description. The name also becomes a shell command alias. Create a profile named coder and you get coder chat. Deeper personality lives in the profile’s SOUL.md file.
Second is the model and provider. Hermes supports Nous Portal, OpenRouter, NVIDIA, OpenAI, and more. You can also point at your own OpenAI-compatible endpoint.
Third is built-in skills, toggled on or off per profile.
Fourth is Skills Hub installs, pulled from external catalogs by identifier.
Fifth is MCP servers, added by URL or by local command.
Two of these terms deserve a short explanation.
Skills are SKILL.md files with a name, a description, and a procedure. The agent reads short descriptions cheaply. It loads a skill’s full content only when a task needs it. So adding many skills does not bloat every request.
MCP servers expose external tools through the Model Context Protocol. Hermes accepts HTTP servers via a URL. It also accepts stdio servers via a local command. A Nous-approved catalog offers one-click installs, prompting inline for any keys.
GUI Flow vs the CLI Sequence
The builder does not replace the CLI. It mirrors it in a form. The table below maps each step to its command equivalent.
StepProfile Builder (dashboard)CLI equivalent
Create and nameName fieldhermes profile create coder
DescriptionDescription field--description "..." or hermes profile describe
Model and providerModel pickercoder config set model <id>
Built-in skillsTogglescoder skills list / toggle
Skills Hub installSearch and installcoder skills install <slug>
MCP serversAdd or catalog installedit mcp_servers / coder mcp install
Both paths edit the same profile directory. The builder is the lower-friction entry point. The CLI remains the scriptable one.
Use Cases With Examples
The first use case is a focused coding assistant. Give it a code-aware model and a filesystem MCP server. Add Git and testing skills. Keep its memory scoped to one project.
The second is a research agent. Pair a capable model with web-extract skills. Its findings stay separate from your other agents. Cloning the profile later preserves that separation.
The third is an operations bot. Attach a messaging channel and schedule cron reports. Each profile runs its own gateway and bot token. Token locks block two profiles from sharing a token by accident.
In each case, the builder produces one isolated agent. You can run several without state collisions.
What the Builder Writes
The builder edits files the CLI already reads. Model and provider land in the profile’s config.yaml. MCP servers populate the mcp_servers block in that file. API keys go to the profile’s .env.
The equivalent CLI sequence for a research profile looks like this:
Copy CodeCopiedUse a different Browser
hermes profile create researcher \
--description "Reads source code and external docs, writes findings."
researcher setup # configure API keys + model
researcher config set model anthropic/claude-sonnet-4
researcher skills install openai/skills/k8s
A matching config.yaml for that profile. Note that mcp_servers is a map keyed by server name, not a list:
Copy CodeCopiedUse a different Browser
~/.hermes/profiles/researcher/config.yaml
model:
default: anthropic/claude-sonnet-4
mcp_servers:
filesystem:
command: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
A remote HTTP MCP server uses url and headers instead of command:
Copy CodeCopiedUse a different Browser
mcp_servers:
docs:
url: "https://mcp.example.com/mcp"
headers:
Authorization: "Bearer ${DOCS_API_KEY}"
Reaching the builder requires the dashboard extra. The base install ships without the HTTP stack.
Install it with one command:
Copy CodeCopiedUse a different Browser
pip install 'hermes-agent[web]'
Strengths and Limitations
Strengths:
One flow replaces several CLI steps for a new profile.
Identity, model, skills, and MCP sit in one place.
Output stays in standard config.yaml and .env files.
The dashboard runs locally and binds to loopback by default.
The catalog handles MCP and Skills Hub installs inline.
Limitations:
Profiles do not sandbox filesystem access on the local backend.
A non-loopback bind fails closed unless an auth provider is configured.
Skill and MCP changes take effect on the next session or gateway restart.
The builder surfaces controls that also live on separate dashboard pages.
Marktechpost’s Interactive Explainer
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');
#mtp-hpb-700 *{box-sizing:border-box!important;margin:0!important;padding:0!important}
#mtp-hpb-700 hr,#mtp-hpb-700 p:empty,#mtp-hpb-700 del,#mtp-hpb-700 s{display:none!important}
#mtp-hpb-700{
--bg:#06140f!important; --panel:#0b1f19!important; --line:#1b3d35!important; --line2:#24514a!important;
--teal:#2fd6bd!important; --teal2:#13a892!important;
--cream:#f1ead6!important; --soft:#c4d0ca!important; --muted:#7e948c!important; --gold:#e7c478!important;
--mono:'JetBrains Mono',ui-monospace,Menlo,Consolas,monospace!important;
--disp:'Space Grotesk',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif!important;
all:initial!important;
display:flex!important; flex-direction:column!important;
width:100%!important; max-width:700px!important; height:500px!important;
margin:0 auto!important; background:var(--bg)!important; color:var(--cream)!important;
font-family:var(--disp)!important; border:1px solid var(--line)!important;
border-radius:14px!important; overflow:hidden!important; -webkit-font-smoothing:antialiased!important;
}
/* HEADER */
#mtp-hpb-700 .w-head{flex:0 0 auto!important; padding:14px 18px 12px!important; border-bottom:1px solid var(--line)!important;
background:radial-gradient(520px 160px at 88% -30%, rgba(47,214,189,.16), transparent 65%)!important;
display:flex!important; align-items:center!important; gap:10px!important}
#mtp-hpb-700 .w-dot{width:7px!important;height:7px!important;border-radius:50%!important;background:var(--teal)!important;box-shadow:0 0 9px var(--teal)!important;flex:0 0 auto!important;animation:w7pulse 2.4s ease-in-out infinite!important}
@keyframes w7pulse{0%,100%{opacity:1}50%{opacity:.35}}
#mtp-hpb-700 .w-ttl{min-width:0!important}
#mtp-hpb-700 .w-eyebrow{font-family:var(--mono)!important;font-size:9.5px!important;letter-spacing:.2em!important;color:var(--teal)!important;text-transform:uppercase!important;white-space:nowrap!important}
#mtp-hpb-700 .w-h1{font-size:17px!important;font-weight:700!important;color:var(--cream)!important;line-height:1.2!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
#mtp-hpb-700 .w-h1 b{color:var(--teal)!important;font-weight:700!important}
#mtp-hpb-700 .w-demo{margin-left:auto!important;flex:0 0 auto!important;display:flex!important;align-items:center!important;gap:7px!important;border:1px solid rgba(231,196,120,.4)!important;background:rgba(231,196,120,.07)!important;border-radius:8px!important;padding:5px 9px!important}
#mtp-hpb-700 .w-demobadge{font-family:var(--mono)!important;font-size:9px!important;font-weight:600!important;letter-spacing:.13em!important;color:#06140f!important;background:var(--gold)!important;border-radius:4px!important;padding:2px 6px!important}
#mtp-hpb-700 .w-demotxt{font-family:var(--mono)!important;font-size:9.5px!important;color:var(--gold)!important;white-space:nowrap!important}
/* STEP TABS */
#mtp-hpb-700 .w-tabs{flex:0 0 auto!important;display:flex!important;gap:5px!important;padding:9px 18px 0!important}
#mtp-hpb-700 .w-tab{cursor:pointer!important;user-select:none!important;font-family:var(--mono)!important;font-size:10.5px!important;color:var(--muted)!important;border:1px solid var(--line)!important;border-bottom:none!important;background:var(--panel)!important;border-radius:8px 8px 0 0!important;padding:7px 12px!important;transition:.15s!important;white-space:nowrap!important}
#mtp-hpb-700 .w-tab:hover{color:var(--soft)!important}
#mtp-hpb-700 .w-tab.on{color:var(--teal)!important;border-color:var(--teal2)!important;background:linear-gradient(180deg,rgba(47,214,189,.13),rgba(47,214,189,.03))!important}
#mtp-hpb-700 .w-tab .n{color:var(--teal)!important;margin-right:5px!important}
/* BODY */
#mtp-hpb-700 .w-body{flex:1 1 auto!important;min-height:0!important;display:grid!important;grid-template-columns:1fr 1fr!important;gap:12px!important;padding:12px 18px!important}
#mtp-hpb-700 .w-form{border:1px solid var(--teal2)!important;background:var(--panel)!important;border-radius:0 10px 10px 10px!important;padding:13px!important;overflow:auto!important;min-height:0!important}
#mtp-hpb-700 .w-pane{display:none!important}
#mtp-hpb-700 .w-pane.on{display:block!important;animation:w7fade .2s ease!important}
@keyframes w7fade{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
#mtp-hpb-700 .w-flabel{font-family:var(--mono)!important;font-size:9.5px!important;letter-spacing:.13em!important;text-transform:uppercase!important;color:var(--muted)!important;margin-bottom:4px!important;display:block!important}
#mtp-hpb-700 .w-field{margin-bottom:10px!important}
#mtp-hpb-700 .w-input,#mtp-hpb-700 .w-select{width:100%!important;background:#04100c!important;border:1px solid var(--line)!important;border-radius:7px!important;color:var(--cream)!important;font-family:var(--mono)!important;font-size:11.5px!important;padding:8px 10px!important;outline:none!important;transition:.13s!important}
#mtp-hpb-700 .w-input:focus,#mtp-hpb-700 .w-select:focus{border-color:var(--teal)!important;box-shadow:0 0 0 3px rgba(47,214,189,.15)!important}
#mtp-hpb-700 .w-hint{font-family:var(--mono)!important;font-size:9.5px!important;color:var(--muted)!important;margin-top:5px!important}
#mtp-hpb-700 .w-hint b{color:var(--teal)!important;font-weight:600!important}
#mtp-hpb-700 .w-chips{display:flex!important;flex-wrap:wrap!important;gap:6px!important}
#mtp-hpb-700 .w-chip{cursor:pointer!important;user-select:none!important;display:flex!important;align-items:center!important;gap:6px!important;border:1px solid var(--line)!important;background:#04100c!important;border-radius:16px!important;padding:5px 11px!important;font-family:var(--mono)!important;font-size:10.5px!important;color:var(--soft)!important;transition:.13s!important}
#mtp-hpb-700 .w-chip .x{width:5px!important;height:5px!important;border-radius:50%!important;background:var(--muted)!important}
#mtp-hpb-700 .w-chip.on{border-color:var(--teal)!important;color:var(--cream)!important;background:rgba(47,214,189,.1)!important}
#mtp-hpb-700 .w-chip.on .x{background:var(--teal)!important;box-shadow:0 0 6px var(--teal)!important}
#mtp-hpb-700 .w-mcprow{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;border:1px solid var(--line)!important;background:#04100c!important;border-radius:7px!important;padding:7px 9px!important;margin-bottom:6px!important}
#mtp-hpb-700 .w-mcprow .s{font-family:var(--mono)!important;font-size:10.5px!important;color:var(--teal)!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
#mtp-hpb-700 .w-mini{cursor:pointer!important;border:1px solid var(--line2)!important;background:transparent!important;color:var(--muted)!important;font-family:var(--mono)!important;font-size:9.5px!important;padding:4px 9px!important;border-radius:6px!important;transition:.13s!important;white-space:nowrap!important}
#mtp-hpb-700 .w-mini:hover{border-color:#c8624f!important;color:#e98a76!important}
#mtp-hpb-700 .w-mini.add{border-color:var(--teal2)!important;color:var(--teal)!important;background:rgba(47,214,189,.08)!important;font-weight:600!important}
#mtp-hpb-700 .w-mini.add:hover{background:var(--teal)!important;color:#04100c!important;border-color:var(--teal)!important}
#mtp-hpb-700 .w-addrow{display:flex!important;gap:6px!important;margin-top:8px!important}
#mtp-hpb-700 .w-addrow .w-select{flex:0 0 104px!important}
#mtp-hpb-700 .w-addrow .w-input{flex:1 1 auto!important;min-width:0!important}
/* OUTPUT */
#mtp-hpb-700 .w-out{border:1px solid var(--line)!important;background:#04100c!important;border-radius:10px!important;display:flex!important;flex-direction:column!important;overflow:hidden!important;min-height:0!important}
#mtp-hpb-700 .w-outhead{flex:0 0 auto!important;display:flex!important;align-items:center!important;gap:8px!important;padding:7px 10px!important;border-bottom:1px solid var(--line)!important;background:var(--panel)!important}
#mtp-hpb-700 .w-fname{font-family:var(--mono)!important;font-size:10px!important;color:var(--teal)!important}
#mtp-hpb-700 .w-copy{margin-left:auto!important;cursor:pointer!important;font-family:var(--mono)!important;font-size:9.5px!important;color:var(--soft)!important;border:1px solid var(--line2)!important;background:transparent!important;padding:4px 9px!important;border-radius:6px!important;transition:.13s!important}
#mtp-hpb-700 .w-copy:hover{border-color:var(--teal)!important;color:var(--teal)!important}
#mtp-hpb-700 .w-code{flex:1 1 auto!important;min-height:0!important;overflow:auto!important;padding:11px 12px!important;font-family:var(--mono)!important;font-size:10.5px!important;line-height:1.65!important;color:var(--cream)!important;white-space:pre!important;tab-size:2!important}
#mtp-hpb-700 .w-code .c{color:var(--muted)!important}
#mtp-hpb-700 .w-code .k{color:var(--teal)!important}
#mtp-hpb-700 .w-code .v{color:var(--gold)!important}
#mtp-hpb-700 .w-code .p{color:var(--soft)!important}
/* FOOTER */
#mtp-hpb-700 .w-foot{flex:0 0 auto!important;display:flex!important;align-items:center!important;gap:10px!important;padding:9px 18px!important;border-top:1px solid var(--line)!important;background:linear-gradient(180deg,transparent,rgba(47,214,189,.05))!important}
#mtp-hpb-700 .w-brand{font-size:13px!important;font-weight:700!important;color:var(--cream)!important;white-space:nowrap!important}
#mtp-hpb-700 .w-brand b{color:var(--teal)!important}
#mtp-hpb-700 .w-disc{font-family:var(--mono)!important;font-size:8.5px!important;line-height:1.45!important;color:var(--muted)!important;min-width:0!important}
#mtp-hpb-700 .w-foot a{margin-left:auto!important;flex:0 0 auto!important;color:var(--teal)!important;text-decoration:none!important;font-family:var(--mono)!important;font-size:10px!important;border:1px solid var(--teal2)!important;padding:5px 11px!important;border-radius:7px!important;transition:.13s!important;white-space:nowrap!important}
#mtp-hpb-700 .w-foot a:hover{background:var(--teal)!important;color:#04100c!important}
@media (max-width:640px){
#mtp-hpb-700{height:auto!important;min-height:500px!important}
#mtp-hpb-700 .w-body{grid-template-columns:1fr!important}
#mtp-hpb-700 .w-out{min-height:170px!important}
#mtp-hpb-700 .w-demotxt{display:none!important}
#mtp-hpb-700 .w-disc{display:none!important}
#mtp-hpb-700 .w-h1{white-space:normal!important}
#mtp-hpb-700 .w-fname{flex:1 1 auto!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
#mtp-hpb-700 .w-copy{flex:0 0 auto!important}
}
@media (prefers-reduced-motion:reduce){
#mtp-hpb-700 *,#mtp-hpb-700 .w-dot{animation:none!important;transition:none!important}
}
Nous Research · Hermes Agent
The Profile Builder, explained
DEMOsimulation, not the live product
Profile name
Becomes a command → researcher chat
Description
Each profile is its own isolated home directory.
Provider
OpenRouter
Nous Portal
NVIDIA
OpenAI-compatible (custom)
Model id
Switch any time with hermes model.
Built-in toolsets
Off → written to agent.disabled_toolsets.
MCP servers
Filesystem
GitHub
HTTP
+ Add
mcp_servers is a map keyed by server name.
~/.hermes/profiles/researcher/config.yaml
Copy
Marktechpost
AI research and tooling, decoded for builders. Independent demo by Marktechpost — not affiliated with Nous Research.
marktechpost.com →
(function(){
var root=document.getElementById('mtp-hpb-700');
if(!root||root.dataset.init)return; root.dataset.init='1';
var $=function(s){return root.querySelector(s)};
var $$=function(s){return Array.prototype.slice.call(root.querySelectorAll(s))};
var TABS=['Identity','Model','Tools','MCP'];
var TOOLS=[{id:'terminal'},{id:'web'},{id:'memory'},{id:'files'},{id:'browser'}];
var st={name:'researcher',desc:'Reads docs, writes findings.',prov:'openrouter',model:'anthropic/claude-sonnet-4',
tools:{terminal:1,web:1,memory:1,files:1,browser:0},
mcp:[{kind:'fs',val:'/home/user/projects'}]};
var cur=0;
function slug(s){return (s||'').toLowerCase().replace(/[^a-z0-9_-]+/g,'-').replace(/^-+|-+$/g,'')||'agent'}
function esc(s){return (s||'').replace(/&/g,'&').replace(//g,'>')}
var tabsEl=$('#w7-tabs');
TABS.forEach(function(t,i){
var d=document.createElement('div'); d.className='w-tab'+(i===0?' on':''); d.dataset.i=i;
d.innerHTML=''+(i+1)+''+t;
d.addEventListener('click',function(){cur=i;render()});
tabsEl.appendChild(d);
});
var toolsEl=$('#w7-tools');
TOOLS.forEach(function(t){
var c=document.createElement('div'); c.className='w-chip'; c.dataset.id=t.id;
c.innerHTML=''+t.id;
c.addEventListener('click',function(){st.tools[t.id]=st.tools[t.id]?0:1;render()});
toolsEl.appendChild(c);
});
$('#w7-kind').addEventListener('change',function(){
var k=this.value, inp=$('#w7-val');
inp.style.display=(k==='github')?'none':'';
inp.placeholder=(k==='http')?'https://mcp.example.com/mcp':'/home/user/projects';
});
$('#w7-add').addEventListener('click',function(){
var k=$('#w7-kind').value, v=$('#w7-val').value.trim();
if(k!=='github'&&!v){v=(k==='http')?'https://mcp.example.com/mcp':'/home/user/projects'}
st.mcp.push({kind:k,val:v}); $('#w7-val').value=''; render();
});
$('#w7-name').addEventListener('input',function(){st.name=this.value;render()});
$('#w7-desc').addEventListener('input',function(){st
関連記事
Hermes エージェントが非同期サブエージェントを追加、親チャットのブロックを解消
Nous Research はオープンソースの個人エージェント「Hermes Agent」を更新し、委任ツールで子エージェント(サブエージェント)を非同期実行可能にした。これにより、委任された作業が親チャットの実行をブロック不再するようになった。
Vertu、CEO が AI 搭載折りたたみ端末から企業を運営することを提案、価格は 6,880 ドルから
高級スマートフォンメーカーの Vertu は、CEO が AI を活用した折りたたみ型端末を通じて企業経営を行うことを提唱し、同製品の価格を 6,880 ドルからと発表した。
シモン・ウィルソンのブログ:ショーン・リンチの発言を引用
シモン・ウィルソンは、ショーン・リンチがコメントで、MCP が提供する価値ある機能として認証フローをエージェントのコンテキストウィンドウ外に隔離する点を指摘したと紹介している。
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み