Personal data infrastructure framework — health, finance, journals, and AI agents
Project description
Roshni
roshni (روشنی) — "light" in Urdu
Personal data infrastructure framework for health tracking, financial planning, journal search, and AI agents.
Install
pip install roshni # Core only (config, secrets, caching)
pip install roshni[health] # + Health data collection framework
pip install roshni[fitbit] # + Fitbit collector
pip install roshni[journal-faiss] # + Journal RAG with FAISS
pip install roshni[financial-full] # + Financial calculators + market data
pip install roshni[all] # Everything
Modules
| Module | What it does | Optional dep |
|---|---|---|
core |
Config, secrets, caching, storage, LLM abstraction | (included) |
health |
Health data collection protocol + ETL base | health |
financial |
Mortgage, zakat, tax calculators, market data | financial / financial-full |
journal |
RAG-based journal search (chunking, embeddings, retrieval) | journal-faiss / journal-chroma |
agent |
AI agent framework (base agent, router, circuit breaker) | agent |
gateway |
Messaging gateway (Telegram bot framework) | gateway-telegram |
integrations |
Google Sheets, Drive, Gmail, Cloud Storage wrappers | google |
Quick Start
Configuration
from roshni.core.config import Config
config = Config(
config_file="config/config.yaml",
env_prefix="MYAPP_",
data_dir="~/.myapp-data",
)
print(config.get("llm.provider"))
Secrets Management
from roshni.core.secrets import SecretsManager, EnvProvider, YamlFileProvider
manager = SecretsManager(providers=[
EnvProvider("MYAPP_"),
YamlFileProvider("~/.myapp/secrets.yaml"),
])
api_key = manager.get("trello.api_key")
all_trello = manager.get_namespace("trello")
Financial Calculators
from roshni.financial.calculators import MortgageTerms, calculate_monthly_payment
terms = MortgageTerms(
balance=500_000,
current_rate=0.065,
is_interest_only=False,
remaining_term_years=30,
)
payment = calculate_monthly_payment(terms)
Health Data Collection
from roshni.health.collector import HealthCollector, BaseCollector
from roshni.health.models import DailyHealth
class MyCollector(BaseCollector):
name = "my_tracker"
def collect(self, start_date, end_date):
# Fetch from your data source
return [DailyHealth(date=start_date, steps=10000, sleep_hours=7.5)]
Optional Dependencies
| Extra | Installs | Use case |
|---|---|---|
health |
pandas, requests | Health data pipelines |
fitbit |
fitbit, requests-oauthlib | Fitbit API collector |
journal |
sentence-transformers, scikit-learn | Journal embeddings + search |
journal-faiss |
faiss-cpu | FAISS vector backend |
journal-chroma |
chromadb | ChromaDB vector backend |
financial |
pandas | Financial data analysis |
financial-full |
yfinance, duckdb, cvxpy | Market data + portfolio optimization |
llm |
litellm | Multi-provider LLM abstraction |
agent |
litellm | AI agent framework |
agent-langchain |
langchain, langchain-core | LangChain agent integration |
gateway-telegram |
python-telegram-bot, apscheduler | Telegram bot gateway |
google |
gspread, google-api-python-client, etc. | Google API integrations |
storage-gcs |
google-cloud-storage | GCS storage backend |
Development
git clone https://github.com/uabbasi/roshni.git
cd roshni
uv sync --extra dev
# Run tests
uv run pytest tests/
# Lint + format
uv run ruff check . --fix && uv run ruff format .
# Type check
uv run mypy src/roshni/
License
Apache 2.0
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 roshni-0.1.0.tar.gz.
File metadata
- Download URL: roshni-0.1.0.tar.gz
- Upload date:
- Size: 81.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d88fdbb7a96f93310256c81833958e0b32a50a63bb5ef3a5b91c6c4b676418fa
|
|
| MD5 |
2649db7e4e7f5d3922a27229de3a78cb
|
|
| BLAKE2b-256 |
8e31abe8ece3b674766ef2aa454a95e9dc454ea5b2e1cc5ad3c4599465bcb9ca
|
Provenance
The following attestation bundles were made for roshni-0.1.0.tar.gz:
Publisher:
publish.yml on uabbasi/roshni
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
roshni-0.1.0.tar.gz -
Subject digest:
d88fdbb7a96f93310256c81833958e0b32a50a63bb5ef3a5b91c6c4b676418fa - Sigstore transparency entry: 928466572
- Sigstore integration time:
-
Permalink:
uabbasi/roshni@ca15cf0f1cb9ec1a01e585c0194636114aa96476 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/uabbasi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ca15cf0f1cb9ec1a01e585c0194636114aa96476 -
Trigger Event:
push
-
Statement type:
File details
Details for the file roshni-0.1.0-py3-none-any.whl.
File metadata
- Download URL: roshni-0.1.0-py3-none-any.whl
- Upload date:
- Size: 80.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9a8f659d81b1eca6e443159c1fb3190836c0c971623c9ca39e3572341ae3b65
|
|
| MD5 |
9ee30d8b2f9c2b0f0880612e26d54dd3
|
|
| BLAKE2b-256 |
374f27b9a7e742250ebe7d51b02576644b02ee132a0ced75dd0b58a6c4078a69
|
Provenance
The following attestation bundles were made for roshni-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on uabbasi/roshni
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
roshni-0.1.0-py3-none-any.whl -
Subject digest:
a9a8f659d81b1eca6e443159c1fb3190836c0c971623c9ca39e3572341ae3b65 - Sigstore transparency entry: 928466573
- Sigstore integration time:
-
Permalink:
uabbasi/roshni@ca15cf0f1cb9ec1a01e585c0194636114aa96476 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/uabbasi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ca15cf0f1cb9ec1a01e585c0194636114aa96476 -
Trigger Event:
push
-
Statement type: