Skip to content

[OPIK-7234] [FE] feat: add Hermes to onboarding integrations and docs#7345

Draft
JetoPistola wants to merge 1 commit into
mainfrom
danield/OPIK-7234-hermes-onboarding-integrations-and-docs
Draft

[OPIK-7234] [FE] feat: add Hermes to onboarding integrations and docs#7345
JetoPistola wants to merge 1 commit into
mainfrom
danield/OPIK-7234-hermes-onboarding-integrations-and-docs

Conversation

@JetoPistola

Copy link
Copy Markdown
Contributor

Details

Surfaces the Hermes integration (comet-ml/opik-hermes, delivered by OPIK-7015) to users the same way OpenClaw is (mirrors OPIK-6231): it now appears in the onboarding integrations grid in the UI and in the docs integrations section.

  • Onboarding grid: new hermes entry in integrations.ts under "Frameworks & tools", placed next to OpenClaw. It mirrors the OpenClaw multi-step install but uses Hermes' real flow — pip install opik-hermes, hermes plugins enable observability/opik, and ~/.hermes/.env config — plus a NousResearch logo asset (hermes.svg).
  • Docs: new hermes.mdx pages for both v1 and v2, overview cards in both integration overviews, nav entries in latest.yml / v1.yml, and a redirect in docs.yml. Content is aligned with the current opik-hermes install/config docs and verified against the Opik Python SDK config defaults (URL defaults to Cloud; the API key is enough on Cloud/auth since the SDK derives the base URL from the key; OPIK_URL_OVERRIDE is only needed for local/no-auth targets; OSS only supports the default workspace).

Change checklist

  • User facing
  • Documentation update

Issues

  • OPIK-7234

AI-WATERMARK

AI-WATERMARK: yes

  • Tools: Claude Code
  • Model(s): Claude Opus 4.8 (1M context)
  • Scope: full implementation
  • Human verification: code review + local lint/typecheck + reviewer verification against opik-hermes docs and Opik Python SDK source

Testing

  • cd apps/opik-frontend && npm run typecheck — passed
  • cd apps/opik-frontend && npx eslint src/constants/integrations.ts --max-warnings=0 — passed (exit 0)
  • YAML validity of docs.yml, versions/latest.yml, versions/v1.yml — parsed OK
  • Verified the config guidance in the new docs against the Opik Python SDK (sdks/python/src/opik/config.py): Cloud URL default, key-derived base URL, and OSS default-only workspace behavior

Note: the local pre-commit frontend eslint hook fails in this environment with Invalid option '--warn-ignored' (a v9 flag against ESLint v8.57.0). This is a hook/tooling mismatch, not a code issue — eslint run directly on the changed file passes. Committed with --no-verify so CI's eslint gate is the source of truth.

Documentation

  • New: apps/opik-documentation/.../docs-v2/integrations/hermes.mdx
  • New: apps/opik-documentation/.../docs/tracing/integrations/hermes.mdx
  • Updated: both integration overview.mdx files (Hermes card), versions/latest.yml, versions/v1.yml, and docs.yml (redirect)

@github-actions github-actions Bot added documentation Improvements or additions to documentation Frontend typescript *.ts *.tsx labels Jul 5, 2026
@JetoPistola JetoPistola added the test-environment Deploy Opik adhoc environment label Jul 5, 2026
@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

🔄 Test environment deployment process has started

Phase 1: Deploying base version 2.1.16-5907 (from main branch) if environment doesn't exist
Phase 2: Building new images from PR branch danield/OPIK-7234-hermes-onboarding-integrations-and-docs
Phase 3: Will deploy newly built version after build completes

You can monitor the progress here.

@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

⏱️ pre-commit per-hook timing

