GitHub - alexander-akhmetov/sigil-hermes: Grafana AI observability plugin for Hermes Agent · GitHub
/" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
alexander-akhmetov
sigil-hermes
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>24 Commits<br>24 Commits
.github/workflows
.github/workflows
src/hermes_plugin_sigil
src/hermes_plugin_sigil
tests
tests
.gitignore
.gitignore
LICENSE
LICENSE
README.md
README.md
img.png
img.png
llms.txt
llms.txt
plugin.yaml
plugin.yaml
pyproject.toml
pyproject.toml
View all files
Repository files navigation
sigil-hermes
Grafana AI Observability plugin for Hermes Agent. Records LLM calls and tool executions as Sigil generations and emits OTel traces + metrics.
Install
Preferred: let your agent do it
Paste this into Hermes (or any Claude / Codex / Cursor / similar agent that can fetch URLs):
Install and configure the Grafana AI Observability plugin for me by following<br>https://raw.githubusercontent.com/alexander-akhmetov/sigil-hermes/main/llms.txt
The agent will walk you through pip install, ~/.hermes/config.yaml, and the credential collection from Grafana Cloud. It will also explain what conversation data flows by default and how to tune it before turning anything on.
Manual
pip install git+https://github.com/alexander-akhmetov/sigil-hermes
Install into the same Python environment hermes runs from (which hermes to check). Then enable the plugin in ~/.hermes/config.yaml:
plugins:<br>enabled:<br>- sigil
Hermes's plugins enable CLI does not see pip-installed plugins yet — it only scans ~/.hermes/plugins/ and the bundled directory. Editing the YAML directly is the workaround.
Configure
Two independent channels, each optional: generations under the canonical SIGIL_* schema, traces and metrics under the standard OpenTelemetry OTEL_* schema. You can find URLs and tokens in your Grafana account: https://grafana.com/orgs/{org}.<br>If you do not have a Grafana Cloud account, you can create one for free at https://grafana.com/auth/sign-up/create-user/. The free tier is enough to run this plugin.
.grafana.net"<br>export SIGIL_PROTOCOL=http<br>export SIGIL_AUTH_MODE=basic<br>export SIGIL_AUTH_TENANT_ID=""<br># Find this token in your stack info → "AI Observability" card at<br># https://grafana.com/orgs/{org-id}/stacks/{stack-id}<br>export SIGIL_AUTH_TOKEN=""
# Traces + metrics → Grafana Cloud OTLP gateway (standard OTel envs)<br>export OTEL_EXPORTER_OTLP_ENDPOINT="https://otlp-gateway-prod-.grafana.net/otlp"<br># OTEL_EXPORTER_OTLP_HEADERS is optional: when unset, the plugin derives<br># Authorization=Basic base64("$SIGIL_AUTH_TENANT_ID:$SIGIL_AUTH_TOKEN") plus<br># X-Scope-OrgID. That only works when the OTLP gateway's basic-auth username<br># equals SIGIL_AUTH_TENANT_ID. If the OTLP instance ID differs, set it<br># explicitly with that username (override per signal with<br># OTEL_EXPORTER_OTLP_TRACES_HEADERS / _METRICS_HEADERS):<br># Base64 of ":" — see your stack's<br># "OpenTelemetry" card.<br>export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Basic ""># Generations → Sigil API (Conversations)<br>export SIGIL_ENDPOINT="https://sigil-prod-.grafana.net"<br>export SIGIL_PROTOCOL=http<br>export SIGIL_AUTH_MODE=basic<br>export SIGIL_AUTH_TENANT_ID=""<br># Find this token in your stack info → "AI Observability" card at<br># https://grafana.com/orgs/{org-id}/stacks/{stack-id}<br>export SIGIL_AUTH_TOKEN=""
# Traces + metrics → Grafana Cloud OTLP gateway (standard OTel envs)<br>export OTEL_EXPORTER_OTLP_ENDPOINT="https://otlp-gateway-prod-.grafana.net/otlp"<br># OTEL_EXPORTER_OTLP_HEADERS is optional: when unset, the plugin derives<br># Authorization=Basic base64("$SIGIL_AUTH_TENANT_ID:$SIGIL_AUTH_TOKEN") plus<br># X-Scope-OrgID. That only works when the OTLP gateway's basic-auth username<br># equals SIGIL_AUTH_TENANT_ID. If the OTLP instance ID differs, set it<br># explicitly with that username (override per signal with<br># OTEL_EXPORTER_OTLP_TRACES_HEADERS / _METRICS_HEADERS):<br># Base64 of ":" — see your stack's<br># "OpenTelemetry" card.<br>export...