Skip to main content

An AI-powered Retrieval-Augmented Generation (RAG) system with a modern web interface.

Project description

https://pypi.org/project/soliplex/# Soliplex

An AI-powered Retrieval-Augmented Generation (RAG) system with a modern web interface.

Features

  • RAG-Powered Search: Semantic document retrieval using LanceDB vector database
  • Multi-Room Architecture: Independent chat environments (rooms) with separate configurations and knowledge bases
  • Multiple LLM Providers: OpenAI, Ollama, and compatible APIs
  • AI Agent System: Function calling and tool integration for AI agents
  • OIDC Authentication: Enterprise SSO with Keycloak integration
  • Model Context Protocol (MCP): Extended AI capabilities through MCP client or exposing Room as MCP server
  • Real-time Communication: WebSocket-based conversation streams
  • Quiz System: Custom quizzes with LLM-based evaluation
  • Observability: Logfire integration for monitoring

Architecture

Backend (/src/soliplex/)

Python 3.12+ / FastAPI

  • Core: FastAPI application with async support
  • RAG Engine: haiku.rag-slim with LanceDB vector storage
  • AI Integration: Pydantic AI for agent management
  • Authentication: Python-Keycloak with OIDC/JWT support
  • MCP: FastMCP server and client implementations
  • Configuration: YAML-based configuration system

Key modules:

  • views/ - API endpoints (auth, completions, conversations, rooms, quizzes)
  • agents.py - AI agent configuration and management
  • agui/ - AG-UI thread persistence and retrieval
  • tools.py - Tool definitions for AI agents
  • mcp_server.py / mcp_client.py - Model Context Protocol integration
  • tui/ - Terminal user interface

Frontend (/src/flutter/)

Flutter 3.35+ / Dart 3.10.0+

  • Framework: Flutter web with Material Design
  • State Management: Riverpod (2.6.1)
  • Navigation: Go Router (16.0.0)
  • Authentication: Flutter AppAuth (9.0.1) for OIDC
  • Real-time: WebSocket communication
  • Secure Storage: Flutter Secure Storage for credentials

Key files:

  • main.dart - Application entry point
  • soliplex_client.dart - Backend API client
  • oidc_client.dart - OIDC authentication client
  • controllers.dart - Riverpod state management
  • configure.dart - Configuration UI

TUI (src/soliplex/tui)

Quick-and-dirty client for room queries

  • Framework: Python textual

Quick Start

For detailed installation instructions, see the Prerequisites Guide.

Install Soliplex and dependencies

# Install
python3.13 -m venv venv
source venv/bin/activate
pip install -e .

# Configure environment
cp .env.example .env
# Edit .env with your settings

Index Soliplex docs into RAG database

source venv/bin/activate
export OLLAMA_BASE_URL=<your Ollama server / port>
# Run docling-serve if you have not installed the full haiku.rag
docker run -p 5001:5001 -d -e DOCLING_SERVE_ENABLE_UI=1 \
  quay.io/docling-project/docling-serve
haiku-rag --config example/haiku.rag.yaml \
  init --db  db/rag/rag.lancedb
haiku-rag --config example/haiku.rag.yaml \
  add-src --db db/rag/rag.lancedb docs/
...
17 documents added successfully.

See: docs/rag.md for more options.

Backend Server CLI Commands

The soliplex-cli command provides several utilities for managing your Soliplex installation:

Check Configuration

Validate your configuration file and report any missing secrets or environment variables:

soliplex-cli check-config example/minimal.yaml

List Rooms

Show all configured chat rooms:

soliplex-cli list-rooms example/minimal.yaml

List Completions

Show all configured completion endpoints:

soliplex-cli list-completions example/minimal.yaml

List Secrets

Display all configured secrets and their status:

soliplex-cli list-secrets example/minimal.yaml

List Environment Variables

Show all environment variables and their values:

soliplex-cli list-environment example/minimal.yaml

List OIDC Providers

Display configured OIDC authentication providers:

soliplex-cli list-oidc-auth-providers example/minimal.yaml

Export Configuration

Export the installation configuration as YAML:

soliplex-cli config example/minimal.yaml

Export AG-UI Feature Schemas

Export AG-UI feature schemas as JSON:

soliplex-cli agui-feature-schemas example/minimal.yaml

Run Backend Server

Start the Soliplex backend server:

export OLLAMA_BASE_URL=<your Ollama server / port>
soliplex-cli serve example/minimal.yaml --no-auth-mode

Server options:

  • --no-auth-mode - Disable authentication (for development/testing)
  • --host HOST - Bind to specific host (default: 127.0.0.1)
  • --port PORT - Listen on specific port (default: 8000)
  • --reload {python,config,both} - Enable hot reload for python code, config, or both
  • --reload-dirs DIRS - Additional directories to watch for reload
  • --reload-includes PATTERNS - File patterns to include in reload watch
  • --proxy-headers - Enable proxy header parsing
  • --forwarded-allow-ips IPS - Trusted IP addresses for proxy headers

