Private local RAG assistant for Outlook • Calendar • Jira • Confluence
Project description
jps-rag-assistant
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbc311dd4491ea1c923bc43d2c59f87beb2b5a589ac8d205dd3df463c829c043
|
|
| MD5 |
b10f465b1b14751fadb91f167f00951c
|
|
| BLAKE2b-256 |
9c50a97868b1ded53a7b3a1a232e3851844077f719cb15010133edacf8ec65a0
|
File details
Details for the file jps_rag_assistant-0.2.1-py3-none-any.whl.
File metadata
- Download URL: jps_rag_assistant-0.2.1-py3-none-any.whl
- Upload date:
- Size: 14.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
caeaab44e479cf897b40b05c6f352e10bcafc20882b427d299aa94f7e0520a44
|
|
| MD5 |
2e526dee2cc6c4716dc27cd316001ee9
|
|
| BLAKE2b-256 |
5ee0ecf7f2a7031c9df19c3579f6fd8d716e029f8876026e39a9df17fcf671fa
|