Open WebUI Bootstrap - A tool to bootstrap Open WebUI deployments by writing configuration directly to the database
Project description
Open WebUI Bootstrap
A Python library and command-line tool to bootstrap Open WebUI deployments by writing configuration directly to the Open WebUI database.
Features
- Database Configuration: Write users, groups, models, and connections directly to the Open WebUI SQLite database
- Upsert Functionality: Update existing records or add new ones
- Reset Capability: Clear managed tables before applying new configuration
- Dry Run Mode: Test configuration without making database changes
- Comprehensive Logging: Color-formatted logging with configurable verbosity
- Extensible Design: Abstract database interface for future database support
Installation
uv add openwebui-bootstrap
Usage
Command Line Interface
Basic Usage
openwebui-bootstrap --config config.yaml
Reset Database Before Applying Configuration
openwebui-bootstrap --config config.yaml --reset
Dry Run (Test Without Changes)
openwebui-bootstrap --config config.yaml --dry-run
Set Log Level
openwebui-bootstrap --config config.yaml --log-level debug
Python Library Usage
The package can also be used as a Python library in third-party applications. The public API provides the same functionality as the CLI tool.
Basic Bootstrap
from openwebui_bootstrap import bootstrap_openwebui
# Bootstrap Open WebUI with configuration
bootstrap_openwebui(
config_path="config.yaml",
database_path="/path/to/webui.db", # Optional, defaults to config
reset=True, # Reset database before applying
dry_run=False, # Make actual changes
log_level="info" # Log level
)
Load and Apply Configuration Separately
from openwebui_bootstrap import load_config, apply_config
# Load configuration
config = load_config("config.yaml")
# Apply configuration to database
apply_config(
config=config,
database_path="/path/to/webui.db",
dry_run=False
)
Reset Database Only
from openwebui_bootstrap import reset_database
# Reset database (clear managed tables)
reset_database(
database_path="/path/to/webui.db",
dry_run=False
)
Advanced Usage with ConfigManager
from openwebui_bootstrap import ConfigManager, SQLiteDatabase
# Create database interface
database = SQLiteDatabase("/path/to/webui.db")
# Create configuration manager
config_manager = ConfigManager(database)
config_manager.set_dry_run(False)
# Load and apply configuration
config = config_manager.load_config("config.yaml")
config_manager.apply_config(config)
Public API Reference
Functions
-
bootstrap_openwebui(config_path, database_path=None, reset=False, dry_run=False, log_level="info")- Complete bootstrap operation (load config + apply config + optional reset)
- Equivalent to CLI command with all options
-
load_config(config_path)- Load and validate configuration from YAML file
- Returns
OpenWebUIConfigobject - Raises
ConfigurationFileErrororConfigurationValidationError
-
apply_config(config, database_path, dry_run=False)- Apply configuration to database
- Raises
DatabaseErrororDryRunError
-
reset_database(database_path, dry_run=False)- Clear all managed tables in database
- Raises
DatabaseErrororDryRunError
Classes
ConfigManager(database)- Main configuration managerSQLiteDatabase(database_path)- SQLite database interfaceOpenWebUIConfig- Main configuration modelUserConfig,GroupConfig,ModelConfig, etc. - Configuration sub-models
Exceptions
OpenWebUIBootstrapError- Base exceptionConfigurationError- Configuration-related errorsDatabaseError- Database-related errorsDryRunError- Dry run mode errors
Public API Design Philosophy
The public API is designed to:
- Mirror CLI functionality - All CLI operations are available as Python functions
- Provide flexibility - Functions can be used individually or combined
- Maintain simplicity - Simple, intuitive function signatures
- Ensure type safety - Full type hints for IDE support
- Offer comprehensive error handling - Clear exception hierarchy
The API reuses existing components (ConfigManager, SQLiteDatabase) to ensure consistency and reduce code duplication.
Configuration File
Create a YAML configuration file (see example-config.yaml for reference):
database:
type: sqlite
database_location: /path/to/webui.db
users:
- name: Admin User
email: admin@example.com
role: Admin
groups:
- name: developers
description: Development team
permissions:
- import_models
- export_models
members:
- admin@example.com
connections:
type: openai
url: https://api.example.com/v1
bearer: your-api-key
model_ids:
- gpt-4
- gpt-3.5-turbo
models:
prompt_path: /path/to/prompts
icon_path: /path/to/icons
Project Structure
openwebui_bootstrap/
├── cli.py # Command-line interface
├── config_manager.py # Configuration management
├── database/
│ ├── base.py # Abstract database interface
│ └── sqlite.py # SQLite implementation
├── exceptions.py # Custom exceptions
├── logging_config.py # Logging configuration
├── models.py # Data models
└── __init__.py
Development
Setup
uv sync --dev
Running Tests
uv run pytest
Running Tests with Coverage
uv run pytest --cov=openwebui_bootstrap --cov-report=term-missing
Code Formatting
uv run ruff format
uv run ruff check
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openwebui_bootstrap-0.3.4.tar.gz.
File metadata
- Download URL: openwebui_bootstrap-0.3.4.tar.gz
- Upload date:
- Size: 80.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
280109440ef993971df8beab600a62bca77bec992077c28f7f7e51c466a55b6d
|
|
| MD5 |
e03a6fbcd46ec28ddc8d5906de391d61
|
|
| BLAKE2b-256 |
ad0739f16793c694dd5305b064f6b77e98f4e070c76712f83c35524b7340cfb7
|
File details
Details for the file openwebui_bootstrap-0.3.4-py3-none-any.whl.
File metadata
- Download URL: openwebui_bootstrap-0.3.4-py3-none-any.whl
- Upload date:
- Size: 22.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54f6b92a9199c0f49edb087f0e852c3f945e484fd1669d984dcd9af397a9a594
|
|
| MD5 |
1980ea48d543862ff044bc15e4fbe93c
|
|
| BLAKE2b-256 |
017bee69df5a3f7b4e8d9a5211b4f3ffce3479d49dd1e4494412e1e86101df97
|