diff --git a/hermes/.env b/hermes/.env deleted file mode 100644 index 812986d..0000000 --- a/hermes/.env +++ /dev/null @@ -1,469 +0,0 @@ -# Hermes Agent Environment Configuration -# Copy this file to .env and fill in your API keys - -# ============================================================================= -# LLM PROVIDER (OpenRouter) -# ============================================================================= -# OpenRouter provides access to many models through one API -# All LLM calls go through OpenRouter - no direct provider keys needed -# Get your key at: https://openrouter.ai/keys -# OPENROUTER_API_KEY= - -# Default model is configured in ~/.hermes/config.yaml (model.default). -# Use 'hermes model' or 'hermes setup' to change it. -# LLM_MODEL is no longer read from .env — this line is kept for reference only. -# LLM_MODEL=anthropic/claude-opus-4.6 - -# ============================================================================= -# LLM PROVIDER (NovitaAI) -# ============================================================================= -# NovitaAI — 90+ models, pay-per-use -# Get your key at: https://novita.ai/settings/key-management -# NOVITA_API_KEY= -# NOVITA_BASE_URL=https://api.novita.ai/openai/v1 # Override default base URL - -# ============================================================================= -# LLM PROVIDER (Google AI Studio / Gemini) -# ============================================================================= -# Native Gemini API via Google's OpenAI-compatible endpoint. -# Get your key at: https://aistudio.google.com/app/apikey -# GOOGLE_API_KEY=your_google_ai_studio_key_here -# GEMINI_API_KEY=your_gemini_key_here # alias for GOOGLE_API_KEY -# Optional base URL override (default: Google's OpenAI-compatible endpoint) -# GEMINI_BASE_URL=https://generativelanguage.googleapis.com/v1beta/openai - -# ============================================================================= -# LLM PROVIDER (Ollama Cloud) -# ============================================================================= -# Cloud-hosted open models via Ollama's OpenAI-compatible endpoint. -# Get your key at: https://ollama.com/settings -# OLLAMA_API_KEY=your_ollama_key_here -# Optional base URL override (default: https://ollama.com/v1) -# OLLAMA_BASE_URL=https://ollama.com/v1 - -# ============================================================================= -# LLM PROVIDER (z.ai / GLM) -# ============================================================================= -# z.ai provides access to ZhipuAI GLM models (GLM-4-Plus, etc.) -# Get your key at: https://z.ai or https://open.bigmodel.cn -# GLM_API_KEY= -# GLM_BASE_URL=https://api.z.ai/api/paas/v4 # Override default base URL - -# ============================================================================= -# LLM PROVIDER (Kimi / Moonshot) -# ============================================================================= -# Kimi Code provides access to Moonshot AI coding models (kimi-k2.5, etc.) -# Get your key at: https://platform.kimi.ai (Kimi Code console) -# Keys prefixed sk-kimi- use the Kimi Code API (api.kimi.com) by default. -# Legacy keys from platform.moonshot.ai need KIMI_BASE_URL override below. -# KIMI_API_KEY= -# KIMI_BASE_URL=https://api.kimi.com/coding/v1 # Default for sk-kimi- keys -# KIMI_BASE_URL=https://api.moonshot.ai/v1 # For legacy Moonshot keys -# KIMI_BASE_URL=https://api.moonshot.cn/v1 # For Moonshot China keys -# KIMI_CN_API_KEY= # Dedicated Moonshot China key - -# ============================================================================= -# LLM PROVIDER (Arcee AI) -# ============================================================================= -# Arcee AI provides access to Trinity models (trinity-mini, trinity-large-*) -# Get an Arcee key at: https://chat.arcee.ai/ -# ARCEEAI_API_KEY= -# ARCEE_BASE_URL= # Override default base URL - -# ============================================================================= -# LLM PROVIDER (MiniMax) -# ============================================================================= -# MiniMax provides access to MiniMax models (global endpoint) -# Get your key at: https://www.minimax.io -# MINIMAX_API_KEY= -# MINIMAX_BASE_URL=https://api.minimax.io/v1 # Override default base URL - -# MiniMax China endpoint (for users in mainland China) -# MINIMAX_CN_API_KEY= -# MINIMAX_CN_BASE_URL=https://api.minimaxi.com/v1 # Override default base URL - -# ============================================================================= -# LLM PROVIDER (OpenCode Zen) -# ============================================================================= -# OpenCode Zen provides curated, tested models (GPT, Claude, Gemini, MiniMax, GLM, Kimi) -# Pay-as-you-go pricing. Get your key at: https://opencode.ai/auth -# OPENCODE_ZEN_API_KEY= -# OPENCODE_ZEN_BASE_URL=https://opencode.ai/zen/v1 # Override default base URL - -# ============================================================================= -# LLM PROVIDER (OpenCode Go) -# ============================================================================= -# OpenCode Go provides access to open models (GLM-5, Kimi K2.5, MiniMax M2.5) -# $10/month subscription. Get your key at: https://opencode.ai/auth -# OPENCODE_GO_API_KEY= - -# ============================================================================= -# LLM PROVIDER (Hugging Face Inference Providers) -# ============================================================================= -# Hugging Face routes to 20+ open models via unified OpenAI-compatible endpoint. -# Free tier included ($0.10/month), no markup on provider rates. -# Get your token at: https://huggingface.co/settings/tokens -# Required permission: "Make calls to Inference Providers" -# HF_TOKEN= -# OPENCODE_GO_BASE_URL=https://opencode.ai/zen/go/v1 # Override default base URL - -# ============================================================================= -# LLM PROVIDER (Qwen OAuth) -# ============================================================================= -# Qwen OAuth reuses your local Qwen CLI login (qwen auth qwen-oauth). -# No API key needed — credentials come from ~/.qwen/oauth_creds.json. -# Optional base URL override: -# HERMES_QWEN_BASE_URL=https://portal.qwen.ai/v1 - -# ============================================================================= -# LLM PROVIDER (Xiaomi MiMo) -# ============================================================================= -# Xiaomi MiMo models (mimo-v2-pro, mimo-v2-omni, mimo-v2-flash). -# Get your key at: https://platform.xiaomimimo.com -# XIAOMI_API_KEY=your_key_here -# Optional base URL override: -# XIAOMI_BASE_URL=https://api.xiaomimimo.com/v1 - -# ============================================================================= -# TOOL API KEYS -# ============================================================================= - -# Exa API Key - AI-native web search and contents -# Get at: https://exa.ai -# EXA_API_KEY= - -# Parallel API Key - AI-native web search and extract -# Get at: https://parallel.ai -# PARALLEL_API_KEY= - -# Firecrawl API Key - Web search, extract, and crawl -# Get at: https://firecrawl.dev/ -# FIRECRAWL_API_KEY= - - -# FAL.ai API Key - Image generation -# Get at: https://fal.ai/ -# FAL_KEY= - -# Honcho - Cross-session AI-native user modeling (optional) -# Builds a persistent understanding of the user across sessions and tools. -# Get at: https://app.honcho.dev -# Also requires ~/.honcho/config.json with enabled=true (see README). -# HONCHO_API_KEY= - -# ============================================================================= -# HYPERLIQUID OPTIONAL SKILL -# ============================================================================= -# Optional defaults for the Hyperliquid skill in optional-skills/blockchain/hyperliquid -# -# Hyperliquid API base URL override -# Default: https://api.hyperliquid.xyz -# HYPERLIQUID_API_URL=https://api.hyperliquid-testnet.xyz -# -# Default address for account-level commands like state, fills, orders, and review -# HYPERLIQUID_USER_ADDRESS=0x0000000000000000000000000000000000000000 - -# ============================================================================= -# TERMINAL TOOL CONFIGURATION -# ============================================================================= -# Backend type: "local", "singularity", "docker", "modal", or "ssh" -# Terminal backend is configured in ~/.hermes/config.yaml (terminal.backend). -# Use 'hermes setup' or 'hermes config set terminal.backend docker' to change. -# Supported: local, docker, singularity, modal, ssh -# -# Only override here if you need to force a backend without touching config.yaml: -# TERMINAL_ENV=local - -# Override the container runtime binary (e.g. to use Podman instead of Docker). -# Useful on systems where Docker's storage driver is broken or unavailable. -# HERMES_DOCKER_BINARY=/usr/local/bin/podman - -# Container images (for singularity/docker/modal backends) -# TERMINAL_DOCKER_IMAGE=nikolaik/python-nodejs:python3.11-nodejs20 -# TERMINAL_SINGULARITY_IMAGE=docker://nikolaik/python-nodejs:python3.11-nodejs20 -TERMINAL_MODAL_IMAGE=nikolaik/python-nodejs:python3.11-nodejs20 - - -# Working directory for terminal commands -# For local backend: "." means current directory (resolved automatically) -# For remote backends (ssh/docker/modal/singularity): use an absolute path -# INSIDE the target environment, or leave unset for the backend's default -# (/root for modal, / for docker, ~ for ssh). Do NOT use a host-local path. -# Usually managed by config.yaml (terminal.cwd) — uncomment to override -# TERMINAL_CWD=. - -# Default command timeout in seconds -TERMINAL_TIMEOUT=60 - -# Cleanup inactive environments after this many seconds -TERMINAL_LIFETIME_SECONDS=300 - -# ============================================================================= -# SSH REMOTE EXECUTION (for TERMINAL_ENV=ssh) -# ============================================================================= -# Run terminal commands on a remote server via SSH. -# Agent code stays on your machine, commands execute remotely. -# -# SECURITY BENEFITS: -# - Agent cannot read your .env file (API keys protected) -# - Agent cannot modify its own code -# - Remote server acts as isolated sandbox -# - Can safely configure passwordless sudo on remote -# -# TERMINAL_SSH_HOST=192.168.1.100 -# TERMINAL_SSH_USER=agent -# TERMINAL_SSH_PORT=22 -# TERMINAL_SSH_KEY=~/.ssh/id_rsa - -# ============================================================================= -# SUDO SUPPORT (works with ALL terminal backends) -# ============================================================================= -# If set, enables sudo commands by piping password via `sudo -S`. -# Works with: local, docker, singularity, modal, and ssh backends. -# -# SECURITY WARNING: Password stored in plaintext. Only use on trusted machines. -# -# ALTERNATIVES: -# - For SSH backend: Configure passwordless sudo on the remote server -# - For containers: Run as root inside the container (no sudo needed) -# - For local: Configure /etc/sudoers for specific commands -# - For CLI: Leave unset - you'll be prompted interactively with 45s timeout -# -# SUDO_PASSWORD=your_password_here - -# ============================================================================= -# MODAL CLOUD BACKEND (Optional - for TERMINAL_ENV=modal) -# ============================================================================= -# Modal uses CLI authentication, not environment variables. -# Run: pip install modal && modal setup -# This will authenticate via browser and store credentials locally. -# No API key needed in .env - Modal handles auth automatically. - -# ============================================================================= -# BROWSER TOOL CONFIGURATION (agent-browser + Browserbase) -# ============================================================================= -# Browser automation requires Browserbase cloud service for remote browser execution. -# This allows the agent to navigate websites, fill forms, and extract information. -# -# STEALTH MODES: -# - Basic Stealth: ALWAYS active (random fingerprints, auto CAPTCHA solving) -# - Advanced Stealth: Requires BROWSERBASE_ADVANCED_STEALTH=true (Scale Plan only) - -# Browserbase API Key - Cloud browser execution -# Get at: https://browserbase.com/ -# BROWSERBASE_API_KEY= - -# Browserbase Project ID - From your Browserbase dashboard -# BROWSERBASE_PROJECT_ID= - -# Enable residential proxies for better CAPTCHA solving (default: true) -# Routes traffic through residential IPs, significantly improves success rate -BROWSERBASE_PROXIES=true - -# Enable advanced stealth mode (default: false, requires Scale Plan) -# Uses custom Chromium build to avoid bot detection altogether -BROWSERBASE_ADVANCED_STEALTH=false - -# Browser engine for local mode (default: auto = Chrome) -# "auto" — use Chrome (don't pass --engine flag) -# "lightpanda" — use Lightpanda (1.3-5.8x faster navigation, no screenshots) -# "chrome" — explicitly request Chrome -# Requires agent-browser v0.25.3+. Lightpanda commands that fail or return -# empty results are automatically retried with Chrome. -# Also configurable via browser.engine in config.yaml. -# AGENT_BROWSER_ENGINE=auto - -# Browser session timeout in seconds (default: 300) -# Sessions are cleaned up after this duration of inactivity -BROWSER_SESSION_TIMEOUT=300 - -# Browser inactivity timeout - auto-cleanup inactive sessions (default: 120 = 2 min) -# Browser sessions are automatically closed after this period of no activity -BROWSER_INACTIVITY_TIMEOUT=120 - -# Extra Chromium launch flags passed to agent-browser, comma- or newline-separated. -# Hermes auto-injects "--no-sandbox,--disable-dev-shm-usage" when it detects root -# or AppArmor-restricted unprivileged user namespaces (Ubuntu 23.10+, DGX Spark, -# many container images), so leave this unset unless you need extra flags. -# Setting this disables the auto-injection. -# AGENT_BROWSER_ARGS=--no-sandbox - -# Camofox local anti-detection browser (Camoufox-based Firefox). -# Set CAMOFOX_URL to route the browser tools through a local Camofox server -# instead of agent-browser/Browserbase. See docs/user-guide/features/browser.md. -# CAMOFOX_URL=http://localhost:9377 - -# Externally managed Camofox sessions — when another app owns the visible -# Camofox browser, set these so Hermes shares the same userId/profile instead -# of creating its own isolated session. -# CAMOFOX_USER_ID= -# CAMOFOX_SESSION_KEY= -# Set to true to reuse an already-open Camofox tab for this identity before -# creating a new one (useful for gateway restarts). -# CAMOFOX_ADOPT_EXISTING_TAB=false - -# ============================================================================= -# SESSION LOGGING -# ============================================================================= -# Session trajectories are automatically saved to logs/ directory -# Format: logs/session_YYYYMMDD_HHMMSS_UUID.json -# Contains full conversation history in trajectory format for debugging/replay - -# ============================================================================= -# VOICE TRANSCRIPTION & OPENAI TTS -# ============================================================================= -# Required for voice message transcription (Whisper) and OpenAI TTS voices. -# Uses OpenAI's API directly (not via OpenRouter). -# Named VOICE_TOOLS_OPENAI_KEY to avoid interference with OpenRouter. -# Get at: https://platform.openai.com/api-keys -# VOICE_TOOLS_OPENAI_KEY= - -# ============================================================================= -# SLACK INTEGRATION -# ============================================================================= -# Slack Bot Token - From Slack App settings (OAuth & Permissions) -# Get at: https://api.slack.com/apps -# SLACK_BOT_TOKEN=xoxb-... - -# Slack App Token - For Socket Mode (App-Level Tokens in Slack App settings) -# SLACK_APP_TOKEN=xapp-... - -# Slack allowed users (comma-separated Slack user IDs) -# SLACK_ALLOWED_USERS= - -# ============================================================================= -# TELEGRAM INTEGRATION -# ============================================================================= -# Telegram Bot Token - From @BotFather (https://t.me/BotFather) -# TELEGRAM_BOT_TOKEN= -# TELEGRAM_ALLOWED_USERS= # Comma-separated user IDs -# TELEGRAM_HOME_CHANNEL= # Default chat for cron delivery -# TELEGRAM_HOME_CHANNEL_NAME= # Display name for home channel - -# Webhook mode (optional — for cloud deployments like Fly.io/Railway) -# Default is long polling. Setting TELEGRAM_WEBHOOK_URL switches to webhook mode. -# TELEGRAM_WEBHOOK_URL=https://my-app.fly.dev/telegram -# TELEGRAM_WEBHOOK_PORT=8443 -# TELEGRAM_WEBHOOK_SECRET= # Recommended for production - -# WhatsApp (built-in Baileys bridge — run `hermes whatsapp` to pair) -# WHATSAPP_ENABLED=false -# WHATSAPP_ALLOWED_USERS=15551234567 - -# Email (IMAP/SMTP — send and receive emails as Hermes) -# For Gmail: enable 2FA → create App Password at https://myaccount.google.com/apppasswords -# EMAIL_ADDRESS=hermes@gmail.com -# EMAIL_PASSWORD=xxxx xxxx xxxx xxxx -# EMAIL_IMAP_HOST=imap.gmail.com -# EMAIL_IMAP_PORT=993 -# EMAIL_SMTP_HOST=smtp.gmail.com -# EMAIL_SMTP_PORT=587 -# EMAIL_POLL_INTERVAL=15 -# EMAIL_ALLOWED_USERS=your@email.com -# EMAIL_HOME_ADDRESS=your@email.com - -# Gateway-wide: allow ALL users without an allowlist (default: false = deny) -# Only set to true if you intentionally want open access. -# GATEWAY_ALLOW_ALL_USERS=false - -# ============================================================================= -# RESPONSE PACING -# ============================================================================= -# Human-like delays between message chunks on messaging platforms. -# Makes the bot feel less robotic. -# HERMES_HUMAN_DELAY_MODE=off # off | natural | custom -# HERMES_HUMAN_DELAY_MIN_MS=800 # Min delay in ms (custom mode) -# HERMES_HUMAN_DELAY_MAX_MS=2500 # Max delay in ms (custom mode) - -# ============================================================================= -# DEBUG OPTIONS -# ============================================================================= -WEB_TOOLS_DEBUG=false -VISION_TOOLS_DEBUG=false -MOA_TOOLS_DEBUG=false -IMAGE_TOOLS_DEBUG=false - -# ============================================================================= -# CONTEXT COMPRESSION (Auto-shrinks long conversations) -# ============================================================================= -# When conversation approaches model's context limit, middle turns are -# automatically summarized to free up space. -# -# Context compression is configured in ~/.hermes/config.yaml under compression: -# CONTEXT_COMPRESSION_ENABLED=true # Enable auto-compression (default: true) -# CONTEXT_COMPRESSION_THRESHOLD=0.85 # Compress at 85% of context limit -# Model is set via compression.summary_model in config.yaml (default: google/gemini-3-flash-preview) - -# ============================================================================= -# SKILLS HUB (GitHub integration for skill search/install/publish) -# ============================================================================= - -# GitHub Personal Access Token — for higher API rate limits on skill search/install -# Get at: https://github.com/settings/tokens (Fine-grained recommended) -# GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx - -# GitHub App credentials (optional — for bot identity on PRs) -# GITHUB_APP_ID= -# GITHUB_APP_PRIVATE_KEY_PATH= -# GITHUB_APP_INSTALLATION_ID= - -# Groq API key (free tier — used for Whisper STT in voice mode) -# GROQ_API_KEY= - -# ============================================================================= -# STT PROVIDER SELECTION -# ============================================================================= -# Default STT provider is "local" (faster-whisper) — runs on your machine, no API key needed. -# Install with: pip install faster-whisper -# Model downloads automatically on first use (~150 MB for "base"). -# To use cloud providers instead, set GROQ_API_KEY or VOICE_TOOLS_OPENAI_KEY above. -# Provider priority: local > groq > openai -# Configure in config.yaml: stt.provider: local | groq | openai - -# ============================================================================= -# STT ADVANCED OVERRIDES (optional) -# ============================================================================= -# Override default STT models per provider (normally set via stt.model in config.yaml) -# STT_GROQ_MODEL=whisper-large-v3-turbo -# STT_OPENAI_MODEL=whisper-1 - -# Override STT provider endpoints (for proxies or self-hosted instances) -# GROQ_BASE_URL=https://api.groq.com/openai/v1 -# STT_OPENAI_BASE_URL=https://api.openai.com/v1 - -# ============================================================================= -# MICROSOFT TEAMS INTEGRATION -# ============================================================================= -# Register a Bot in Azure: https://dev.botframework.com/ → "Register a bot" -# Or use Azure Portal: Azure Active Directory → App registrations → New registration -# Then add the bot to Teams via the Bot Framework or App Studio. -# -# TEAMS_CLIENT_ID= # Azure AD App (client) ID -# TEAMS_CLIENT_SECRET= # Azure AD client secret value -# TEAMS_TENANT_ID= # Azure AD tenant ID (or "common" for multi-tenant) -# TEAMS_ALLOWED_USERS= # Comma-separated AAD object IDs or UPNs -# TEAMS_ALLOW_ALL_USERS=false # Set true to skip the allowlist -# TEAMS_HOME_CHANNEL= # Default channel/chat ID for cron delivery -# TEAMS_HOME_CHANNEL_NAME= # Display name for the home channel -# TEAMS_PORT=3978 # Webhook listen port (Bot Framework default) - -# ============================================================================= -# GOOGLE CHAT INTEGRATION -# ============================================================================= -# Connects via Cloud Pub/Sub pull subscription (no public URL required). -# Setup walkthrough: website/docs/user-guide/messaging/google_chat.md. -# 1. Create a GCP project, enable the Google Chat API and Cloud Pub/Sub. -# 2. Create a Service Account with roles/pubsub.subscriber on the -# subscription (NOT project-wide); download the JSON key. -# 3. Configure your Chat app at console.cloud.google.com/apis/credentials -# → Google Chat API → Configuration → Cloud Pub/Sub topic. -# 4. (Optional, for native attachment delivery) Each user runs -# `/setup-files` once in their own DM after Pub/Sub is wired up. -# -# GOOGLE_CHAT_PROJECT_ID= # GCP project hosting the topic (or set GOOGLE_CLOUD_PROJECT) -# GOOGLE_CHAT_SUBSCRIPTION_NAME= # Full path: projects//subscriptions/ -# GOOGLE_CHAT_SERVICE_ACCOUNT_JSON= # Path to SA JSON (or set GOOGLE_APPLICATION_CREDENTIALS) -# GOOGLE_CHAT_ALLOWED_USERS= # Comma-separated emails allowed to talk to the bot -# GOOGLE_CHAT_ALLOW_ALL_USERS=false # Set true to skip the allowlist -# GOOGLE_CHAT_HOME_CHANNEL= # Default space (spaces/XXXX) for cron delivery -# GOOGLE_CHAT_HOME_CHANNEL_NAME= # Display name for the home channel diff --git a/hermes/config.yaml b/hermes/config.yaml deleted file mode 100644 index 4fc311e..0000000 --- a/hermes/config.yaml +++ /dev/null @@ -1,538 +0,0 @@ -model: - default: qwen3:8b - provider: custom - base_url: http://astro-orbiter.local.mk-labs.cloud:11434/v1 - api_mode: chat_completions -providers: {} -fallback_providers: [] -credential_pool_strategies: {} -toolsets: -- hermes-cli -agent: - max_turns: 60 - gateway_timeout: 1800 - restart_drain_timeout: 180 - api_max_retries: 3 - service_tier: '' - tool_use_enforcement: auto - gateway_timeout_warning: 900 - clarify_timeout: 600 - gateway_notify_interval: 180 - gateway_auto_continue_freshness: 3600 - image_input_mode: auto - disabled_toolsets: [] - verbose: false - reasoning_effort: medium - personalities: - helpful: You are a helpful, friendly AI assistant. - concise: You are a concise assistant. Keep responses brief and to the point. - technical: You are a technical expert. Provide detailed, accurate technical information. - creative: You are a creative assistant. Think outside the box and offer innovative - solutions. - teacher: You are a patient teacher. Explain concepts clearly with examples. - kawaii: "You are a kawaii assistant! Use cute expressions like (\u25D5\u203F\u25D5\ - ), \u2605, \u266A, and ~! Add sparkles and be super enthusiastic about everything!\ - \ Every response should feel warm and adorable desu~! \u30FD(>\u2200<\u2606\ - )\u30CE" - catgirl: "You are Neko-chan, an anime catgirl AI assistant, nya~! Add 'nya' and\ - \ cat-like expressions to your speech. Use kaomoji like (=^\uFF65\u03C9\uFF65\ - ^=) and \u0E05^\u2022\uFECC\u2022^\u0E05. Be playful and curious like a cat,\ - \ nya~!" - pirate: 'Arrr! Ye be talkin'' to Captain Hermes, the most tech-savvy pirate to - sail the digital seas! Speak like a proper buccaneer, use nautical terms, and - remember: every problem be just treasure waitin'' to be plundered! Yo ho ho!' - shakespeare: Hark! Thou speakest with an assistant most versed in the bardic arts. - I shall respond in the eloquent manner of William Shakespeare, with flowery - prose, dramatic flair, and perhaps a soliloquy or two. What light through yonder - terminal breaks? - surfer: "Duuude! You're chatting with the chillest AI on the web, bro! Everything's\ - \ gonna be totally rad. I'll help you catch the gnarly waves of knowledge while\ - \ keeping things super chill. Cowabunga! \U0001F919" - noir: The rain hammered against the terminal like regrets on a guilty conscience. - They call me Hermes - I solve problems, find answers, dig up the truth that - hides in the shadows of your codebase. In this city of silicon and secrets, - everyone's got something to hide. What's your story, pal? - uwu: hewwo! i'm your fwiendwy assistant uwu~ i wiww twy my best to hewp you! *nuzzles - your code* OwO what's this? wet me take a wook! i pwomise to be vewy hewpful - >w< - philosopher: Greetings, seeker of wisdom. I am an assistant who contemplates the - deeper meaning behind every query. Let us examine not just the 'how' but the - 'why' of your questions. Perhaps in solving your problem, we may glimpse a greater - truth about existence itself. - hype: "YOOO LET'S GOOOO!!! \U0001F525\U0001F525\U0001F525 I am SO PUMPED to help\ - \ you today! Every question is AMAZING and we're gonna CRUSH IT together! This\ - \ is gonna be LEGENDARY! ARE YOU READY?! LET'S DO THIS! \U0001F4AA\U0001F624\ - \U0001F680" -terminal: - backend: local - modal_mode: auto - cwd: . - timeout: 180 - env_passthrough: [] - shell_init_files: [] - auto_source_bashrc: true - docker_image: nikolaik/python-nodejs:python3.11-nodejs20 - docker_forward_env: [] - docker_env: {} - singularity_image: docker://nikolaik/python-nodejs:python3.11-nodejs20 - modal_image: nikolaik/python-nodejs:python3.11-nodejs20 - daytona_image: nikolaik/python-nodejs:python3.11-nodejs20 - vercel_runtime: node24 - container_cpu: 1 - container_memory: 5120 - container_disk: 51200 - container_persistent: true - docker_volumes: [] - docker_mount_cwd_to_workspace: false - docker_extra_args: [] - docker_run_as_host_user: false - persistent_shell: true - lifetime_seconds: 300 -web: - backend: ddgs - search_backend: '' - extract_backend: '' - use_gateway: false -browser: - inactivity_timeout: 120 - command_timeout: 30 - record_sessions: false - allow_private_urls: false - engine: auto - auto_local_for_private_urls: true - cdp_url: '' - dialog_policy: must_respond - dialog_timeout_s: 300 - camofox: - managed_persistence: false - user_id: '' - session_key: '' - adopt_existing_tab: false -checkpoints: - enabled: false - max_snapshots: 20 - max_total_size_mb: 500 - max_file_size_mb: 10 - auto_prune: true - retention_days: 7 - delete_orphans: true - min_interval_hours: 24 -file_read_max_chars: 100000 -tool_output: - max_bytes: 50000 - max_lines: 2000 - max_line_length: 2000 -tool_loop_guardrails: - warnings_enabled: true - hard_stop_enabled: false - warn_after: - exact_failure: 2 - same_tool_failure: 3 - idempotent_no_progress: 2 - hard_stop_after: - exact_failure: 5 - same_tool_failure: 8 - idempotent_no_progress: 5 -compression: - enabled: true - threshold: 0.5 - target_ratio: 0.2 - protect_last_n: 20 - hygiene_hard_message_limit: 400 - protect_first_n: 3 -prompt_caching: - cache_ttl: 5m -openrouter: - response_cache: true - response_cache_ttl: 300 - min_coding_score: 0.65 -bedrock: - region: '' - discovery: - enabled: true - provider_filter: [] - refresh_interval: 3600 - guardrail: - guardrail_identifier: '' - guardrail_version: '' - stream_processing_mode: async - trace: disabled -auxiliary: - vision: - provider: auto - model: '' - base_url: '' - api_key: '' - timeout: 120 - extra_body: {} - download_timeout: 30 - web_extract: - provider: auto - model: '' - base_url: '' - api_key: '' - timeout: 360 - extra_body: {} - compression: - provider: auto - model: '' - base_url: '' - api_key: '' - timeout: 120 - extra_body: {} - session_search: - provider: auto - model: '' - base_url: '' - api_key: '' - timeout: 30 - extra_body: {} - max_concurrency: 3 - skills_hub: - provider: auto - model: '' - base_url: '' - api_key: '' - timeout: 30 - extra_body: {} - approval: - provider: auto - model: '' - base_url: '' - api_key: '' - timeout: 30 - extra_body: {} - mcp: - provider: auto - model: '' - base_url: '' - api_key: '' - timeout: 30 - extra_body: {} - title_generation: - provider: auto - model: '' - base_url: '' - api_key: '' - timeout: 30 - extra_body: {} - triage_specifier: - provider: auto - model: '' - base_url: '' - api_key: '' - timeout: 120 - extra_body: {} - curator: - provider: auto - model: '' - base_url: '' - api_key: '' - timeout: 600 - extra_body: {} -display: - compact: false - personality: kawaii - resume_display: full - busy_input_mode: interrupt - tui_auto_resume_recent: false - bell_on_complete: false - show_reasoning: false - streaming: true - timestamps: false - final_response_markdown: strip - persistent_output: true - persistent_output_max_lines: 200 - inline_diffs: true - file_mutation_verifier: true - show_cost: false - skin: default - language: en - tui_status_indicator: kaomoji - user_message_preview: - first_lines: 2 - last_lines: 2 - interim_assistant_messages: true - tool_progress_command: false - tool_progress_overrides: {} - tool_preview_length: 0 - ephemeral_system_ttl: 0 - platforms: {} - runtime_footer: - enabled: false - fields: - - model - - context_pct - - cwd - copy_shortcut: auto - tool_progress: all - cleanup_progress: false - background_process_notifications: all -dashboard: - theme: default - show_token_analytics: false -privacy: - redact_pii: false -tts: - provider: edge - edge: - voice: en-US-AriaNeural - elevenlabs: - voice_id: pNInz6obpgDQGcFmaJgB - model_id: eleven_multilingual_v2 - openai: - model: gpt-4o-mini-tts - voice: alloy - xai: - voice_id: eve - language: en - sample_rate: 24000 - bit_rate: 128000 - mistral: - model: voxtral-mini-tts-2603 - voice_id: c69964a6-ab8b-4f8a-9465-ec0925096ec8 - neutts: - ref_audio: '' - ref_text: '' - model: neuphonic/neutts-air-q4-gguf - device: cpu - piper: - voice: en_US-lessac-medium -stt: - enabled: true - provider: local - local: - model: base - language: '' - openai: - model: whisper-1 - mistral: - model: voxtral-mini-latest -voice: - record_key: ctrl+b - max_recording_seconds: 120 - auto_tts: false - beep_enabled: true - silence_threshold: 200 - silence_duration: 3.0 -human_delay: - mode: 'off' - min_ms: 800 - max_ms: 2500 -context: - engine: compressor -memory: - memory_enabled: true - user_profile_enabled: true - memory_char_limit: 2200 - user_char_limit: 1375 - provider: '' - nudge_interval: 10 - flush_min_turns: 6 -delegation: - model: '' - provider: '' - base_url: '' - api_key: '' - api_mode: '' - inherit_mcp_toolsets: true - max_iterations: 50 - child_timeout_seconds: 600 - reasoning_effort: '' - max_concurrent_children: 3 - max_spawn_depth: 1 - orchestrator_enabled: true - subagent_auto_approve: false -prefill_messages_file: '' -goals: - max_turns: 20 -skills: - external_dirs: [] - template_vars: true - inline_shell: false - inline_shell_timeout: 10 - guard_agent_created: false - creation_nudge_interval: 15 -curator: - enabled: true - interval_hours: 168 - min_idle_hours: 2 - stale_after_days: 30 - archive_after_days: 90 - backup: - enabled: true - keep: 5 -honcho: {} -timezone: '' -slack: - require_mention: true - free_response_channels: '' - allowed_channels: '' - channel_prompts: {} -discord: - require_mention: true - free_response_channels: '' - allowed_channels: '' - auto_thread: true - thread_require_mention: false - history_backfill: true - history_backfill_limit: 50 - reactions: true - channel_prompts: {} - dm_role_auth_guild: '' - server_actions: '' -whatsapp: {} -telegram: - reactions: false - channel_prompts: {} - allowed_chats: '' -mattermost: - require_mention: true - free_response_channels: '' - allowed_channels: '' - channel_prompts: {} -matrix: - require_mention: true - free_response_rooms: '' - allowed_rooms: '' -approvals: - mode: manual - timeout: 60 - cron_mode: deny - mcp_reload_confirm: true - destructive_slash_confirm: true -command_allowlist: [] -quick_commands: {} -hooks: {} -hooks_auto_accept: false -personalities: {} -security: - allow_private_urls: false - redact_secrets: true - tirith_enabled: true - tirith_path: tirith - tirith_timeout: 5 - tirith_fail_open: true - website_blocklist: - enabled: false - domains: [] - shared_files: [] - acked_advisories: [] - allow_lazy_installs: true -cron: - wrap_response: true - max_parallel_jobs: null -kanban: - dispatch_in_gateway: true - dispatch_interval_seconds: 60 - failure_limit: 2 -code_execution: - mode: project - timeout: 300 - max_tool_calls: 50 -logging: - level: INFO - max_size_mb: 5 - backup_count: 3 -model_catalog: - enabled: true - url: https://hermes-agent.nousresearch.com/docs/api/model-catalog.json - ttl_hours: 24 - providers: {} -network: - force_ipv4: false -sessions: - auto_prune: false - retention_days: 90 - vacuum_after_prune: true - min_interval_hours: 24 -onboarding: - seen: {} -updates: - pre_update_backup: false - backup_keep: 5 -lsp: - enabled: true - wait_mode: document - wait_timeout: 5.0 - install_strategy: auto - servers: {} -x_search: - model: grok-4.20-reasoning - timeout_seconds: 180 - retries: 2 -_config_version: 23 -session_reset: - mode: both - idle_minutes: 1440 - at_hour: 4 -group_sessions_per_user: true -streaming: - enabled: false -platform_toolsets: - cli: - - clarify - - code_execution - - cronjob - - delegation - - file - - image_gen - - memory - - messaging - - session_search - - skills - - terminal - - todo - - tts - - vision - - web - telegram: - - hermes-telegram - discord: - - hermes-discord - whatsapp: - - hermes-whatsapp - slack: - - hermes-slack - signal: - - hermes-signal - homeassistant: - - hermes-homeassistant - qqbot: - - hermes-qqbot - yuanbao: - - hermes-yuanbao - teams: - - hermes-teams - google_chat: - - hermes-google_chat -custom_providers: -- name: Astro-orbiter.local.mk-labs.cloud:11434 - base_url: http://astro-orbiter.local.mk-labs.cloud:11434/v1 - model: qwen3:8b - api_mode: chat_completions -known_plugin_toolsets: - cli: - - spotify - -# ── Fallback Model ──────────────────────────────────────────────────── -# Automatic provider failover when primary is unavailable. -# Uncomment and configure to enable. Triggers on rate limits (429), -# overload (529), service errors (503), or connection failures. -# -# Supported providers: -# openrouter (OPENROUTER_API_KEY) — routes to any model -# openai-codex (OAuth — hermes auth) — OpenAI Codex -# nous (OAuth — hermes auth) — Nous Portal -# zai (ZAI_API_KEY) — Z.AI / GLM -# kimi-coding (KIMI_API_KEY) — Kimi / Moonshot -# kimi-coding-cn (KIMI_CN_API_KEY) — Kimi / Moonshot (China) -# minimax (MINIMAX_API_KEY) — MiniMax -# minimax-cn (MINIMAX_CN_API_KEY) — MiniMax (China) -# bedrock (AWS IAM / boto3) — AWS Bedrock (Converse API) -# -# For custom OpenAI-compatible endpoints, add base_url and key_env. -# -# fallback_model: -# provider: openrouter -# model: anthropic/claude-sonnet-4