Frontend

cd src/flutter
flutter pub get
flutter run -d chrome --web-port 59001

TUI

The TUI does not yet support authentication, so run the back-end with --no-auth-mode when using the TUI.

Within the virtual environment where you installed soliplex:

soliplex-tui --help

 Usage: soliplex-tui [OPTIONS]

╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --version             -v                                                     │
│ --url                      TEXT  Base URL for Soliplex back-end              │
│                                  [default: http://127.0.0.1:8000]            │
│ --help                -h         Show this message and exit.                 │
╰──────────────────────────────────────────────────────────────────────────────╯
soliplex-tui

By default, the TUI connects to a Soliplex back-end server running on port 8000 on your local machine:

soliplex-tui --url http://127.0.0.1:8000

Development

This project uses PEP 735 Dependency Groups for managing development dependencies. This is the modern standard supported by uv and recent versions of pip.

Installing dev dependencies

# Using pip (requires pip 24.0+)
pip install -e . --group dev

# Using uv (recommended)
uv sync --group dev

Note: The older syntax pip install -e ".[dev]" is for [project.optional-dependencies] and will NOT work with [dependency-groups]. Always use --group dev instead.

Available dependency groups

Group Purpose
dev Testing tools (pytest, ruff, coverage)
docs Documentation (mkdocs, mkdocs-material)
postgres PostgreSQL support (asyncpg)
tui Terminal UI (textual, typer)

Running tests

# Run unit tests with coverage
pytest

# Run with specific coverage threshold (CI enforces 100%)
pytest --cov-fail-under=100

# Run linting
ruff check

# Check formatting
ruff format --check

Configuration

YAML-based configuration with:

  • Installation (installation.yaml) - Main config referencing agents, rooms, and OIDC providers
  • Rooms (rooms/*.yaml) - Individual chat room configurations with RAG settings
  • Agents (completions/*.yaml) - LLM provider and model configurations
  • OIDC (oidc/*.yaml) - Authentication provider settings

See example/ directory for sample configurations.

Environment Variables

Non-secret environment variables can and mostly should be configured directly in the installation.yaml file (e.g. example/installation.yaml, example/minimal.yaml, etc.).

Those files are checked into the Soliplex repository, and cannot know the URL of your Ollama server (if you use Ollama), They therefore declare the OLLAMA_BASE_URL variable without a value, meaning that the configuration expects the value to be present in the environments (see: https://soliplex.github.io/soliplex/config/environment/).

Those files also must not contain secrets (API keys, etc.): instead, they configure secret values to be found from the environment (see https://soliplex.github.io/soliplex/config/secrets/).

If your installation configures such values to be found from the OS environment, you can create a .env file which defines them, and arrange for the file to be sourced into your environment before startin the Soliplex application.

Copy .env.example to .env and edit it to configure your values:

cp .env.example .env

Documentation

Comprehensive documentation is available in the docs/ directory:

Running with Docker

See the Docker Deployment Guide for complete instructions:

# Setup
cp .env.example .env
# Edit .env with your settings

# Run
docker-compose up

Access:

Related Repositories

License

MIT License - Copyright (c) 2025 Enfold Systems, Inc.

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

soliplex-0.51.1.tar.gz (104.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

soliplex-0.51.1-py3-none-any.whl (125.0 kB view details)

Uploaded Python 3

File details

Details for the file soliplex-0.51.1.tar.gz.

File metadata

  • Download URL: soliplex-0.51.1.tar.gz
  • Upload date:
  • Size: 104.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for soliplex-0.51.1.tar.gz
Algorithm Hash digest
SHA256 5d0cc567aaba8ef6b40d60d787bd580562cf8fb33effda9d80911ec7a3255a22
MD5 dd55d1e5b81cdc900155a66f98adb30b
BLAKE2b-256 d4771a08868eb857eb6bdce5d95073a0ed36f5eaf47e98d401685d02eb7f7041

See more details on using hashes here.

File details

Details for the file soliplex-0.51.1-py3-none-any.whl.

File metadata

  • Download URL: soliplex-0.51.1-py3-none-any.whl
  • Upload date:
  • Size: 125.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for soliplex-0.51.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1de4bc4e0d8aa0252d4fd622a4bb98149e39b9ff6ef043c88f9554f43a550ba2
MD5 bb7bea53b6f6488998d04e2a5cfee6ec
BLAKE2b-256 a361bb052f4ebe234dd10040f57e3f03a5b86ec8bd3e7dd27419be412ed8d355

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page