Skip to content

Core Concepts

This page provides an architectural overview of Bonsai Backend and explains how its entities relate to each other.

Architecture

Bonsai Backend is built on:

  • Express — HTTP REST API server with Swagger UI documentation
  • WebSocket (ws) — Real-time bidirectional communication for live conversations
  • PostgreSQL + Drizzle ORM — Persistent storage with type-safe queries and migrations
  • tsyringe — Dependency injection / IoC container
  • Zod — Schema validation, type inference, and OpenAPI documentation source of truth

Entity Hierarchy

Everything in Bonsai Backend revolves around Projects. A project is a self-contained conversational AI experience. Here is the full entity hierarchy:

  • Project
    • Stages
      • Agent
      • LLM Provider
      • Default Classifier
      • Context Transformers
      • Global Actions
      • Knowledge tags
      • Variable Descriptors
      • Actions
    • Agents
      • Prompt
      • TTS Settings
    • Classifiers
    • Context Transformers
    • Tools
    • Knowledge Categories
      • Items
    • Global Actions
    • Guardrails
    • API Keys
    • Conversations
      • Events
        • Artifacts
    • Users

Conversation Flow

A typical conversation turn follows this pipeline:

Each step streams results incrementally to the client via WebSocket, providing low-latency responses.

Key Concepts

Stages as Conversation Phases

Stages represent distinct phases in a conversation. A customer service bot might have stages like "greeting", "identify_issue", "troubleshooting", and "resolution". Each stage has its own:

  • System prompt (Handlebars template)
  • Agent (AI personality and voice)
  • Available actions and their effects
  • Variable schema for structured data
  • Classifier for intent detection
  • Knowledge tags for FAQ injection

The conversation can move between stages via the go_to_stage effect.

Actions as Behaviors

Actions are the primary mechanism for the AI to "do things" beyond generating text. They consist of a classification trigger (how user input maps to the action) and a list of effects (what happens when triggered). See Actions & Effects for details.

Providers as External Integrations

Providers abstract external AI services. A single provider entry (e.g., "OpenAI GPT-4o") can be referenced by multiple stages, classifiers, transformers, and tools. This makes it easy to swap models or services without modifying conversation logic.

Knowledge as Dynamic Context

Knowledge categories contain FAQ-style question-answer pairs. When a stage has useKnowledge enabled, relevant knowledge categories are automatically included in the classifier's consideration set, allowing the AI to answer FAQ-type questions without explicit action definitions.

Optimistic Locking

All mutable entities use a version field for optimistic concurrency control. Update and delete operations must include the current version number, ensuring no silent overwrites when multiple operators edit simultaneously.

APIs

Bonsai Backend exposes a REST API for administration and a WebSocket API for live conversations, along with unauthenticated schema endpoints for tooling and client generation. See the APIs page for the full overview.

Released under the Apache-2.0 License.