Hook Description Result Duration
🌐 typecheck — frontend Whole-project tsc type check 23.67s
🌐 eslint — frontend Lint + autofix JS/TS 2.40s
Total (2 ran) 26.07s
⏭️ 39 skipped (no matching files changed)
Hook Description Result
🐍 trim trailing whitespace — python sdk Strip trailing whitespace ⏭️
🐍 fix end of files — python sdk Ensure files end in a newline ⏭️
🐍 ruff — python sdk Lint + autofix Python (ruff) ⏭️
🐍 ruff-format — python sdk Format Python code (ruff) ⏭️
🐍 mypy — python sdk Static type check ⏭️
🤖 trim trailing whitespace — optimizer Strip trailing whitespace ⏭️
🤖 fix end of files — optimizer Ensure files end in a newline ⏭️
🤖 check yaml — optimizer Validate YAML syntax ⏭️
🤖 check json — optimizer Validate JSON syntax ⏭️
🤖 check toml — optimizer Validate TOML syntax ⏭️
🤖 check for added large files — optimizer Block large files (>1MB) ⏭️
🔐 detect private key — optimizer Block committed private keys ⏭️
🤖 check for merge conflicts — optimizer Block merge-conflict markers ⏭️
🤖 check for case conflicts — optimizer Block case-only name clashes ⏭️
🤖 pyupgrade — optimizer Modernize Python syntax ⏭️
🤖 ruff — optimizer Lint + autofix Python (ruff) ⏭️
🤖 ruff-format — optimizer Format Python code (ruff) ⏭️
🤖 mypy — optimizer Static type check ⏭️
📓 nbstripout — optimizer notebooks Strip notebook output ⏭️
📝 markdownlint — optimizer Lint Markdown ⏭️
🔤 codespell — optimizer Fix common misspellings ⏭️
📊 radon cc — optimizer Cyclomatic-complexity gate ⏭️
📊 radon raw — optimizer Raw size metrics gate ⏭️
📊 xenon — optimizer Fail on complexity thresholds ⏭️
📊 lizard — optimizer Cyclomatic-complexity gate ⏭️
🧹 vulture — optimizer Find dead code ⏭️
🛡️ trim trailing whitespace — guardrails Strip trailing whitespace ⏭️
🛡️ fix end of files — guardrails Ensure files end in a newline ⏭️
🛡️ ruff — guardrails Lint + autofix Python (ruff) ⏭️
🛡️ ruff-format — guardrails Format Python code (ruff) ⏭️
🛡️ mypy — guardrails Static type check ⏭️
⚓ helm-docs Regenerate Helm chart README ⏭️
block non-public FE plugins Block non-public FE plugins ⏭️
☕ spotless — java backend Format Java code ⏭️
🧪 pre-commit wrapper smoke tests Self-test the wrapper scripts ⏭️
📘 eslint — typescript sdk Lint + autofix JS/TS ⏭️
📘 typecheck — typescript sdk Whole-project tsc type check ⏭️
⚙️ actionlint — github workflows Lint GitHub Actions workflows ⏭️
🐳 hadolint — dockerfiles Lint Dockerfiles ⏭️

@CometActions

Copy link
Copy Markdown
Collaborator

Test environment is now available!

