Initial: Mesh-Skills, Configs, Scripts

This commit is contained in:
root
2026-09-02 23:49:07 +02:00
commit 26c7980750
783 changed files with 145393 additions and 0 deletions
@@ -0,0 +1,103 @@
---
name: hermes-tool-gateway-config
description: "Configure Hermes Agent to use Nous Tool Gateway for managed tools (web search, extract, image gen, TTS, STT, browser automation) via a single Nous Portal subscription."
version: 1.0.0
author: Hermes Agent
license: MIT
platforms: [linux, macos, windows]
metadata:
hermes:
tags: [Hermes, Nous-Portal, Tool-Gateway, Configuration, OpenRouter]
related_skills: [hermes-agent, github-auth, github-repo-management]
---
# Hermes Tool Gateway Configuration
Configure Hermes Agent to route tool calls through the Nous Tool Gateway — one subscription covers web search, extraction, image generation, TTS, STT, and cloud browser automation.
## Prerequisites
- **Nous Portal subscription** (paid tier required for managed tools)
- **OpenRouter API key** (for LLM inference)
- **Hermes Agent installed** and logged into Nous Portal (`hermes auth add nous`)
## Quick Setup
```bash
# 1. Log into Nous Portal (if not already)
hermes auth add nous --type oauth
# 2. Set OpenRouter as model provider
hermes config set model.provider openrouter
hermes config set model.default "nvidia/nemotron-3-ultra-550b-a55b:free"
# 3. Enable Tool Gateway for each tool category
hermes config set web.backend firecrawl
hermes config set web.search_backend tavily
hermes config set web.extract_backend firecrawl
hermes config set web.use_gateway true
hermes config set browser.use_gateway true
hermes config set tts.provider openai
hermes config set tts.use_gateway true
hermes config set stt.provider openai
hermes config set stt.use_gateway true
```
## Verification
```bash
hermes status
```
Look for the **Nous Tool Gateway** section — all tools should show `✓ active via Nous subscription`.
## Config Reference
Key `config.yaml` entries:
```yaml
web:
backend: firecrawl
search_backend: tavily
extract_backend: firecrawl
use_gateway: true
browser:
use_gateway: true
tts:
provider: openai
use_gateway: true
stt:
provider: openai
use_gateway: true
```
## What Each Tool Gets
| Tool | Gateway Backend | Notes |
|------|----------------|-------|
| `web_search` | Firecrawl (managed) | Search backend: Tavily |
| `web_extract` | Firecrawl (managed) | Extract backend: Firecrawl |
| `image_generate` | FAL (FLUX 2 Klein 9B + 8 more) | 9 models available |
| `text_to_speech` | OpenAI TTS (gpt-4o-mini-tts) | Voice: alloy |
| STT (voice) | OpenAI Whisper-1 | Via voice mode |
| `browser_navigate` etc. | Browser Use (headless Chromium) | No Browserbase needed |
## Common Issues
| Issue | Fix |
|-------|-----|
| `Web tools ✓ included by subscription, not currently selected` | Set `use_gateway: true` for each tool category |
| `OpenAI TTS active via Nous subscription` but STT not working | Ensure `stt.provider: openai` AND `stt.use_gateway: true` |
| Browser automation fails | Verify `browser.use_gateway: true` and Node.js deps installed |
| Free Nous tier | Managed tools require **paid** subscription; free tier only gets inference |
## References
- `references/nous-tool-gateway.md` — Full documentation from Nous Portal integration guide
- `references/config-examples.yaml` — Complete config.yaml snippets for different setups
@@ -0,0 +1,260 @@
# Complete Config.yaml Examples
## Minimal: OpenRouter + Nous Tool Gateway (Recommended)
```yaml
model:
default: nvidia/nemotron-3-ultra-550b-a55b:free
provider: openrouter
base_url: https://openrouter.ai/api/v1
api_mode: chat_completions
web:
backend: firecrawl
search_backend: tavily
extract_backend: firecrawl
use_gateway: true
browser:
use_gateway: true
tts:
provider: openai
use_gateway: true
stt:
provider: openai
use_gateway: true
```
---
## With GitHub PAT Configured
```yaml
model:
default: nvidia/nemotron-3-ultra-550b-a55b:free
provider: openrouter
base_url: https://openrouter.ai/api/v1
api_mode: chat_completions
web:
backend: firecrawl
search_backend: tavily
extract_backend: firecrawl
use_gateway: true
browser:
use_gateway: true
tts:
provider: openai
use_gateway: true
stt:
provider: openai
use_gateway: true
github:
token: ghp_xxxxxxxxxxxxxxxxxxxx
```
---
## Mixed: Gateway for Web/Browser, Direct Keys for TTS/STT
```yaml
model:
default: anthropic/claude-sonnet-4.6
provider: openrouter
base_url: https://openrouter.ai/api/v1
api_mode: chat_completions
web:
backend: firecrawl
search_backend: tavily
extract_backend: firecrawl
use_gateway: true
browser:
use_gateway: true
tts:
provider: elevenlabs
elevenlabs:
voice_id: pNInz6obpgDQGcFmaJgB
model_id: eleven_multilingual_v2
use_gateway: false
stt:
provider: openai
openai:
model: whisper-1
use_gateway: false
```
---
## Local-First (No Gateway, Direct Keys)
```yaml
model:
default: nvidia/nemotron-3-ultra-550b-a55b:free
provider: openrouter
base_url: https://openrouter.ai/api/v1
api_mode: chat_completions
web:
backend: firecrawl
search_backend: tavily
extract_backend: firecrawl
use_gateway: false
# Requires FIRECRAWL_API_KEY and TAVILY_API_KEY in .env
browser:
engine: auto
use_gateway: false
# Requires BROWSER_USE_API_KEY or BROWSERBASE_API_KEY in .env
tts:
provider: edge
edge:
voice: en-US-AriaNeural
use_gateway: false
stt:
provider: local
local:
model: base
use_gateway: false
```
---
## With Fallback Providers
```yaml
model:
default: nvidia/nemotron-3-ultra-550b-a55b:free
provider: openrouter
base_url: https://openrouter.ai/api/v1
api_mode: chat_completions
fallback_providers:
- provider: nous
model: anthropic/claude-sonnet-4.6
- provider: openrouter
model: google/gemini-3-pro-preview
web:
backend: firecrawl
search_backend: tavily
extract_backend: firecrawl
use_gateway: true
browser:
use_gateway: true
tts:
provider: openai
use_gateway: true
stt:
provider: openai
use_gateway: true
```
---
## Key Environment Variables (.env)
```bash
# Required for OpenRouter
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxxxxxx
# Required for direct Firecrawl/Tavily (if use_gateway: false)
FIRECRAWL_API_KEY=fc-xxxxxxxxxxxxxxxxxxxx
TAVILY_API_KEY=tvly-xxxxxxxxxxxxxxxxxxxx
# Required for direct Browser Use (if use_gateway: false)
BROWSER_USE_API_KEY=bu-xxxxxxxxxxxxxxxxxxxx
# OR
BROWSERBASE_API_KEY=bb-xxxxxxxxxxxxxxxxxxxx
# Required for direct ElevenLabs TTS (if use_gateway: false + provider: elevenlabs)
ELEVENLABS_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx
# Required for direct OpenAI TTS/STT (if use_gateway: false + provider: openai)
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx
# Telegram (if configured)
TELEGRAM_BOT_TOKEN=123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ
TELEGRAM_CHAT_ID=123456789
```
---
## Setting Config via CLI (No Manual Editing)
```bash
# Model
hermes config set model.provider openrouter
hermes config set model.default "nvidia/nemotron-3-ultra-550b-a55b:free"
# Web tools via gateway
hermes config set web.backend firecrawl
hermes config set web.search_backend tavily
hermes config set web.extract_backend firecrawl
hermes config set web.use_gateway true
# Browser via gateway
hermes config set browser.use_gateway true
# TTS via gateway
hermes config set tts.provider openai
hermes config set tts.use_gateway true
# STT via gateway
hermes config set stt.provider openai
hermes config set stt.use_gateway true
# GitHub token
hermes config set github.token ghp_xxxxxxxxxxxxxxxxxxxx
```
---
## Verification Commands
```bash
# Full status
hermes status
# Portal auth + gateway routing
hermes portal info
# Per-tool gateway catalog
hermes portal tools
# Doctor check
hermes doctor
```
---
## Common Config Keys Reference
| Key | Values | Description |
|-----|--------|-------------|
| `model.provider` | `openrouter`, `nous`, `openai`, `anthropic`, `custom:<name>` | Primary inference provider |
| `model.default` | Model ID string | Default model for chat |
| `web.backend` | `firecrawl`, `tavily`, `exa`, `parallel`, `ddgs`, `brave`, `xai` | Web tool backend |
| `web.search_backend` | Same as above | Search-specific backend |
| `web.extract_backend` | `firecrawl`, `tavily`, `exa`, `parallel` | Extract-specific backend |
| `web.use_gateway` | `true`, `false` | Route via Nous Tool Gateway |
| `browser.use_gateway` | `true`, `false` | Route browser via Nous |
| `tts.provider` | `openai`, `elevenlabs`, `edge`, `gemini`, `xai`, `mistral`, `neutts`, `piper` | TTS provider |
| `tts.use_gateway` | `true`, `false` | Route TTS via Nous |
| `stt.provider` | `openai`, `local`, `mistral`, `elevenlabs` | STT provider |
| `stt.use_gateway` | `true`, `false` | Route STT via Nous |
| `github.token` | `ghp_...` | GitHub PAT for gh CLI integration |
@@ -0,0 +1,151 @@
# Nous Tool Gateway — Complete Reference
Source: https://hermes-agent.nousresearch.com/docs/user-guide/features/tool-gateway
Source: https://hermes-agent.nousresearch.com/docs/integrations/nous-portal
## What's Included
| Tool | Partner | What It Does |
|------|---------|--------------|
| **Web search & extract** | Firecrawl | Agent-grade search + full-page extraction. No rate limits — gateway handles scaling. |
| **Image generation** | FAL | 9 models under one endpoint (see Model IDs below). Default: `FLUX 2 Klein 9B`. |
| **Text-to-speech** | OpenAI TTS | High-quality TTS without separate OpenAI key. Enables voice mode. |
| **Cloud browser automation** | Browser Use | Headless Chromium for `browser_navigate`, `browser_click`, `browser_type`, `browser_vision`. No Browserbase account needed. |
| **Cloud terminal sandbox** | Modal | Serverless terminal sandboxes for code execution (optional add-on). |
## Billing
- Pay-as-you-use against your Nous subscription
- Mix & match — route some tools through Nous, keep your own keys for others
- Same quality — same backends, just fronted by Nous
- No lock-in — bring your own keys anytime, per-tool
## Eligibility
- **Paid subscription required** — Free-tier Nous accounts can use Portal for inference but **don't include managed tools**
- **Free tool pool** — Some accounts get a small managed-tool allowance covering gateway calls without a paid subscription. Gateway surfaces it with a setup prompt on first use.
## Setup Entry Points
```bash
# Fresh install: OAuth + set Nous as provider + enable gateway all at once
hermes setup --portal
# Switch inference provider to Nous Portal, then offered to enable gateway for all tools
hermes model
# À la carte: enable gateway per-tool, one at a time
hermes tools
```
**Key behavior:** `hermes tools` lists Nous-managed backends even if you've never signed in. Selecting one triggers Portal login inline — no need to run `hermes model` first. This path **only** logs you in and enables the single tool picked; it does **not** switch inference provider or prompt for other tools.
## Check Status
```bash
hermes portal info # Portal auth + Tool Gateway routing summary
hermes portal tools # Gateway catalog with current routing per tool
hermes status # Full system status (Tool Gateway is one section)
```
**Example `hermes portal info` output:**
```
◆ Nous Tool Gateway
Nous Portal ✓ managed tools available
Web tools ✓ active via Nous subscription
Image gen ✓ active via Nous subscription
TTS ✓ active via Nous subscription
Browser ○ active via Browser Use key
```
- `✓ active via Nous subscription` = routed through gateway
- `○ active via [key]` = using your direct API key
## Mix & Match
| Strategy | Example |
|----------|---------|
| All through Nous | Easiest; one subscription, done |
| Gateway for web + images, own TTS | Keep ElevenLabs voice, Nous handles rest |
| Gateway only for missing keys | "I have Browserbase but no Firecrawl" |
**Switch anytime:**
```bash
hermes tools # Interactive picker per tool category
```
Select tool → pick **Nous Subscription** (or any direct provider). No config editing. If not logged in, picking **Nous Subscription** kicks off Portal login inline.
## Image Model IDs
Default: `fal-ai/flux-2/klein/9b` (fast, good default). Override per-call by passing model ID to `image_generate`:
| Model | ID | Best For |
|-------|-----|----------|
| FLUX 2 Klein 9B | `fal-ai/flux-2/klein/9b` | Fast, good default |
| FLUX 2 Pro | `fal-ai/flux-2-pro` | Higher fidelity FLUX |
| Z-Image Turbo | `fal-ai/z-image/turbo` | Stylized, fast |
| Nano Banana Pro | `fal-ai/nano-banana-pro` | Google Gemini 3 Pro Image |
| GPT Image 1.5 | `fal-ai/gpt-image-1.5` | OpenAI image gen, text+image |
| GPT Image 2 | `fal-ai/gpt-image-2` | OpenAI latest |
| Ideogram V3 | `fal-ai/ideogram/v3` | Strong prompt adherence + typography |
| Recraft V4 Pro | `fal-ai/recraft/v4/pro/text-to-image` | Vector-style, graphic design |
| Qwen Image | `fal-ai/qwen-image` | Alibaba multimodal |
> **Live list:** `hermes tools` → Image Generation shows current models.
## Configuration Reference (config.yaml)
Most users never need this — `hermes model` and `hermes tools` cover all workflows. For scripting or direct edits:
### Per-Tool `use_gateway` Flag
```yaml
web:
backend: firecrawl
use_gateway: true
image_gen:
use_gateway: true
tts:
provider: openai
use_gateway: true
stt:
provider: openai
use_gateway: true
browser:
use_gateway: true
```
## Critical Note: Hermes 4 Models
> **Hermes 4 (Hermes-4-70B, Hermes-4-405B) is NOT recommended for use inside Hermes Agent.**
> - Tuned for **chat and reasoning**, not rapid-fire tool-calling loops
> - Use for: Nous Chat, research workflows, or via subscription proxy from other tooling
> - **For agent work, pick a frontier agentic model instead:**
```bash
/model anthropic/claude-sonnet-4.6 # best general-purpose agentic model
/model openai/gpt-5.5-pro # strong reasoning + tool calling
/model google/gemini-3-pro-preview # huge context window
/model deepseek/deepseek-v4-pro # cost-effective coder
```
## Day-to-Day Usage
```bash
# Inspect what's wired up
hermes portal # Log in + set up (alias for `hermes auth add nous --type oauth`)
hermes portal info # Portal auth + Tool Gateway routing summary
hermes portal tools # Gateway catalog with current routing per tool
hermes status # Full system status (Tool Gateway is one section)
```
## OAuth Over SSH / Remote Hosts
See [OAuth over SSH / Remote Hosts](https://hermes-agent.nousresearch.com/docs/guides/oauth-over-ssh) — uses `ssh -L` port forwarding or `--manual-paste` for browser-only environments (Cloud Shell, Codespaces).
## Profile Setup
If using [Hermes profiles](https://hermes-agent.nousresearch.com/docs/user-guide/profiles), the Portal refresh token is **automatically shared** across all profiles via shared token store. Sign in once, all profiles pick it up.