Skip to main content

Red Hat Oracle

AI-powered knowledge assistant for Red Hat engineering teams. Ingests GitHub/GitLab repositories, Jira issues, GitLab Pages, public web docs, and Slack conversations, indexes them in a ChromaDB vector store, and provides RAG-based chat via local or cloud LLMs.

Prerequisites

  • Python 3.11+
  • Ollama running locally (recommended LLM backend)
  • Git (for cloning source repos)

Installation

# Clone the repo
git clone git@github.com:dmzoneill/redhat-oracle.git
cd redhat-oracle

# Create a virtual environment
python3 -m venv .venv
source .venv/bin/activate

# Install in development mode (with dev dependencies)
pip install -e ".[dev]"

# Or install without dev dependencies
pip install -e .

Configuration

Copy and edit the sample config:

cp oracle.yaml ~/.config/redhat-oracle/oracle.yaml

Config files are loaded and merged in order (higher precedence wins):

  1. /etc/redhat-oracle/oracle.yaml (system)
  2. ~/.config/redhat-oracle/oracle.yaml (user)
  3. ./oracle.yaml (project)

Secrets

Tokens are never stored in config files. Set them as environment variables:

export ORACLE_GITHUB_TOKEN="ghp_..."
export ORACLE_GITLAB_TOKEN="glpat-..."
export ORACLE_SLACK_TOKEN="xoxb-..."
export ORACLE_JIRA_TOKEN="..."
export OPENAI_API_KEY="sk-..."        # optional, if using OpenAI
export ANTHROPIC_API_KEY="sk-ant-..." # optional, if using Anthropic

Usage

CLI

oracle            # Start interactive chat
oracle sync       # Sync all configured sources
oracle status     # Show index status

GUI (optional)

pip install -e ".[gui]"
oracle --gui

Development

# Run tests
make test

# Lint
make lint

# Type check
make typecheck

# Build distribution
make build

Or run commands directly:

pytest tests/
ruff check src/ tests/
mypy src/

Architecture

Module Purpose
core/config.py YAML config loading with Pydantic validation
core/sources/ Data source connectors (GitHub, GitLab, Slack, Jira, Pages, Web)
core/vectordb/ ChromaDB vector store, AST-aware chunking, change tracking
core/rag.py RAG pipeline: embed query, search, assemble context, stream LLM
core/cache.py Response caching
cli/app.py Click + prompt-toolkit + Rich terminal UI
gui/app.py PySide6 (Qt) desktop GUI

License

MIT

Release files for redhat-oracle 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for redhat-oracle 0.1.0
File Size Uploaded
redhat_oracle-0.1.0.tar.gz 86.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for redhat-oracle 0.1.0
File Interpreter ABI Platform
redhat_oracle-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 157.1 kB

Release files / redhat_oracle-0.1.0.tar.gz

Download URL redhat_oracle-0.1.0.tar.gz
Size 86.8 kB
Tags Source
SHA-256 checksum
How to use checksums
2a048e1a5d52f000d1a9afb2f5b1b20bfc6fcc12db8a81eb402da23303ffb211
BLAKE2b-256 checksum
How to use checksums
b8251a74007fb84c55b8d6379e796b72a518ad9b79c16e1782b6595ceed27555
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / redhat_oracle-0.1.0-py3-none-any.whl

Download URL redhat_oracle-0.1.0-py3-none-any.whl
Size 70.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e03cd12f61903370d39e15a48e4ed57f2d86b63b6c313eab8713d771f6b561e3
BLAKE2b-256 checksum
How to use checksums
35b4b423da312be54d51216548b4f3bdd9c5d796e00ede039b795009c33d68d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page