Chapter 07: Extending General Bots
Architecture and deployment reference for developers.
Overview
BotServer is built in Rust with a modular architecture. Extend it by creating custom keywords, services, or entire applications.
Architecture
┌─────────────────────────────────────────┐
│ Web Server (Axum) │
├─────────────────────────────────────────┤
│ BASIC Runtime (Rhai) │
├──────────┬──────────┬──────────┬────────┤
│ LLM │ Storage │ Vector │ Cache │
│ Service │ (MinIO) │ (Qdrant) │(Valkey)│
├──────────┴──────────┴──────────┴────────┤
│ PostgreSQL │
└─────────────────────────────────────────┘
Deployment Options
| Method | Use Case | Guide |
|---|---|---|
| Local | Development | Installation |
| Docker | Production | Docker Deployment |
| LXC | Isolated components | Container Deployment |
Module Structure
| Module | Purpose |
|---|---|
web_server | HTTP/WebSocket handling |
basic | BASIC language runtime |
llm | LLM provider integration |
drive | Object storage |
shared | Database models |
Creating Custom Keywords
#![allow(unused)] fn main() { // In src/basic/keywords/my_keyword.rs pub fn my_keyword(context: &mut EvalContext) -> Result<Dynamic, Box<EvalError>> { // Your keyword logic Ok(Dynamic::from("result")) } }
Register in keywords/mod.rs and rebuild.
Chapter Contents
- Architecture Overview - System design
- Building from Source - Compilation guide
- Container Deployment (LXC) - Linux containers
- Docker Deployment - Docker setup
- Scaling - Load balancing
- Infrastructure - Hardware planning
- Observability - Monitoring
- Custom Keywords - Extending BASIC
- Services - Service layer
See Also
- Installation - Getting started
- BASIC Reference - Scripting language