Skip to content

feat(hermes): add provider onboarding foundation#5

Draft
shannonsands wants to merge 8 commits into
mainfrom
ns322/hermes-provider-foundation
Draft

feat(hermes): add provider onboarding foundation#5
shannonsands wants to merge 8 commits into
mainfrom
ns322/hermes-provider-foundation

Conversation

@shannonsands
Copy link
Copy Markdown

@shannonsands shannonsands commented May 7, 2026

Summary

Adds the cleaned Hermes Provider onboarding foundation directly against main. This slice keeps managed-tool broker and Discord bridge work out of scope, supports host-managed Nous OAuth/API-key inference setup, and preserves bare nemoclaw onboard as the OpenClaw default while nemohermes onboard / nemoclaw onboard --agent hermes selects Hermes.

Related Issue

Linear: NS-322, NS-324.

Changes

  • Adds Hermes Provider auth choice for Nous Portal OAuth versus Nous API Key, with API key scoped to inference only.
  • Registers hermes-provider through OpenShell as OpenAI-compatible host-managed inference against https://inference-api.nousresearch.com/v1, while sandbox config uses https://inference.local/v1.
  • Fixes Hermes Provider rebuild preflight so OAuth/API-key rebuilds use host-side Hermes auth state instead of requiring unrelated OPENAI_API_KEY / already-stored NOUS_API_KEY env vars.
  • Loads the Hermes Provider model picker from the Nous Portal recommended-models endpoint when available, while keeping the static Hermes catalog as the offline/full-list fallback.
  • Expands Hermes Provider model prompting with a top-10 menu and full-list/custom fallback.
  • Collects and emits Slack allowed human member IDs for the Hermes Slack config path.
  • Keeps policy preset changes and Discord bridge/proxy work out of this PR; Discord remains blocked on upstream OpenShell/NemoClaw websocket handling.

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

Verification

  • npx prek run --all-files passes
  • npm test passes
  • Tests added or updated for new or changed behavior
  • No secrets, API keys, or credentials committed
  • Docs updated for user-facing behavior changes
  • make docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Focused checks run locally:

  • npm run build:cli passes
  • npm run typecheck:cli passes
  • git diff --check passes
  • npx vitest run src/lib/inference/config.test.ts src/lib/inference/model-prompts.test.ts src/lib/inference/nous-models.test.ts test/hermes-provider-foundation.test.ts test/rebuild-credential-preflight.test.ts passes (48 tests)
  • node -e smoke via dist/lib/inference/nous-models returns the live Nous Portal top-10 recommendation order

Earlier focused PR set before the dynamic-model update:

  • npx vitest run test/rebuild-credential-preflight.test.ts src/lib/sandbox-channels.test.ts src/lib/messaging-channel-config.test.ts test/generate-hermes-config.test.ts test/hermes-provider-foundation.test.ts test/hermes-plugin-handlers.test.ts test/sandbox-init.test.ts test/recover-port-forward.test.ts src/lib/inference/config.test.ts src/lib/inference/model-prompts.test.ts src/lib/agent/runtime.test.ts src/lib/state/sandbox-session.test.ts src/lib/hermes-provider-auth.test.ts src/lib/oauth-device-code.test.ts test/process-recovery.test.ts src/lib/cli/oclif-pattern-discovery.test.ts src/lib/cli/oclif-metadata.test.ts src/lib/cli/public-oclif-help.test.ts test/shellquote-sandbox.test.ts test/snapshot-gateway-guard.test.ts test/uninstall.test.ts passed (189 tests)

Broad hook status:

  • Pre-commit/pre-push broad CLI coverage was attempted before and during this update, but it is not clean in this local runtime. It failed or hung on unrelated runtime-sensitive tests, including CLI dispatch seeing OpenShell gateway startup output, prompt/guard process status returning null, and shell helper timeouts. The branch was pushed with hook bypass for this draft PR after the focused checks passed.

Signed-off-by: Shannon Sands shannon.sands.1979@gmail.com

@shannonsands shannonsands self-assigned this May 7, 2026
@shannonsands shannonsands force-pushed the ns322/hermes-small-fixes branch from e55dbd2 to f6cb315 Compare May 7, 2026 23:50
@shannonsands shannonsands force-pushed the ns322/hermes-provider-foundation branch 2 times, most recently from f451bd5 to d8838f0 Compare May 8, 2026 04:55
@shannonsands shannonsands changed the base branch from ns322/hermes-small-fixes to main May 8, 2026 04:55
@shannonsands shannonsands force-pushed the ns322/hermes-provider-foundation branch from d8838f0 to 906fc83 Compare May 8, 2026 05:09
@shannonsands shannonsands marked this pull request as ready for review May 8, 2026 05:09
@shannonsands shannonsands marked this pull request as draft May 8, 2026 05:10
Signed-off-by: Shannon Sands <shannon.sands.1979@gmail.com>
@shannonsands shannonsands force-pushed the ns322/hermes-provider-foundation branch from 906fc83 to 931a798 Compare May 8, 2026 05:11
@shannonsands shannonsands marked this pull request as ready for review May 8, 2026 05:17

export const INFERENCE_ROUTE_URL = "https://inference.local/v1";
export const DEFAULT_CLOUD_MODEL = "nvidia/nemotron-3-super-120b-a12b";
export const HERMES_PROVIDER_MODEL_OPTIONS = [
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we're open to this list being dynamic, it can also be retrieved from https://portal.nousresearch.com/api/nous/recommended-models .

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good idea, can add that

Signed-off-by: Shannon Sands <shannon.sands.1979@gmail.com>
@shannonsands shannonsands marked this pull request as draft May 8, 2026 05:31
@shannonsands shannonsands marked this pull request as ready for review May 8, 2026 05:38
Signed-off-by: Shannon Sands <shannon.sands.1979@gmail.com>
@shannonsands shannonsands marked this pull request as draft May 8, 2026 05:55
Signed-off-by: Shannon Sands <shannon.sands.1979@gmail.com>
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.

2 participants