steward_mirror/steward/config_schema.yaml
Andrew Ridgway 76777c98eb
feat: add Matrix appservice bot and platform-agnostic conversation core
Introduce a shared ConversationService (steward/bot/core.py) that owns the
LLM call, history, knowledge-base search, and thread-memory keying behind a
normalized ThreadKey, so both Telegram and Matrix drive the same pipeline.

- Add steward/bot/matrix.py: a mautrix-python appservice bot that receives
  Synapse transactions and replies via the client-server API.
- Refactor telegram.py handlers into thin wrappers over ConversationService.
- Generalize ThreadMemoryStore/ThreadSummary to platform-scoped keys with
  legacy chat_id:thread_id migration.
- Add a matrix config section (homeserver, tokens, room/user allowlists).
- Rewrite main.py as async, starting Telegram and/or Matrix on one event loop.
- Add mautrix>=0.21.0 dependency.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-18 21:38:01 +10:00

85 lines
2.6 KiB
YAML

# Steward Configuration Schema
# This is the default configuration. Override values in your own config file or via environment variables.
# Environment variable format: STEWARD__<section>__<key>=value
# Example: STEWARD__TELEGRAM__BOT_TOKEN=your_token
telegram:
# Telegram bot token (REQUIRED - set via env or config)
bot_token: ""
# List of user IDs allowed to interact with the bot via DM
# Empty list means all users are allowed
allowed_user_ids: []
# List of group/channel IDs where the bot is allowed to operate
# Empty list means all groups are allowed
group_ids: []
openai:
# OpenAI API key (REQUIRED - set via env for security)
api_key: ""
# API base URL (can use any OpenAI-compatible provider)
base_url: "https://api.openai.com/v1"
# Model to use
model: "gpt-4o"
# System prompt for the bot
system_prompt: "You are Steward, a persistent, trustworthy AI-assisted personal operations platform. You reduce cognitive load by observing, remembering, planning, and proposing actions. You are conservative, transparent, and policy-aware. Always explain your reasoning."
analysis:
# Target URL for API analysis (optional - set to enable analysis feature)
target_url: ""
# API key for analysis target (optional)
target_api_key: ""
# Cron schedule for automatic analysis
cron_hour: 8
cron_minute: 0
memory:
# Path to thread memory storage file
thread_memory_path: "thread_memory.json"
tools:
# MCP/OpenAPI tool server URL (optional - set to enable tool calling)
mcp_server_url: ""
# API key for MCP server (optional)
mcp_server_api_key: ""
matrix:
# Matrix appservice integration (optional - set to enable the Matrix bot)
# The bot registers as a Synapse application service and receives events
# via HTTP transactions, then replies through the client-server API.
# Homeserver client-server base URL (e.g. http://matrix:8008)
homeserver_url: ""
# Homeserver domain (server_name), e.g. matrix.aridgwayweb.com
homeserver_domain: ""
# Appservice token used by the bot to authenticate to the homeserver
as_token: ""
# Homeserver token used to authenticate incoming transactions
hs_token: ""
# Localpart of the bot user (becomes @<localpart>:<domain>)
bot_localpart: "steward"
# Unique appservice ID
appservice_id: "steward"
# Host/port the appservice HTTP server listens on
listen_host: "0.0.0.0"
listen_port: 8000
# List of room IDs the bot is allowed to operate in (empty = all rooms)
allowed_room_ids: []
# List of user IDs (MXIDs) allowed to talk to the bot (empty = all users)
allowed_user_ids: []