The dev environment previously hardcoded Synapse (bundled with Postgres
and Element Web) in a monolithic etc/services/core/ directory.
With Continuwuity now available as a lighter alternative (no external DB),
this refactors the service layout so developers choose their homeserver
once and everything derives from that choice. Continuwuity is the new
default for its smaller footprint.
Key changes:
- Break etc/services/core/ into etc/services/synapse/ and
etc/services/element-web/, each with their own compose.yml
- Add `homeserver` variable in justfile (reads var/homeserver,
defaults to continuwuity)
- Add `homeserver-init` recipe to persist the choice
- Use placeholders (__HOMESERVER_SERVER_NAME__, __HOMESERVER_URL__,
__HOMESERVER_CLIENT_URL__) in config templates, resolved at
prepare time based on the chosen homeserver
- Make services-start/stop/prepare/tail-logs delegate to the chosen
homeserver's recipes + element-web
- Make users-prepare delegate to {homeserver}-users-prepare
- Update docs/development.md for the new homeserver choice flow
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
171 lines
6.8 KiB
Plaintext
171 lines
6.8 KiB
Plaintext
homeserver:
|
|
# The canonical homeserver domain name
|
|
server_name: __HOMESERVER_SERVER_NAME__
|
|
url: __HOMESERVER_URL__
|
|
|
|
user:
|
|
mxid_localpart: baibot
|
|
password: baibot
|
|
|
|
# The name the bot uses as a display name and when it refers to itself.
|
|
# Leave empty to use the default (baibot).
|
|
name: baibot
|
|
|
|
# An optional path to an image file to be used as a custom avatar image.
|
|
# - null or empty string: use the default avatar
|
|
# - "keep": don't touch the avatar, keep whatever is already set
|
|
# - any other value: path to a custom avatar image file
|
|
avatar: null
|
|
|
|
encryption:
|
|
# An optional passphrase to use for backing up and recovering the bot's encryption keys.
|
|
# You can use any string here.
|
|
#
|
|
# If set to null, the recovery module will not be used and losing your session/database (see persistence)
|
|
# will mean you lose access to old messages in encrypted room.
|
|
#
|
|
# Changing this subsequently will also cause you to lose access to old messages in encrypted rooms.
|
|
# If you really need to change this:
|
|
# - Set `encryption_recovery_reset_allowed` to `true` and adjust the passphrase
|
|
# - Remove your session file and database (see persistence)
|
|
# - Restart the bot
|
|
# - Then restore `encryption_recovery_reset_allowed` to `false` to prevent accidental resets in the future
|
|
recovery_passphrase: long-and-secure-passphrase-here
|
|
|
|
# An optional flag to reset the encryption recovery passphrase.
|
|
recovery_reset_allowed: false
|
|
|
|
# Command prefix. Leave empty to use the default (!bai).
|
|
command_prefix: "!bai"
|
|
|
|
room:
|
|
# Whether the bot should send an introduction message after joining a room.
|
|
post_join_self_introduction_enabled: true
|
|
|
|
access:
|
|
# Space-separated list of MXID patterns which specify who is an admin.
|
|
admin_patterns:
|
|
- "@admin:__HOMESERVER_SERVER_NAME__"
|
|
|
|
persistence:
|
|
# This is unset here, because we expect the configuration to come from an environment variable (BAIBOT_PERSISTENCE_DATA_DIR_PATH).
|
|
# In your setup, you may wish to set this to a directory path.
|
|
data_dir_path: null
|
|
|
|
# An optional secret for encrypting the bot's session data (stored in data_dir_path).
|
|
# This must be 32-bytes (64 characters when HEX-encoded).
|
|
# Generate it with: `openssl rand -hex 32`
|
|
# Leave null or empty to avoid using encryption.
|
|
# Changing this subsequently requires that you also throw away all data stored in data_dir_path.
|
|
session_encryption_key: 9701cd109ed56770687dd8410f7d7371a4390dd3feb8ed721f189a0756c40098
|
|
|
|
# An optional secret for encrypting bot configuration stored in Matrix's account data.
|
|
# This must be 32-bytes (64 characters when HEX-encoded).
|
|
# Generate it with: `openssl rand -hex 32`
|
|
# Leave null or empty to avoid using encryption.
|
|
# Changing this subsequently will make you lose your configuration.
|
|
config_encryption_key: a9f1df98d288802ead20a8be2c701a627eabd31cf3d9e2aea28867ccd7a4ded7
|
|
|
|
agents:
|
|
# A list of statically-defined agents.
|
|
#
|
|
# Below are a few common choices on popular providers, preconfigured for development purposes (see docs/development.md).
|
|
# You may enable some of the ones you see below or define others.
|
|
# You can also leave this list empty and only define agents dynamically (via chat).
|
|
#
|
|
# Uncomment one or more of these and potentially adjust their configuration (API key, etc).
|
|
# Consider setting `initial_global_config.handler.*` to an agent that you enable here.
|
|
static_definitions:
|
|
# - id: openai
|
|
# provider: openai
|
|
# config:
|
|
# base_url: https://api.openai.com/v1
|
|
# api_key: ""
|
|
# text_generation:
|
|
# model_id: gpt-5.2
|
|
# prompt: "You are a brief, but helpful bot called {{ baibot_name }} powered by the {{ baibot_model_id }} model. The date/time of this conversation's start is: {{ baibot_conversation_start_time_utc }}."
|
|
# temperature: 1.0
|
|
# # Reasoning models need to use `max_completion_tokens` instead of `max_response_tokens`.
|
|
# # If you're dealing with a non-reasoning model, specify `max_response_tokens` and unset `max_completion_tokens`.
|
|
# max_response_tokens: null
|
|
# max_completion_tokens: 128000
|
|
# max_context_tokens: 400000
|
|
# # Built-in tools
|
|
# tools:
|
|
# web_search: false
|
|
# code_interpreter: false
|
|
# speech_to_text:
|
|
# model_id: whisper-1
|
|
# text_to_speech:
|
|
# model_id: tts-1-hd
|
|
# voice: onyx
|
|
# speed: 1.0
|
|
# response_format: opus
|
|
# image_generation:
|
|
# model_id: gpt-image-1.5
|
|
# style: null
|
|
# size: null
|
|
# quality: null
|
|
#
|
|
# - id: localai
|
|
# provider: localai
|
|
# config:
|
|
# base_url: http://127.0.0.1:42027/v1
|
|
# api_key: null
|
|
# text_generation:
|
|
# model_id: gpt-4
|
|
# prompt: "You are a brief, but helpful bot called {{ baibot_name }} powered by the {{ baibot_model_id }} model. The date/time of this conversation's start is: {{ baibot_conversation_start_time_utc }}."
|
|
# temperature: 1.0
|
|
# max_response_tokens: 16384
|
|
# max_context_tokens: 128000
|
|
# speech_to_text:
|
|
# model_id: whisper-1
|
|
# text_to_speech:
|
|
# model_id: tts-1
|
|
# voice: onyx
|
|
# speed: 1.0
|
|
# response_format: opus
|
|
# image_generation:
|
|
# model_id: stablediffusion
|
|
# style: vivid
|
|
# # Intentionally defaults to a small value to improve performance
|
|
# size: 256x256
|
|
# quality: standard
|
|
#
|
|
# - id: ollama
|
|
# provider: ollama
|
|
# config:
|
|
# base_url: "http://127.0.0.1:42026/v1"
|
|
# api_key: null
|
|
# text_generation:
|
|
# model_id: "gemma2:2b"
|
|
# prompt: "You are a brief, but helpful bot called {{ baibot_name }} powered by the {{ baibot_model_id }} model. The date/time of this conversation's start is: {{ baibot_conversation_start_time_utc }}."
|
|
# temperature: 1.0
|
|
# max_response_tokens: 4096
|
|
# max_context_tokens: 128000
|
|
|
|
# Initial global configuration. This only affects the first run of the bot.
|
|
# Configuration is later managed at runtime.
|
|
initial_global_config:
|
|
handler:
|
|
catch_all: null
|
|
text_generation: null
|
|
text_to_speech: null
|
|
speech_to_text: null
|
|
image_generation: null
|
|
|
|
# Space-separated list of MXID patterns which specify who can use the bot.
|
|
# By default, we let anyone on the homeserver use the bot.
|
|
user_patterns:
|
|
- "@*:__HOMESERVER_SERVER_NAME__"
|
|
|
|
# Controls logging.
|
|
#
|
|
# Sets all tracing targets (external crates) to warn, and our own logs to debug.
|
|
# For even more verbose logging, one may also use trace.
|
|
#
|
|
# matrix_sdk_crypto may be chatty and could be added with an error level.
|
|
#
|
|
# Learn more here: https://stackoverflow.com/a/73735203
|
|
logging: warn,mxlink=debug,baibot=debug
|