From 0858ee2f270131b483a10a63f0c84755873253d8 Mon Sep 17 00:00:00 2001 From: Teknium Date: Mon, 23 Feb 2026 23:21:33 +0000 Subject: [PATCH] refactor: rename HERMES_OPENAI_API_KEY to VOICE_TOOLS_OPENAI_KEY - Updated the environment variable name from HERMES_OPENAI_API_KEY to VOICE_TOOLS_OPENAI_KEY across multiple files to avoid interference with OpenRouter. - Adjusted related error messages and configuration prompts to reflect the new variable name, ensuring consistency throughout the codebase. --- .env.example | 4 ++-- gateway/run.py | 4 ++-- hermes_cli/config.py | 6 +++--- hermes_cli/setup.py | 8 ++++---- tools/transcription_tools.py | 6 +++--- tools/tts_tool.py | 8 ++++---- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.env.example b/.env.example index b0089f6ec..ac6a187f3 100644 --- a/.env.example +++ b/.env.example @@ -147,9 +147,9 @@ BROWSER_INACTIVITY_TIMEOUT=120 # ============================================================================= # Required for voice message transcription (Whisper) and OpenAI TTS voices. # Uses OpenAI's API directly (not via OpenRouter). -# Named HERMES_OPENAI_API_KEY to avoid interference with OpenRouter. +# Named VOICE_TOOLS_OPENAI_KEY to avoid interference with OpenRouter. # Get at: https://platform.openai.com/api-keys -HERMES_OPENAI_API_KEY= +VOICE_TOOLS_OPENAI_KEY= # ============================================================================= # SLACK INTEGRATION diff --git a/gateway/run.py b/gateway/run.py index 1a64763c4..67b903237 100644 --- a/gateway/run.py +++ b/gateway/run.py @@ -1003,10 +1003,10 @@ class GatewayRunner: ) else: error = result.get("error", "unknown error") - if "OPENAI_API_KEY" in error or "HERMES_OPENAI_API_KEY" in error: + if "OPENAI_API_KEY" in error or "VOICE_TOOLS_OPENAI_KEY" in error: enriched_parts.append( "[The user sent a voice message but I can't listen " - "to it right now~ HERMES_OPENAI_API_KEY isn't set up yet " + "to it right now~ VOICE_TOOLS_OPENAI_KEY isn't set up yet " "(';w;') Let them know!]" ) else: diff --git a/hermes_cli/config.py b/hermes_cli/config.py index a2ac43c3c..741bd0c4f 100644 --- a/hermes_cli/config.py +++ b/hermes_cli/config.py @@ -191,7 +191,7 @@ OPTIONAL_ENV_VARS = { "tools": ["rl_get_results", "rl_check_status"], "password": True, }, - "HERMES_OPENAI_API_KEY": { + "VOICE_TOOLS_OPENAI_KEY": { "description": "OpenAI API key for voice transcription (Whisper) and OpenAI TTS", "prompt": "OpenAI API Key (for Whisper STT + TTS)", "url": "https://platform.openai.com/api-keys", @@ -622,7 +622,7 @@ def show_config(): keys = [ ("OPENROUTER_API_KEY", "OpenRouter"), ("ANTHROPIC_API_KEY", "Anthropic"), - ("HERMES_OPENAI_API_KEY", "OpenAI (STT/TTS)"), + ("VOICE_TOOLS_OPENAI_KEY", "OpenAI (STT/TTS)"), ("FIRECRAWL_API_KEY", "Firecrawl"), ("BROWSERBASE_API_KEY", "Browserbase"), ("FAL_KEY", "FAL"), @@ -722,7 +722,7 @@ def set_config_value(key: str, value: str): """Set a configuration value.""" # Check if it's an API key (goes to .env) api_keys = [ - 'OPENROUTER_API_KEY', 'ANTHROPIC_API_KEY', 'HERMES_OPENAI_API_KEY', + 'OPENROUTER_API_KEY', 'ANTHROPIC_API_KEY', 'VOICE_TOOLS_OPENAI_KEY', 'FIRECRAWL_API_KEY', 'BROWSERBASE_API_KEY', 'BROWSERBASE_PROJECT_ID', 'FAL_KEY', 'TELEGRAM_BOT_TOKEN', 'DISCORD_BOT_TOKEN', 'TERMINAL_SSH_HOST', 'TERMINAL_SSH_USER', 'TERMINAL_SSH_KEY', diff --git a/hermes_cli/setup.py b/hermes_cli/setup.py index 28a250ab8..1f1b1a55e 100644 --- a/hermes_cli/setup.py +++ b/hermes_cli/setup.py @@ -1240,7 +1240,7 @@ def run_setup_wizard(args): { "label": "🎤 Voice Transcription & TTS (OpenAI Whisper + TTS)", "key": "openai_voice", - "check": ["HERMES_OPENAI_API_KEY"], + "check": ["VOICE_TOOLS_OPENAI_KEY"], }, { "label": "🗣️ Premium Text-to-Speech (ElevenLabs)", @@ -1360,18 +1360,18 @@ def run_setup_wizard(args): print(color(" ─── Voice Transcription & TTS (OpenAI) ───", Colors.CYAN)) print_info(" Used for Whisper speech-to-text and OpenAI TTS voices.") print_info(" Get your API key at: https://platform.openai.com/api-keys") - existing = get_env_value('HERMES_OPENAI_API_KEY') + existing = get_env_value('VOICE_TOOLS_OPENAI_KEY') if existing: print_success(" Already configured ✓") if prompt_yes_no(" Update API key?", False): api_key = prompt(" OpenAI API key", password=True) if api_key: - save_env_value("HERMES_OPENAI_API_KEY", api_key) + save_env_value("VOICE_TOOLS_OPENAI_KEY", api_key) print_success(" Updated") else: api_key = prompt(" OpenAI API key", password=True) if api_key: - save_env_value("HERMES_OPENAI_API_KEY", api_key) + save_env_value("VOICE_TOOLS_OPENAI_KEY", api_key) print_success(" Configured ✓") if "elevenlabs" in selected_keys: diff --git a/tools/transcription_tools.py b/tools/transcription_tools.py index 7ec7abd65..e767eace8 100644 --- a/tools/transcription_tools.py +++ b/tools/transcription_tools.py @@ -50,15 +50,15 @@ def transcribe_audio(file_path: str, model: Optional[str] = None) -> dict: - "transcript" (str): The transcribed text (empty on failure) - "error" (str, optional): Error message if success is False """ - # Use HERMES_OPENAI_API_KEY to avoid interference with the OpenAI SDK's + # Use VOICE_TOOLS_OPENAI_KEY to avoid interference with the OpenAI SDK's # auto-detection of OPENAI_API_KEY (which would break OpenRouter calls). # Falls back to OPENAI_API_KEY for backward compatibility. - api_key = os.getenv("HERMES_OPENAI_API_KEY") or os.getenv("OPENAI_API_KEY") + api_key = os.getenv("VOICE_TOOLS_OPENAI_KEY") or os.getenv("OPENAI_API_KEY") if not api_key: return { "success": False, "transcript": "", - "error": "HERMES_OPENAI_API_KEY not set", + "error": "VOICE_TOOLS_OPENAI_KEY not set", } audio_path = Path(file_path) diff --git a/tools/tts_tool.py b/tools/tts_tool.py index fc88f9439..da2f83a21 100644 --- a/tools/tts_tool.py +++ b/tools/tts_tool.py @@ -210,9 +210,9 @@ def _generate_openai_tts(text: str, output_path: str, tts_config: Dict[str, Any] Returns: Path to the saved audio file. """ - api_key = os.getenv("HERMES_OPENAI_API_KEY") or os.getenv("OPENAI_API_KEY", "") + api_key = os.getenv("VOICE_TOOLS_OPENAI_KEY") or os.getenv("OPENAI_API_KEY", "") if not api_key: - raise ValueError("HERMES_OPENAI_API_KEY not set. Get one at https://platform.openai.com/api-keys") + raise ValueError("VOICE_TOOLS_OPENAI_KEY not set. Get one at https://platform.openai.com/api-keys") oai_config = tts_config.get("openai", {}) model = oai_config.get("model", DEFAULT_OPENAI_MODEL) @@ -392,7 +392,7 @@ def check_tts_requirements() -> bool: return True if _HAS_ELEVENLABS and os.getenv("ELEVENLABS_API_KEY"): return True - if _HAS_OPENAI and (os.getenv("HERMES_OPENAI_API_KEY") or os.getenv("OPENAI_API_KEY")): + if _HAS_OPENAI and (os.getenv("VOICE_TOOLS_OPENAI_KEY") or os.getenv("OPENAI_API_KEY")): return True return False @@ -409,7 +409,7 @@ if __name__ == "__main__": print(f" ElevenLabs: {'✅ installed' if _HAS_ELEVENLABS else '❌ not installed (pip install elevenlabs)'}") print(f" API Key: {'✅ set' if os.getenv('ELEVENLABS_API_KEY') else '❌ not set'}") print(f" OpenAI: {'✅ installed' if _HAS_OPENAI else '❌ not installed'}") - print(f" API Key: {'✅ set' if (os.getenv('HERMES_OPENAI_API_KEY') or os.getenv('OPENAI_API_KEY')) else '❌ not set'}") + print(f" API Key: {'✅ set' if (os.getenv('VOICE_TOOLS_OPENAI_KEY') or os.getenv('OPENAI_API_KEY')) else '❌ not set'}") print(f" ffmpeg: {'✅ found' if _has_ffmpeg() else '❌ not found (needed for Telegram Opus)'}") print(f"\n Output dir: {DEFAULT_OUTPUT_DIR}")