Observed since 20 Oct, 22:43 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
agentmetrics-hermes
AgentMetrics observability plugin for Hermes agents
AgentMetrics observability plugin for Hermes agents. Auto-discovered via the hermes_agent.plugins entry-point — no code changes needed.
pip install agentmetrics-hermes
Create ~/.config/hermes/agentmetrics.yaml:
api_key: am_your_key
server_url: http://localhost:4000
agent_id: my-hermes-agent
environment: production
Or set environment variables (take precedence over the file):
| Variable | Description |
|---|---|
AGENTMETRICS_API_KEY | API key |
AGENTMETRICS_SERVER_URL | Server URL |
AGENTMETRICS_AGENT_ID | Agent identifier |
AGENTMETRICS_ENVIRONMENT | Deployment environment |
| Metric | Description |
|---|---|
input_tokens / output_tokens | Aggregated LLM token usage |
cache_read_tokens / cache_write_tokens | Prompt cache statistics |
estimated_cost_usd | Computed from model pricing |
duration_ms | Session wall-clock time |
tool_calls / tool_errors | Per-step tool tracking |
llm_calls | Number of model API requests |
secrets_blocked_count | Credentials redacted before transmission |
error | Exception message on failure (secrets scrubbed) |
Events are written to a local WAL before transmission. If the server is unreachable the plugin retries automatically via an internal circuit breaker. Events that exhaust all retries go to a dead-letter queue and are surfaced as audit_dlq_alert events.
All event payloads are scanned for API keys, JWTs, and passwords before transmission. Set redaction_mode: debug in the config to disable scrubbing during local development (expires automatically after a configurable TTL).
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
agentmetrics-sharedEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | agentmetrics-shared>=0.2.0 | runtime |
cryptographyEnvironment{
"extras": "",
"marker": "extra == \"crypto\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | cryptography>=41.0; extra == "crypto" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | pytest>=8.0; extra == "dev" | runtime |
pytest-covEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | pytest-cov>=5.0; extra == "dev" | runtime |
ruffEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | ruff>=0.11.0; extra == "dev" | runtime |
mypyEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | mypy>=1.10; extra == "dev" | runtime |
hypothesisEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | hypothesis>=6.0; extra == "dev" | runtime |
bdist_wheel · 26.28 KB · Python py3
sdist · 30.11 KB · Python source
Observed since 20 Oct, 22:43 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:f7084d2c8e64b96f9b609ca3125e80ecc67898b3ccd35296c27ea0bee1f875db