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.1.tar.gz (16.2 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.1-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: jps_rag_assistant-0.2.1.tar.gz
  • Upload date:
  • Size: 16.2 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.1.tar.gz
Algorithm Hash digest
SHA256 dbc311dd4491ea1c923bc43d2c59f87beb2b5a589ac8d205dd3df463c829c043
MD5 b10f465b1b14751fadb91f167f00951c
BLAKE2b-256 9c50a97868b1ded53a7b3a1a232e3851844077f719cb15010133edacf8ec65a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jps_rag_assistant-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 caeaab44e479cf897b40b05c6f352e10bcafc20882b427d299aa94f7e0520a44
MD5 2e526dee2cc6c4716dc27cd316001ee9
BLAKE2b-256 5ee0ecf7f2a7031c9df19c3579f6fd8d716e029f8876026e39a9df17fcf671fa

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