hermes plugins install <repo>#gateway-plugin ships ONLY the gateway-plugin/ subdirectory into ~/.hermes/plugins/iris, so the repo-root VERSION file is not present there and plugin_version() fell back to 'unknown' — the app then showed a false 'App and gateway versions differ' warning. - version.py: resolution chain repo-root VERSION (dev/symlink install) -> plugin.yaml version field (production install) -> 'unknown'; stdlib-only parse, base= param for tests - plugin.yaml: bump stale version 0.1.0 -> 0.1.2 (matches VERSION) - scripts/check_version_sync.sh + pre-commit hook: fail commits where plugin.yaml drifts from the repo-root VERSION - tests: regression test simulating the production layout
76 lines
2.8 KiB
YAML
76 lines
2.8 KiB
YAML
name: iris-platform
|
|
label: Iris
|
|
kind: platform
|
|
# MUST match the repo-root VERSION file (checked by
|
|
# scripts/check_version_sync.sh on commit). This field is the version the
|
|
# gateway advertises in production installs, where only this plugin dir is
|
|
# shipped (see version.py).
|
|
version: 0.1.2
|
|
description: >
|
|
Native Android / Desktop client gateway adapter for Hermes Agent.
|
|
Runs an HTTP server (optional TLS) inside the gateway; the app connects
|
|
with a pairing token. Supports streaming, reasoning, structured tool
|
|
events, channels/threads, media, FTS5 search, and FCM/ntfy push.
|
|
author: Iris x Hermes
|
|
# ``requires_env`` / ``optional_env`` entries are surfaced in the
|
|
# ``hermes config`` / ``hermes gateway setup`` UI via the platform-plugin
|
|
# env var injector in ``hermes_cli/config.py``.
|
|
requires_env:
|
|
- name: IRIS_TOKEN
|
|
description: "Shared pairing token the app presents on connect"
|
|
prompt: "Iris pairing token"
|
|
password: true
|
|
optional_env:
|
|
- name: IRIS_HTTP_HOST
|
|
description: "HTTP bind host (default 127.0.0.1; use 0.0.0.0 for LAN)"
|
|
prompt: "HTTP host"
|
|
password: false
|
|
- name: IRIS_HTTP_PORT
|
|
description: "HTTP port (default 8791)"
|
|
prompt: "HTTP port"
|
|
password: false
|
|
- name: IRIS_HOME_CHANNEL
|
|
description: "Default chat id for cron/notification delivery (default: default)"
|
|
prompt: "Home channel"
|
|
password: false
|
|
- name: IRIS_ALLOWED_USERS
|
|
description: "Comma-separated allowed device_ids (empty = token-only auth)"
|
|
prompt: "Allowed device ids"
|
|
password: false
|
|
- name: IRIS_ALLOW_ALL_USERS
|
|
description: "Allow any paired device (dev only)"
|
|
prompt: "Allow all devices? (true/false)"
|
|
password: false
|
|
- name: IRIS_PUSH_BACKEND
|
|
description: "Push backend: ntfy (default, keeps metadata off Google) or fcm"
|
|
prompt: "Push backend"
|
|
password: false
|
|
- name: IRIS_FCM_SERVICE_ACCOUNT
|
|
description: "Path to Firebase service-account JSON (FCM HTTP v1)"
|
|
prompt: "FCM service account path"
|
|
password: true
|
|
- name: IRIS_FCM_SERVER_KEY
|
|
description: "Legacy FCM server key (fallback if no service account)"
|
|
prompt: "FCM server key"
|
|
password: true
|
|
- name: NTFY_TOPIC
|
|
description: "ntfy topic for push (when IRIS_PUSH_BACKEND=ntfy)"
|
|
prompt: "ntfy topic"
|
|
password: false
|
|
- name: NTFY_SERVER_URL
|
|
description: "ntfy server URL (default https://ntfy.sh)"
|
|
prompt: "ntfy server URL"
|
|
password: false
|
|
- name: NTFY_AUTH_TOKEN
|
|
description: "ntfy auth token for a private topic (trust boundary)"
|
|
prompt: "ntfy auth token"
|
|
password: true
|
|
- name: IRIS_HTTP_CERT
|
|
description: "TLS cert path for HTTPS (optional)"
|
|
prompt: "HTTPS cert"
|
|
password: false
|
|
- name: IRIS_HTTP_KEY
|
|
description: "TLS key path for HTTPS (optional)"
|
|
prompt: "HTTPS key"
|
|
password: false
|