Skip to main content

Private local RAG assistant for Outlook • Calendar • Jira • Confluence

Project description

jps-rag-assistant

Build & Test Publish to PyPI codecov License: MIT

Your private, fully local RAG assistant — securely ingest and query your personal knowledge from:

  • Microsoft Outlook (emails + calendar)
  • Jira (your assigned & updated issues)
  • Confluence (your spaces and personal pages)

All data stays 100% on your machine. Powered by LlamaIndex + Ollama, with incremental updates and zero cloud dependency.


Features

  • Fully configuration-driven via a single YAML file
  • Incremental ingestion — only new or updated documents are re-processed
  • Concurrent loading from Outlook, Jira, and Confluence
  • Secure credentials via system keyring (no plaintext tokens)
  • Modular, clean, type-annotated, and fully tested codebase
  • Zero hard-coded values — everything (models, chunk size, timeouts, etc.) is configurable
  • Supports macOS, Windows, and Linux

Install Llama and Ollama

pip install llama-index llama-index-embeddings-nomic llama-index-llms-ollama \
llama-index-vector-stores-chroma chromadb chainlit \
atlassian-python-api msal jira keyring

Retrieve llama3.1:8b for testing

# for testing
ollama pull llama3.1:8b    

# or mixtral, or llama3.1:405b if you have the VRAM
ollama pull llama3.1:70b   

# one of the best open-source embedding models available, especially for local/private use
ollama pull nomic-embed-text

Example Usage

# First time only — store your credentials securely
keyring set jira dude@msn.com          # Paste your Jira Personal Access Token
keyring set confluence dude@msn.com    # Paste your Confluence OAuth2 bearer token

# First time: Set up Outlook Graph API auth (one-time)
keyring set outlook-graph dude@msn.com_client_id     YOUR_CLIENT_ID
keyring set outlook-graph dude@msn.com_client_secret YOUR_CLIENT_SECRET
keyring set outlook-graph dude@msn.com_tenant_id     common

# Run ingestion (uses ~/.config/jps-rag-assistant/config.yaml by default)
jps-rag-assistant-ingest

# Or specify a custom config
jps-rag-assistant-ingest --config-file /path/to/my-config.yaml

After the first run, the vector store is persisted to ~/.jps-rag-assistant/ and will be incrementally updated on subsequent runs.

Installation

# Clone and install in editable mode (recommended for development)
git clone https://github.com/jai-python3/jps-rag-assistant.git
cd jps-rag-assistant
make install    # runs: pip install -e ".[dev]"

Or install directly from GitHub:

pip install git+https://github.com/jai-python3/jps-rag-assistant.git

Headless Linux servers (or CI/CD environments) On Linux systems without a graphical desktop (e.g. Ubuntu servers, Docker, GitHub Actions), avoid GUI-dependent keyring backends:

pip install -e ".[keyring-minimal]"
# or
pip install git+https://github.com/jai-python3/jps-rag-assistant.git#egg=jps-rag-assistant[keyring-minimal]

This installs only the appropriate keyring backend:

secretstorage on Linux x86_64 (uses GNOME Keyring or KDE Wallet if available, falls back to file) Native backends on macOS and Windows Prevents errors like No recommended backend was available

Configuration

Place your config at:

~/.config/jps-rag-assistant/config.yaml

Example (with real defaults):

---
ollama:
  model: llama3.1:70b
  embedding: nomic-embed-text
  request_timeout: 300

outlook:
  folder_names:
    - Inbox
    - Sent Items
  calendar:
    days: 180

jira:
  base_url: https://your-company.atlassian.net
  email: dude@msn.com
  days: 90

confluence:
  base_url: https://your-company.atlassian.net/wiki
  space_keys:
    - SoftwareEngineering
    - "~jsundaram"

vector_store:
  show_progress: true
  persist_dir: ~/.jps-rag-assistant

chunking:
  chunk_size: 512
  chunk_overlap: 50

Development

# Format, lint, and fix
make fix
make format
make lint

Run tests with coverage

make test

Pre-commit hooks are included — just run pre-commit install.

License

MIT License © Jaideep Sundaram

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

jps_rag_assistant-0.2.2.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

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

jps_rag_assistant-0.2.2-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file jps_rag_assistant-0.2.2.tar.gz.

File metadata

  • Download URL: jps_rag_assistant-0.2.2.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for jps_rag_assistant-0.2.2.tar.gz
Algorithm Hash digest
SHA256 7d0050a06539410b6e71b206ac69a16968c8ddf30c524c30fbe3ed0d6c619246
MD5 cf8d6fb080f82d0776828ea6c9ca0681
BLAKE2b-256 dc476244d55397638e5c4acc164730d477b7afb11294b60b87497c0b1dcd0c50

See more details on using hashes here.

File details

Details for the file jps_rag_assistant-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for jps_rag_assistant-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1980e0c26bd4ef33a66b7e1be586fb8d7331462a461ffe646a986b76e879396d
MD5 781e5c49661677db3c2c98de2bb37a29
BLAKE2b-256 43944757bd280d7de55f1582dc0f999f1290c91836ea74a353f20c5a0080249f

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