mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-01 08:21:50 +08:00
Hello! I am the maintainer of the microsoft-teams-apps Python SDK and I built this Teams adapter to integrate Microsoft Teams into Hermes. Adds a `plugins/platforms/teams` platform plugin using the new PlatformRegistry system from #17751. The adapter self-registers via `register(ctx)` — no hardcoding in run.py, toolsets.py, or any other core file. Key features: - Supports personal DMs, group chats, and channel posts - Adaptive Card approval prompts with in-place button replacement (Allow Once / Allow Session / Always Allow / Deny) - aiohttp webhook server bridged from the Teams SDK to avoid the fastapi/uvicorn dependency - ConversationReference caching for correct proactive sends in non-DM chats - `interactive_setup()` for `hermes gateway setup` integration - `platform_hint` for LLM context (Teams markdown subset) - 34 tests covering adapter init, send, message handling, and plugin registration Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
60 lines
2.1 KiB
YAML
60 lines
2.1 KiB
YAML
#
|
|
# docker-compose.yml for Hermes Agent
|
|
#
|
|
# Usage:
|
|
# HERMES_UID=$(id -u) HERMES_GID=$(id -g) docker compose up -d
|
|
#
|
|
# Set HERMES_UID / HERMES_GID to the host user that owns ~/.hermes so
|
|
# files created inside the container stay readable/writable on the host.
|
|
# The entrypoint remaps the internal `hermes` user to these values via
|
|
# usermod/groupmod + gosu.
|
|
#
|
|
# Security notes:
|
|
# - The dashboard service binds to 127.0.0.1 by default. It stores API
|
|
# keys; exposing it on LAN without auth is unsafe. If you want remote
|
|
# access, use an SSH tunnel or put it behind a reverse proxy that
|
|
# adds authentication — do NOT pass --insecure --host 0.0.0.0.
|
|
# - The gateway's API server is off unless you uncomment API_SERVER_KEY
|
|
# and API_SERVER_HOST. See docs/user-guide/api-server.md before doing
|
|
# this on an internet-facing host.
|
|
#
|
|
services:
|
|
gateway:
|
|
build: .
|
|
image: hermes-agent
|
|
container_name: hermes
|
|
restart: unless-stopped
|
|
network_mode: host
|
|
volumes:
|
|
- ~/.hermes:/opt/data
|
|
environment:
|
|
- HERMES_UID=${HERMES_UID:-10000}
|
|
- HERMES_GID=${HERMES_GID:-10000}
|
|
# To expose the OpenAI-compatible API server beyond localhost,
|
|
# uncomment BOTH lines (API_SERVER_KEY is mandatory for auth):
|
|
# - API_SERVER_HOST=0.0.0.0
|
|
# - API_SERVER_KEY=${API_SERVER_KEY}
|
|
# Microsoft Teams — uncomment and fill in to enable Teams gateway.
|
|
# Register your bot at https://dev.botframework.com/ to get these values.
|
|
# - TEAMS_CLIENT_ID=${TEAMS_CLIENT_ID}
|
|
# - TEAMS_CLIENT_SECRET=${TEAMS_CLIENT_SECRET}
|
|
# - TEAMS_TENANT_ID=${TEAMS_TENANT_ID}
|
|
# - TEAMS_ALLOWED_USERS=${TEAMS_ALLOWED_USERS}
|
|
# - TEAMS_PORT=3978
|
|
command: ["gateway", "run"]
|
|
|
|
dashboard:
|
|
image: hermes-agent
|
|
container_name: hermes-dashboard
|
|
restart: unless-stopped
|
|
network_mode: host
|
|
depends_on:
|
|
- gateway
|
|
volumes:
|
|
- ~/.hermes:/opt/data
|
|
environment:
|
|
- HERMES_UID=${HERMES_UID:-10000}
|
|
- HERMES_GID=${HERMES_GID:-10000}
|
|
# Localhost-only. For remote access, tunnel via `ssh -L 9119:localhost:9119`.
|
|
command: ["dashboard", "--host", "127.0.0.1", "--no-open"]
|