Usage Overview
synth operates as a modular AI persona with multiple LLM backends. You can
switch engines on the fly using the /cortex command in your preferred chat
platform. Supported modes include manual, openai_chatgpt and
selenium_chatgpt.
Message forwarding is automatic when synth is mentioned or receives a private
message. The event plugin stores reminders in the configured database and
delivers them when due.
Contextual memory can be toggled with /context. When enabled, the last ten
messages are injected into the prompt sent to the active LLM.
Component Management
synth automatically discovers and loads components at startup:
- Available Interfaces
telegram_bot: Telegram integrationdiscord_interface: Discord bot supportreddit_interface: Reddit posting and monitoringwebui: Browser-based interface with VRM avatar animationscli: Command-line interface
- Available Plugins
terminal: Shell command executionai_diary: Personal memory systemevent: Scheduled remindersweather: Weather informationmessage_plugin: Cross-platform messaging
- Available Cortex Engines
openai_chatgpt: OpenAI API integrationgoogle_cli: Google Gemini via CLIselenium_chatgpt: Browser-based ChatGPTmanual: Human trainer input
Runtime Commands
- Engine Management
/cortex: List available cortex engines (/llmdeprecated alias); output now includes per-scope overrides (live, grillo, trainer)/cortex <engine_name>: Switch to a specific engine (/llm <engine_name>deprecated)/cortex_live <engine_name>: Set the live/base cortex engine (alias of/cortex)/cortex_grillo <engine_name>: Override the engine used by grillo beats (use without arguments to see current override)/cortex_trainer <engine_name>: Override the engine used for trainer messages/model: List available models for the active engine/model <model_name>: Switch the active model (e.g.gemini_api)
- Context Control
/context on: Enable message context injection/context off: Disable message context injection
- System Information
/status: Show system status and active components/help: Display available commands
Configuration
Components are configured through environment variables in the .env file:
- Core Settings
TRAINER_IDS: Authorized user IDs for sensitive operationsNOTIFY_ERRORS_TO_INTERFACES: Error notification destinations
- Database
DB_HOST,DB_USER,DB_PASS,DB_NAME: MariaDB credentials
- Interface Tokens
BOTFATHER_TOKEN: Telegram bot tokenDISCORD_BOT_TOKEN: Discord bot tokenREDDIT_*: Reddit API credentials
- File Storage
SYNTH_EXPOSED_STORAGE_ROOT: Files uploaded for file-type exposed variables are stored here. Defaults to/config/storage.
- Cortex API Keys
OPENAI_API_KEY: OpenAI API accessGEMINI_API_KEY: Google Gemini access
- Gemini API (REST)
GEMINI_API_BASE_URL: Override the Gemini REST base URL (default: https://generativelanguage.googleapis.com)GEMINI_MODEL: Select the Gemini model (visible in the WebUI whengemini_apiis loaded)
The modular architecture ensures that components only load when their required configuration is present, making the system highly flexible and secure.
WebUI and VRM Avatars
The WebUI interface provides a browser-based visual representation of synth using VRM avatar models. The system includes:
- Visual Feedback
Idle Animation: Natural relaxed pose when not active
Talking Animation: Synchronized with text generation (estimated duration)
Thinking Animation: Visual indicator during message processing (placeholder)
- 3D Environment
Persistent 3D room with floor and grid
Visible even without a VRM model loaded
Professional lighting setup for optimal model presentation
- Avatar Management
Upload custom VRM models via the WebUI
The last-uploaded VRM automatically becomes the active model until you select a skin or upload another model.
Only a single user VRM is cached at any time; uploading a new file clears the previous model from the temporary storage (skins/temp).
Activate/deactivate models on the fly
Automatic animation retargeting for compatible models
For detailed information about the VRM animation system, see VRM Avatar Animations.