Skip to content

fix: re-order providers, Quick Install#4664

Merged
austinpickett merged 1 commit intomainfrom
fix/various-qa
Apr 6, 2026
Merged

fix: re-order providers, Quick Install#4664
austinpickett merged 1 commit intomainfrom
fix/various-qa

Conversation

@austinpickett
Copy link
Copy Markdown
Collaborator

@austinpickett austinpickett commented Apr 2, 2026

What does this PR do?

Overhauls the hermes setup wizard to reduce friction for new users. The setup now offers a "Quick setup" path that gets users from zero to chatting in three steps (provider → model → messaging), applies sensible defaults for everything else, and launches directly into hermes chat on completion. Also improves the Nous Portal subscription flow, redesigns the provider selector, and masks API key inputs.

Related Issue

Fixes #

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 🔒 Security fix
  • 📝 Documentation update
  • ✅ Tests (adding or improving test coverage)
  • ♻️ Refactor (no behavior change)
  • 🎯 New skill (bundled or hub)

Changes Made

Setup Wizard — Quick/Full split

  • Added "Quick setup" vs "Full setup" choice for first-time users (hermes_cli/setup.py)
  • Quick setup covers: provider + model selection → messaging gateway (optional) → apply defaults → launch chat
  • Full setup runs all sections as before (provider, terminal, agent settings, gateway, tools)
  • Added _run_first_time_quick_setup() orchestrator and _apply_default_agent_settings() helper
  • Removed redundant "Use recommended defaults / Customize" prompt inside setup_agent_settings (unnecessary now that full setup users have already opted in)

Launch chat after setup

  • Added _offer_launch_chat() — prompts "Launch hermes chat now? [Y/n]" at the end of both quick and full setup paths (hermes_cli/setup.py)
  • Launches cmd_chat inline with a clean args namespace so users don't have to re-type hermes chat

Messaging gateway in quick setup

  • Added optional messaging gateway step to quick setup with "Set up messaging now (recommended)" / "Skip — set up later" choice (hermes_cli/setup.py)

Nous Portal subscription polling

  • Modified _nous_device_code_login() to catch subscription_required errors and return partial auth state instead of raising (hermes_cli/auth.py)
  • Added _wait_for_subscription() — polls for subscription activation with a real-time 1-second countdown timer, checks the API every 10 seconds, 5-minute timeout (hermes_cli/auth.py)
  • Updated _login_nous() to call the subscription poller when the flag is set

Provider selector redesign

  • Split providers into top_providers (6 items) and extended_providers behind a "More providers..." option (hermes_cli/main.py)
  • Nous Portal is now the Terminal tool #1 default provider for fresh installs
  • Changed fallback active from "openrouter" to None so fresh installs don't falsely show a "currently active" provider
  • Replaced simple_term_menu usage with _curses_prompt_choice for consistent UI
  • Active providers from the extended list are automatically promoted to the top-level menu

API key masking

  • Replaced input() with getpass.getpass() for all API key/token prompts across OpenRouter, Anthropic, custom endpoint, Copilot, and generic API key provider flows (hermes_cli/main.py)

Messaging gateway UX

  • Replaced sequential Y/N prompts with a prompt_checklist multi-select for messaging platforms (hermes_cli/setup.py)
  • Already-configured platforms are pre-selected and labeled "(configured)"

How to Test


QA Testing: Setup Wizard Improvements

