{"repo":"NousResearch/hermes-agent","public_id":"119985","display_label":"Per-profile credential scoping for multiplexed backends","summary":"These items address a bug where video generation backends (OpenRouter, DeepInfra) and related SDK clients read credentials from global environment variables instead of resolving them per profile. The fix scopes credential lookup, SDK client caches, and memory readers to the active profile under multiplexed configurations.","subsystem":"agent","counts":{"members":3,"open_issues":1,"open_issues_distinct":1,"open_prs":0,"closed_issues":0,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":120092,"merged_at":"2026-09-23T14:49:37+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-09-23T14:49:37+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":39173,"pr_number":120092,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-23T14:49:37+00:00"},{"issue_number":119985,"pr_number":120092,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-23T14:49:37+00:00"},{"issue_number":119989,"pr_number":120092,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-23T14:49:37+00:00"},{"issue_number":120025,"pr_number":120092,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-23T14:49:37+00:00"},{"issue_number":120032,"pr_number":120092,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-23T14:49:37+00:00"}],"members":[{"kind":"issue","number":119985,"title":"[Bug]: OpenRouter video backend reads its key from os.environ: pooled/OAuth credentials don't enable it, and a multiplexed profile bills the launch profile's key","url":null,"state":"open"},{"kind":"pr","number":119986,"title":"fix(video_gen): resolve OpenRouter and DeepInfra credentials per profile, not from os.environ","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"6b6c7f4a99","number":0},{"kind":"pr","value":"#120092","number":120092}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":120092,"title":"fix(profiles): per-profile SDK client caches and scoped dashboard/cron memory readers under multiplex","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/video_gen_provider.py","agent/web_search_provider.py","contributors/emails/[redacted:email]","hermes_cli/memory_oauth.py","hermes_cli/memory_provider_migration.py","hermes_cli/web_routers/cron.py","hermes_cli/web_server_dashboard.py","plugins/image_gen/meta-ai/__init__.py","plugins/image_gen/openai/__init__.py","plugins/video_gen/openrouter/__init__.py","plugins/web/_common.py","tests/hermes_cli/test_cron_delivery_targets_scope.py","tests/hermes_cli/test_dashboard_admin_endpoints.py","tests/hermes_cli/test_memory_provider_migration.py","tests/hermes_cli/test_web_memory_user_dir_provider.py","tests/plugins/image_gen/test_meta_ai_provider.py","tests/plugins/video_gen/test_deepinfra_provider.py","tests/plugins/video_gen/test_openrouter.py","tests/tools/test_web_tools_config.py","website/docs/reference/tools-reference.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}