This release is a pre-release and may not be stable for production use.
lumis
An AI agent framework for building LLM-powered applications with multi-provider LLM support, graph-based workflows, vector storage, and NLP pipelines.
Features
- Multi-provider LLMs — Unified interface across OpenAI, Gemini, Ollama, and Perplexity with middleware support and automatic token counting
- Agents — ReAct, research, and graph-based agent architectures with event-driven lifecycle hooks
- Graph Workflows — Composable, stateful DAG execution with sync and async node support
- Embeddings — OpenAI and HuggingFace embedding backends
- Vector Storage — Chroma and FAISS vector database integrations
- NLP — Named entity recognition, summarization, semantic parsing, and coreference resolution
- Search & Tools — Web scraping, arXiv, Wikipedia, Yahoo Finance, Google Trends, and Tavily integrations
- Memory — Pluggable memory backends for stateful agent conversations
Installation
pip install lumis-ai
Optional extras
Some integrations are opt-in to keep the base install lighter:
| Extra | What it adds | Install |
|---|---|---|
spacy |
NER, fact extraction, coreference resolution | pip install lumis-ai[spacy] |
search |
arXiv, Google Trends, Yahoo Finance | pip install lumis-ai[search] |
django |
Django ORM memory backend | pip install lumis-ai[django] |
The spacy extra requires language models. After installing, download them:
python -m spacy download en_core_web_lg
python -m spacy download en_core_web_trf
Development and checks
Install uv, then run:
uv sync --locked
uv run --no-sync pytest -q
uv build
uvx twine check --strict dist/*
CI runs the tests on Python 3.11, 3.12, and 3.13 for pull requests and pushes to
main. Provider calls in the tests are mocked; no API keys are required.
Publishing a release
The PyPI distribution is lumis-ai (the Python import is lumis). Publishing
is triggered by pushing a version tag such as v0.1.1a8, not by an ordinary
commit or push to main.
One-time PyPI setup
In the project's Publishing settings, add or verify a GitHub Trusted Publisher with these values:
| Field | Value |
|---|---|
| Owner | tareksanger |
| Repository | lumis |
| Workflow filename | publish.yml |
| Environment | Leave blank; this workflow does not set one |
Trusted Publishing uses GitHub's identity token, so no PyPI token secret is needed. The values must match the workflow; see the PyPI setup guide.
Each release
-
Choose an unused version and update
project.versioninpyproject.toml. Runuv lockto update the local package version inuv.lock. -
Run the development checks above. Commit the intended release changes and push them to
main. Wait for CI to pass. -
Tag that tested commit with
vfollowed by the exact package version. For the prepared0.1.1a8release:git tag -a v0.1.1a8 -m "Release 0.1.1a8" git push origin v0.1.1a8
-
Watch Publish to PyPI in GitHub Actions. It runs tests, checks the tag against the package version, builds and validates the wheel and source archive, then publishes them.
-
Verify the release on PyPI and install it:
pip install --upgrade "lumis-ai==0.1.1a8"
Alpha versions require an explicit version or pip install --upgrade --pre lumis-ai.
Use a new version for every upload; PyPI does not allow replacing release files.
If no workflow run appears, check that the tag was pushed. If publishing reports
invalid-publisher, check the Trusted Publisher fields against the table above.
License
MIT — see LICENSE for details.
Metadata
Release files for lumis-ai 0.1.1a8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lumis_ai-0.1.1a8.tar.gz | 383.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lumis_ai-0.1.1a8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 507.8 kB
Release files / lumis_ai-0.1.1a8.tar.gz
| Download URL | lumis_ai-0.1.1a8.tar.gz |
|---|---|
| Size | 383.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0f649f5ff8cbbc7ad803f06d722a3f656aa37b72f1af20de23f5b747a628478c
|
|
BLAKE2b-256 checksum How to use checksums |
b283fb7170c48be240d10984749d43adc142cc756d961ea249600448612ee6e2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / lumis_ai-0.1.1a8-py3-none-any.whl
| Download URL | lumis_ai-0.1.1a8-py3-none-any.whl |
|---|---|
| Size | 124.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a85dd526777d210097e55e6978bc2b7a4bd17c0cdd63e29241e471f54e954ad3
|
|
BLAKE2b-256 checksum How to use checksums |
5750ba8ddd71468ba974766febac2041c682d7e423ed82ffc25503cc385f78e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|