Prerequisites

  • Python 3.11+
  • uv package manager (pip install uv or curl -LsSf https://astral.sh/uv/install.sh | sh)
  • A Nous Portal account (for subscription flow testing)
  • An OpenRouter API key (for API key masking testing)

1. Back up existing Hermes config (if you have one)

cp -r ~/.hermes ~/.hermes-backup

Skip this if you've never used Hermes before.

2. Clone the branch

git clone -b fix/various-qa https://github.com/NousResearch/hermes-agent.git
cd hermes-agent

Or if you already have the repo:

cd hermes-agent
git fetch origin
git checkout fix/various-qa
git pull

3. Install dependencies

uv venv
source .venv/bin/activate
uv pip install -e .

source .venv/bin/activate activates the Python virtual environment so that hermes commands use this local checkout instead of any globally installed version.

4. Verify installation

hermes doctor

5. Test the setup wizard

For a fresh install experience, remove existing config first:

rm -f ~/.hermes/config.yaml ~/.hermes/.env

Then run:

hermes setup

What to verify

# Area What to check
1 Quick/Full choice First screen asks "Quick setup" (default) vs "Full setup"
2 Provider selector Nous Portal is first in the list and selected by default (no "currently active" on fresh install)
3 Top 6 + More Only 6 providers shown initially; "More providers..." expands the rest
4 API key masking Choosing OpenRouter (or any API key provider) — key input is hidden as you type
5 Nous Portal sub flow Choose Nous Portal without a subscription — countdown timer ticks every second, checks every ~10s, times out after 5 min
6 Messaging gateway After provider/model, prompted "Set up messaging now (recommended)" or "Skip"
7 Launch chat After setup completes, prompted "Launch hermes chat now? [Y/n]" — pressing Enter drops into chat
8 Full setup path Go back, re-run hermes setup, choose "Full setup" — all sections appear (provider, terminal, agent settings, gateway, tools)

6. Restore your config (if you backed up)

rm -rf ~/.hermes
mv ~/.hermes-backup ~/.hermes

Platform

Please note which platform you tested on:

  • Linux (distro + version)
  • macOS (version)
  • Windows/WSL (version)

Checklist

Code

  • I've read the Contributing Guide
  • My commit messages follow Conventional Commits (fix(scope):, feat(scope):, etc.)
  • I searched for existing PRs to make sure this isn't a duplicate
  • My PR contains only changes related to this fix/feature (no unrelated commits)
  • I've run pytest tests/ -q and all tests pass
  • I've added tests for my changes (required for bug fixes, strongly encouraged for features)
  • I've tested on my platform:

Documentation & Housekeeping

  • I've updated relevant documentation (README, docs/, docstrings) — or N/A
  • I've updated cli-config.yaml.example if I added/changed config keys — or N/A
  • I've updated CONTRIBUTING.md or AGENTS.md if I changed architecture or workflows — or N/A
  • I've considered cross-platform impact (Windows, macOS) per the compatibility guide — or N/A
  • I've updated tool descriptions/schemas if I changed tool behavior — or N/A

Screenshots / Logs

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 2, 2026

⚠️ Supply Chain Risk Detected

This PR contains patterns commonly associated with supply chain attacks. This does not mean the PR is malicious — but these patterns require careful human review before merging.

⚠️ WARNING: Install hook files modified

These files can execute code during package installation or interpreter startup.

Files:

hermes_cli/setup.py

Automated scan triggered by supply-chain-audit. If this is a false positive, a maintainer can approve after manual review.

1 similar comment
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 4, 2026

⚠️ Supply Chain Risk Detected

This PR contains patterns commonly associated with supply chain attacks. This does not mean the PR is malicious — but these patterns require careful human review before merging.

⚠️ WARNING: Install hook files modified

These files can execute code during package installation or interpreter startup.

Files:

hermes_cli/setup.py

Automated scan triggered by supply-chain-audit. If this is a false positive, a maintainer can approve after manual review.

@austinpickett austinpickett requested a review from teknium1 April 6, 2026 03:34
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 6, 2026

⚠️ Supply Chain Risk Detected

This PR contains patterns commonly associated with supply chain attacks. This does not mean the PR is malicious — but these patterns require careful human review before merging.

⚠️ WARNING: Install hook files modified

These files can execute code during package installation or interpreter startup.

Files:

hermes_cli/setup.py

Automated scan triggered by supply-chain-audit. If this is a false positive, a maintainer can approve after manual review.

@austinpickett austinpickett changed the title fix: re-order providers,Quick Install, subscription polling fix: re-order providers, Quick Install Apr 6, 2026
@austinpickett austinpickett merged commit eceb89b into main Apr 6, 2026
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant