hermes - ✅(Solved) Fix [Feature]: Similar tracks/albums [1 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#18687Fetched 2026-05-03 04:54:56
View on GitHub
Comments
0
Participants
1
Timeline
4
Reactions
0
Author
Participants
Timeline (top)
labeled ×3cross-referenced ×1

Fix Action

Fixed

PR fix notes

PR #18689: feat(gateway): lastfm plugin for music discovery

Description (problem / solution / changelog)

What does this PR do?

Added last.fm plugin for music discovery and metadata

Related Issue

(https://github.com/NousResearch/hermes-agent/issues/18687)

Type of Change

  • ✨ New feature (non-breaking change that adds functionality)

Changes Made

  • plugins/lastfm/__init__.py — registers 5 tools into the lastfm toolset
  • plugins/lastfm/client.py — stdlib-only Last.fm API client (urllib, no new dependencies)
  • plugins/lastfm/tools.py — handlers and JSON schemas for all 5 tools
  • plugins/lastfm/plugin.yaml — plugin manifest
  • plugins/lastfm/README.md — setup, usage examples, API coverage table, ToS notes
  • hermes_cli/config.py — adds LASTFM_API_KEY to OPTIONAL_ENV_VARS so hermes env prompts for it
  • tests/plugins/test_lastfm_plugin.py — 54 unit tests, no real HTTP calls

Tools added:

ToolActions
lastfm_discoverMulti-seed similarity discovery with avg/max/boost scoring
lastfm_artistinfo, similar, top_tracks, top_albums, top_tags, search
lastfm_trackinfo, similar, search
lastfm_tagtop_artists, top_tracks, top_albums, similar, info
lastfm_chartstop_artists/top_tracks globally or by country

How to Test

  1. Run hermes env, enter a free Last.fm API key (https://www.last.fm/api/account/create)
  2. hermes tools | grep lastfm — should list all 5 tools
  3. hermes -p 'Find 10 artists similar to Boards of Canada and Aphex Twin using lastfm_discover'
  4. hermes -p 'What are the top tracks in the ambient tag on Last.fm?'
  5. Unit tests: python3 -m unittest tests.plugins.test_lastfm_plugin -v

Checklist

Code

  • I've read the Contributing Guide
  • My commit messages follow Conventional Commits (feat(plugins):)
  • I searched for existing PRs to make sure this isn't a duplicate
  • My PR contains only changes related to this feature
  • I've run pytest tests/ -q and all tests pass
  • I've added tests for my changes (54 tests)
  • I've tested on my platform: macOS 15

Documentation & Housekeeping

  • I've updated relevant documentation (plugins/lastfm/README.md)
  • I've updated cli-config.yaml.example if I added/changed config keys — N/A (key goes in .env, not config)
  • I've updated CONTRIBUTING.md or AGENTS.md — N/A
  • I've considered cross-platform impact — stdlib only, no platform-specific code
  • I've updated tool descriptions/schemas — schemas are in tools.py, documented in README

Notes

  • Zero new runtime dependencies — client.py uses urllib and json only
  • Auth follows the same pattern as other tool API keys: hermes env → saved to ~/.hermes/.env → loaded into os.environ at startup
  • All responses include _source: "Powered by Last.fm" to satisfy Last.fm API ToS attribution requirement. Free API key is for non-commercial use; commercial deployments should contact [email protected]

Changed files

  • cli-config.yaml.example (modified, +42/-0)
  • hermes_cli/config.py (modified, +40/-1)
  • model_tools.py (modified, +20/-0)
  • plugins/lastfm/README.md (added, +137/-0)
  • plugins/lastfm/__init__.py (added, +54/-0)
  • plugins/lastfm/client.py (added, +164/-0)
  • plugins/lastfm/plugin.yaml (added, +16/-0)
  • plugins/lastfm/tools.py (added, +795/-0)
  • tests/plugins/test_lastfm_plugin.py (added, +671/-0)
  • tests/tools/test_agent_profiles.py (added, +528/-0)
  • tools/delegate_tool.py (modified, +347/-11)
RAW_BUFFERClick to expand / collapse

Problem or Use Case

There is no simple plugin to answer "just get tracks similar to this"

Proposed Solution

Add Last.fm music discovery and metadata for Hermes — 5 tools covering similarity-based discovery, artist/track/tag metadata, and trending charts.

Alternatives Considered

No response

Feature Type

New tool

Scope

None

Contribution

  • I'd like to implement this myself and submit a PR

Debug Report (optional)

extent analysis

TL;DR

Implement a music discovery feature using Last.fm API to find similar tracks.

Guidance

  • Research the Last.fm API to understand its capabilities and limitations for similarity-based discovery.
  • Evaluate the 5 tools mentioned for their suitability in providing artist/track/tag metadata and trending charts.
  • Consider the scope and potential impact of adding this feature to the existing system.
  • Investigate the requirements for implementing and submitting a PR for this feature.

Example

No code example is provided due to lack of technical details.

Notes

The implementation details and technical requirements are unclear, so further research and planning are necessary before proceeding.

Recommendation

Apply workaround: Utilize the Last.fm API as a starting point for music discovery, as it seems to be the proposed solution.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - ✅(Solved) Fix [Feature]: Similar tracks/albums [1 pull requests, 1 participants]