OpenWebUi CLI
Find a file
Danny Stocker fbe6832d3e Improve CLI streaming, error handling, and add comprehensive tests
**Core Improvements:**
- Fix Pydantic v2 deprecation warning in config.py by migrating to ConfigDict
- Add graceful Ctrl-C handling for streaming chat responses
- Add connection error handling mid-stream with actionable suggestions
- Implement --history-file support for conversation context
- Enhance all error messages with specific troubleshooting steps

**Chat Command Enhancements:**
- Improved SSE streaming with KeyboardInterrupt handling
- Added --history-file option to load conversation history from JSON
- Support both array and object formats for history files
- Better error messages for missing prompts and invalid history files
- Graceful handling of connection timeouts during streaming

**Error Message Improvements:**
- 401: Clear authentication instructions with token expiry hints
- 403: Detailed permission error with possible causes
- 404: Resource not found with helpful suggestions
- 5xx: Server error with admin troubleshooting tips
- Network errors: Connection, timeout, and request failures with solutions

**Testing:**
- Add comprehensive test suite for chat commands (7 tests)
- Test streaming and non-streaming responses
- Test system prompts, stdin input, and JSON output
- Test conversation history loading
- Test RAG file and collection context
- All 14 tests passing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 20:28:21 +01:00
docs Initial CLI scaffolding with v1.0 MVP structure 2025-11-30 20:09:19 +01:00
openwebui_cli Improve CLI streaming, error handling, and add comprehensive tests 2025-11-30 20:28:21 +01:00
tests Improve CLI streaming, error handling, and add comprehensive tests 2025-11-30 20:28:21 +01:00
.gitignore Initial CLI scaffolding with v1.0 MVP structure 2025-11-30 20:09:19 +01:00
LICENSE Initial CLI scaffolding with v1.0 MVP structure 2025-11-30 20:09:19 +01:00
pyproject.toml Initial CLI scaffolding with v1.0 MVP structure 2025-11-30 20:09:19 +01:00
README.md Initial CLI scaffolding with v1.0 MVP structure 2025-11-30 20:09:19 +01:00

OpenWebUI CLI

Official command-line interface for OpenWebUI.

Status: Alpha - v0.1.0 MVP in development

Features

  • Authentication - Login, logout, token management with secure keyring storage
  • Chat - Send messages with streaming support, continue conversations
  • RAG - Upload files, manage collections, vector search
  • Models - List and inspect available models
  • Admin - Server stats and diagnostics (admin role required)
  • Profiles - Multiple server configurations

Installation

pip install openwebui-cli

Or from source:

git clone https://github.com/dannystocker/openwebui-cli.git
cd openwebui-cli
pip install -e .

Quick Start

# Initialize configuration
openwebui config init

# Login to your OpenWebUI instance
openwebui auth login

# Chat with a model
openwebui chat send -m llama3.2:latest -p "Hello, world!"

# Upload a file for RAG
openwebui rag files upload ./document.pdf

# List available models
openwebui models list

Usage

Authentication

# Interactive login
openwebui auth login

# Show current user
openwebui auth whoami

# Logout
openwebui auth logout

Chat

# Simple chat (streaming by default)
openwebui chat send -m llama3.2:latest -p "Explain quantum computing"

# Non-streaming mode
openwebui chat send -m llama3.2:latest -p "Hello" --no-stream

# With RAG context
openwebui chat send -m llama3.2:latest -p "Summarize this document" --file <FILE_ID>

# Continue a conversation
openwebui chat send -m llama3.2:latest -p "Tell me more" --chat-id <CHAT_ID>

RAG (Retrieval-Augmented Generation)

# Upload files
openwebui rag files upload ./docs/*.pdf

# Create a collection
openwebui rag collections create "Project Docs"

# Search within a collection
openwebui rag search "authentication flow" --collection <COLL_ID>

Models

# List all models
openwebui models list

# Get model details
openwebui models info llama3.2:latest

Configuration

# Initialize config
openwebui config init

# Show current config
openwebui config show

# Use a specific profile
openwebui --profile production chat send -m gpt-4 -p "Hello"

Configuration File

Location: ~/.config/openwebui/config.yaml (Linux/macOS) or %APPDATA%\openwebui\config.yaml (Windows)

version: 1
default_profile: local

profiles:
  local:
    uri: http://localhost:8080
  production:
    uri: https://openwebui.example.com

defaults:
  model: llama3.2:latest
  format: text
  stream: true

Exit Codes

Code Meaning
0 Success
1 General error
2 Usage/argument error
3 Authentication error
4 Network error
5 Server error (5xx)

Development

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Type checking
mypy openwebui_cli

# Linting
ruff check openwebui_cli

Contributing

Contributions welcome! Please read the RFC proposal for design details.

License

MIT License - see LICENSE for details.

Acknowledgments