Mix LogoMix

Database

Core database tables and relationships

Mix uses a clean relational schema with 6 core tables for session management, messaging, file tracking, and user preferences.

Core Tables

Sessions

Conversation containers with metadata tracking:

  • id - UUID primary key
  • title - User-defined session name
  • parent_session_id - For session forking
  • prompt_tokens, completion_tokens, cost - Usage tracking
  • summary_message_id - Optional conversation summary
  • custom_system_prompt - Per-session prompts

Messages

Chat messages within sessions:

  • id - UUID primary key
  • session_id - Foreign key to sessions
  • role - 'user' or 'assistant'
  • parts - JSON array of message content/attachments
  • model - LLM model used for generation
  • finished_at - Message completion timestamp

Files

File version tracking per session:

  • id - UUID primary key
  • session_id - Foreign key to sessions
  • path - File path within session
  • content - File content
  • version - Version identifier

API Credentials

Encrypted provider API keys:

  • user_id - User identifier
  • provider - LLM provider name (anthropic, openai, etc.)
  • api_key - Encrypted API key

OAuth Credentials

OAuth tokens for provider authentication:

  • user_id - User identifier
  • provider - OAuth provider
  • access_token, refresh_token - OAuth tokens
  • expires_at - Token expiration

User Preferences

Agent configurations and settings:

  • preferred_provider - Default LLM provider
  • main_agent_model, sub_agent_model - Model selections
  • *_max_tokens, *_reasoning_effort - Agent parameters

Database Support

  • SQLite: Default local storage with WAL mode
  • Turso: Cloud database for distributed deployments

Configuration via environment variables:

MIX_DB_TYPE=turso
MIX_DB_TURSO_URL=libsql://your-db.turso.io
MIX_DB_TURSO_AUTH_TOKEN=your-token