Skip to content

feat: implement ARMS telemetry for Hermes v2 plugin#1631

Merged
hijzy merged 2 commits into
MemTensor:mem-agent-0424from
syzsunshine219:test/hermes-plugin-0428
May 7, 2026
Merged

feat: implement ARMS telemetry for Hermes v2 plugin#1631
hijzy merged 2 commits into
MemTensor:mem-agent-0424from
syzsunshine219:test/hermes-plugin-0428

Conversation

@syzsunshine219
Copy link
Copy Markdown
Collaborator

Summary

  • Implement anonymous ARMS RUM telemetry for Hermes v2 local plugin with new event group memos_local_hermes_v2, cleanly separated from v1 (memos_local_hermes) in dashboards
  • Track core events: plugin_started, daily_active, memory_search, memory_ingested, feedback_submitted, viewer_opened, plugin_error
  • Privacy-first: anonymous UUID, no user content, opt-out via telemetry.enabled: false in config.yaml
  • CI: auto-generate telemetry.credentials.json from secrets during publish workflow

Changes

  • New: core/telemetry/sender.ts + index.ts — batched ARMS sender (flush at 10 events or 30s)
  • New: scripts/generate-telemetry-credentials.cjs — CI credential injection
  • Modified: bridge.cts — instantiate Telemetry after core.init(), bind to memory-core
  • Modified: core/pipeline/memory-core.ts — track calls in onTurnStart/End, searchMemory, submitFeedback, shutdown
  • Modified: server/routes/overview.ts — viewer_opened on first /api/v1/overview request
  • Modified: .github/workflows/hermes-plugin-publish.yml — credentials generation step
  • Also includes previously applied v2 regression bug fixes

Test plan

  • Unit tests: 8 tests covering opt-out, batch flush, payload shape, content redaction (all pass)
  • TypeScript full type-check: zero errors
  • Existing tests unaffected: memory-core (23), http (58), bridge (15) all pass
  • Local E2E: verified ARMS returns 200, events sent with correct group memos_local_hermes_v2

Made with Cursor

jiachengzhen and others added 2 commits May 7, 2026 16:00
Add anonymous usage telemetry via Aliyun ARMS RUM with event group
`memos_local_hermes_v2` to differentiate from v1 in dashboards.

- New `core/telemetry/sender.ts`: batched event sender (flush at 10
  events or 30s interval), privacy-first (no user content, anonymous
  UUID, opt-out via config)
- Track: plugin_started, daily_active, memory_search, memory_ingested,
  feedback_submitted, viewer_opened, plugin_error
- Inject telemetry in memory-core facade (onTurnStart/End, searchMemory,
  submitFeedback) and overview route (viewer_opened)
- CI: generate credentials from secrets before npm publish
- Unit tests: opt-out, batch flush, payload shape, content redaction

Also includes previously applied bug fixes for v2 regression stability.

Co-authored-by: Cursor <cursoragent@cursor.com>
Keep upstream's multi-line function signature formatting in memory.ts.

Co-authored-by: Cursor <cursoragent@cursor.com>
@hijzy hijzy merged commit b86d573 into MemTensor:mem-agent-0424 May 7, 2026
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