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.0.tar.gz (7.9 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.0-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: jps_rag_assistant-0.2.0.tar.gz
  • Upload date:
  • Size: 7.9 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.0.tar.gz
Algorithm Hash digest
SHA256 bb92284bde9dad6a902964af2c0e80e04d81f9496c7ade2622ac4b7d00fb8e6d
MD5 02b34103418ce6364df09ff850bdee2a
BLAKE2b-256 8856eae3d8e94503f189453702728e63949d3a98bb3ca25d69e3cf8efe0811ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jps_rag_assistant-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2a7f454dc69a61c474bcba8565f20009157bb9e5a2e03c61dfb5e7901d58d6ba
MD5 9b7539b7b2fc54ab752ae3797917a1b7
BLAKE2b-256 c13babad1a1431b031a491a42fc38c893bbaa50a94551007eeaf70d4b145ccbb

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