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 keytitle
- User-defined session nameparent_session_id
- For session forkingprompt_tokens
,completion_tokens
,cost
- Usage trackingsummary_message_id
- Optional conversation summarycustom_system_prompt
- Per-session prompts
Messages
Chat messages within sessions:
id
- UUID primary keysession_id
- Foreign key to sessionsrole
- 'user' or 'assistant'parts
- JSON array of message content/attachmentsmodel
- LLM model used for generationfinished_at
- Message completion timestamp
Files
File version tracking per session:
id
- UUID primary keysession_id
- Foreign key to sessionspath
- File path within sessioncontent
- File contentversion
- Version identifier
API Credentials
Encrypted provider API keys:
user_id
- User identifierprovider
- LLM provider name (anthropic, openai, etc.)api_key
- Encrypted API key
OAuth Credentials
OAuth tokens for provider authentication:
user_id
- User identifierprovider
- OAuth provideraccess_token
,refresh_token
- OAuth tokensexpires_at
- Token expiration
User Preferences
Agent configurations and settings:
preferred_provider
- Default LLM providermain_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