To configure additional Environment variables for your environment, run [Deploy Opik AdHoc Environment workflow] (https://github.com/comet-ml/comet-deployment/actions/workflows/deploy_opik_adhoc_env.yaml)

Access Information

The deployment has completed successfully and the version has been verified.

@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

🌿 Preview your docs: https://opik-preview-019f5acf-b037-75b7-951f-8b018003c403.docs.buildwithfern.com/docs/opik

The following broken links were found:

❌ Broken link: https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai (404)
↳ on page: /docs/opik/reference/typescript-sdk/evaluation/models
❌ Broken link: https://anannas.ai/ (522)
↳ on page: /docs/opik/integrations/anannas
❌ Broken link: https://app.buildwithfern.com/_next/static/chunks/0vbg7sm7nx277.js?dpl=dpl_Hd3y3z2tjwADorfFSAMx62prm22x (404)
↳ on page: /docs/opik
❌ Broken link: https://sdk.vercel.ai/providers/ai-sdk-providers/google-generative-ai (404)
↳ on page: /docs/opik/reference/typescript-sdk/evaluation/metrics
❌ Broken link: https://www.comet.com/docs/opik/changelog/2026-06-02 (404)
↳ on page: /docs/opik/changelog/2026/6/2
❌ Broken link: https://www.comet.com/docs/opik/changelog/2026-06-09 (404)
↳ on page: /docs/opik/changelog/2026/6/9
❌ Broken link: https://www.comet.com/docs/opik/changelog/2026-06-16 (404)
↳ on page: /docs/opik/changelog/2026/6/16
❌ Broken link: https://www.comet.com/docs/opik/changelog/2026-06-23 (404)
↳ on page: /docs/opik/changelog/2026/6/23
❌ Broken link: https://www.comet.com/docs/opik/changelog/2026-07-06 (404)
↳ on page: /docs/opik/changelog/2026/7/6
❌ Broken link: https://www.comet.com/docs/opik/integrations/hermes (404)
↳ on page: /docs/opik/integrations/hermes
❌ Broken link: https://www.comet.com/docs/opik/prompt_engineering/mcp-server (404)
↳ on page: /docs/opik/changelog/2026/6/16
❌ Broken link: https://www.comet.com/docs/opik/tracing/export_data (404)
↳ on page: /docs/opik/changelog/2026/6/23
❌ Broken link: https://console.groq.com/keys (timeout)
↳ on page: /docs/opik/integrations/groq
❌ Broken link: https://console.mistral.ai/api-keys/ (timeout)
↳ on page: /docs/opik/integrations/mistral


📌 Results for commit af401c6

Comment on lines +213 to +216
title: "3. Point Hermes at your Opik",
description:
'Add your Opik connection to ~/.hermes/.env (or run "opik configure"). On Opik Cloud the API key is enough; for local or self-hosted Opik set OPIK_URL_OVERRIDE and omit the key. Traces stream into your "PROJECT_NAME_PLACEHOLDER" project.',
code: "OPIK_API_KEY=<your-api-key>\nOPIK_WORKSPACE=<your-workspace>\nOPIK_PROJECT_NAME=PROJECT_NAME_PLACEHOLDER\n# Local / self-hosted only:\n# OPIK_URL_OVERRIDE=http://localhost:5173/api",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hermes config stays unpersonalized

AdditionalIntegrationSteps feeds the Hermes snippet through putConfigInCode, but that helper only substitutes OPIK_API_KEY/OPIK_WORKSPACE when the snippet has # INJECT_OPIK_CONFIGURATION, so the onboarding UI renders the literal <your-api-key> / <your-workspace> text instead of the user's values — should we switch this block to the injection template?

Severity

Want Baz to fix this for you? Activate Fixer

Other fix methods

Fix in Cursor

Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
apps/opik-frontend/src/constants/integrations.ts around lines 213-216 inside the Hermes
integration object’s `additionalSteps` (step with title “3. Point Hermes at your
Opik”), the `code` string uses raw placeholders like `<your-api-key>` and
`<your-workspace>`, so `putConfigInCode` won’t inject the user values because it only
does so when the snippet contains `# INJECT_OPIK_CONFIGURATION`. Refactor this Hermes
step’s `code` to use the same injection template/marker pattern used by other
integrations (include the `# INJECT_OPIK_CONFIGURATION` comment in the right place and
keep the OPIK_URL_OVERRIDE notes intact). Verify the onboarding UI now renders the
injected OPik API key/workspace values instead of the literal placeholder text.

@JetoPistola JetoPistola force-pushed the danield/OPIK-7234-hermes-onboarding-integrations-and-docs branch from d5e7c9c to 795ed37 Compare July 5, 2026 14:42
@JetoPistola JetoPistola changed the base branch from main to danield/OPIK-7237-fix-fe-eslint-no-warn-ignored-v8 July 5, 2026 14:42
@CometActions

Copy link
Copy Markdown
Collaborator

🌙 Nightly cleanup: The test environment for this PR (pr-7345) has been cleaned up to free cluster resources. PVCs are preserved — re-deploy to restore the environment.

@CometActions CometActions removed the test-environment Deploy Opik adhoc environment label Jul 6, 2026
@JetoPistola JetoPistola added the test-environment Deploy Opik adhoc environment label Jul 6, 2026
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

🔄 Test environment deployment process has started

Phase 1: Deploying base version 2.1.16-5907 (from main branch) if environment doesn't exist
Phase 2: Building new images from PR branch danield/OPIK-7234-hermes-onboarding-integrations-and-docs
Phase 3: Will deploy newly built version after build completes

You can monitor the progress here.

@CometActions

Copy link
Copy Markdown
Collaborator

Test environment is now available!

To configure additional Environment variables for your environment, run [Deploy Opik AdHoc Environment workflow] (https://github.com/comet-ml/comet-deployment/actions/workflows/deploy_opik_adhoc_env.yaml)

Access Information

The deployment has completed successfully and the version has been verified.

Base automatically changed from danield/OPIK-7237-fix-fe-eslint-no-warn-ignored-v8 to main July 6, 2026 08:14
@CometActions

Copy link
Copy Markdown
Collaborator

🌙 Nightly cleanup: The test environment for this PR (pr-7345) has been cleaned up to free cluster resources. PVCs are preserved — re-deploy to restore the environment.

@CometActions CometActions removed the test-environment Deploy Opik adhoc environment label Jul 7, 2026
@JetoPistola JetoPistola force-pushed the danield/OPIK-7234-hermes-onboarding-integrations-and-docs branch from 795ed37 to 4149f3d Compare July 13, 2026 09:26
@JetoPistola JetoPistola added the test-environment Deploy Opik adhoc environment label Jul 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🔄 Test environment deployment process has started

Phase 1: Deploying base version 2.1.16-5907 (from main branch) if environment doesn't exist
Phase 2: Building new images from PR branch danield/OPIK-7234-hermes-onboarding-integrations-and-docs
Phase 3: Will deploy newly built version after build completes

You can monitor the progress here.

Surface the Hermes integration (comet-ml/opik-hermes) to users the same way OpenClaw is: add it to the onboarding integrations grid and to the docs integrations section, linking to the opik-hermes repository.

Implements OPIK-7234: add Hermes to onboarding integrations list and docs

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@JetoPistola JetoPistola force-pushed the danield/OPIK-7234-hermes-onboarding-integrations-and-docs branch from 4149f3d to 1d40874 Compare July 13, 2026 09:28
Comment on lines +45 to +52
Set these in `~/.hermes/.env` (or via `hermes tools`). The Opik Python SDK reads the `OPIK_*` env vars directly — no interactive step is required. On Opik Cloud the SDK already defaults to the Cloud URL, so the API key is enough; for local or self-hosted Opik, set `OPIK_URL_OVERRIDE` to route traces there.

**Opik Cloud:**

```bash
# ~/.hermes/.env
OPIK_URL_OVERRIDE=https://www.comet.com/opik/api
OPIK_API_KEY=your-api-key-here

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Unneeded Cloud URL override

OPIK_URL_OVERRIDE is still set in the Cloud example even though OPIK_URL_CLOUD is the SDK default, so the docs tell Cloud users to configure an env var they don't need — should we drop it from the Cloud block and leave it for local/self-hosted?

Severity

Want Baz to fix this for you? Activate Fixer

Other fix methods

Fix in Cursor

Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
apps/opik-documentation/documentation/fern/docs/tracing/integrations/hermes.mdx around
lines 45-52, in the “Opik Cloud” setup snippet, the docs say the SDK defaults to
Cloud and “the API key is enough,” but the example still sets
OPIK_URL_OVERRIDE=https://www.comet.com/opik/api. Update this section by removing
OPIK_URL_OVERRIDE from the Cloud block so Cloud users follow the stated guidance, and
keep OPIK_URL_OVERRIDE only in the Self-hosted / local block. Ensure the surrounding
text remains consistent with the new snippet.

@JetoPistola JetoPistola added test-environment Deploy Opik adhoc environment and removed test-environment Deploy Opik adhoc environment labels Jul 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🔄 Test environment deployment process has started

Phase 1: Deploying base version 2.1.24-6001 (from main branch) if environment doesn't exist
Phase 2: Building new images from PR branch danield/OPIK-7234-hermes-onboarding-integrations-and-docs
Phase 3: Will deploy newly built version after build completes

You can monitor the progress here.

@CometActions

Copy link
Copy Markdown
Collaborator

Test environment deployment failed

The deployment encountered an error. Please check the deployment logs for details.

@CometActions

Copy link
Copy Markdown
Collaborator

Test environment deployment failed

The deployment encountered an error. Please check the deployment logs for details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

baz: pending documentation Improvements or additions to documentation Frontend 🟡 size/M test-environment Deploy Opik adhoc environment typescript *.ts *.tsx

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants