ansible-role-localai/tasks/baibot.yaml
2025-11-12 08:16:29 -05:00

186 lines
7.5 KiB
YAML

---
# tasks file for baibot
- name: Create Baibot namespace
k8s:
state: present
definition:
apiVersion: v1
kind: Namespace
metadata:
name: baibot
- name: Create a ConfigMap for Baibot
k8s:
definition:
apiVersion: v1
kind: ConfigMap
metadata:
name: config
namespace: baibot
data:
config.yml: |
homeserver:
# The canonical homeserver domain name
server_name: synapse.eom.dev
url: https://synapse.eom.dev/
user:
mxid_localpart: localai
password: {{ localai_admin_password }}
# The name the bot uses as a display name and when it refers to itself.
# Leave empty to use the default (baibot).
name: LocalAI
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: {{ localai_matrix_recovery_key }}
# 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:
- "@eric:eom.dev"
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: {{ baibot_session_encryption_key }}
# 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: {{ baibot_config_encryption_key }}
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: localai
provider: localai
config:
base_url: https://localai.eom.dev/v1
api_key: {{ localai_api_keys[1] }}
text_generation:
model_id: llama3-instruct
prompt: "You are a brief, but helpful bot called LocalAI powered by the llama3-8b-instruct model. Format all responses in markdown."
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
# Initial global configuration. This only affects the first run of the bot.
# Configuration is later managed at runtime.
initial_global_config:
handler:
catch_all: static/localai
text_generation: static/localai
text_to_speech: static/localai
speech_to_text: static/localai
image_generation: static/localai
# 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:
- "@*:*"
# 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
- name: Create a persistent volume claim for Baibot
k8s:
state: present
definition:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
namespace: baibot
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 256Gi
- name: Create a Deployment for Baibot
k8s:
definition:
apiVersion: v1
kind: Deployment
metadata:
name: baibot
namespace: baibot
spec:
replicas: 1
selector:
matchLabels:
app: baibot
template:
metadata:
labels:
app: baibot
spec:
containers:
- name: baibot
image: ghcr.io/etkecc/baibot
tag: v1.0.0
env:
- name: BAIBOT_PERSISTENCE_DATA_DIR_PATH
value: /data
- name: BAIBOT_CONFIG_FILE_PATH
value: /config/config.yml
volumeMounts:
- name: config
mountPath: /config
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: data
- name: config
configMap:
name: config