https://github.com/pair-code/lumi
Lumi uses AI-powered features to help you read arXiv papers.
https://github.com/pair-code/lumi
ai arxiv arxiv-papers demo-app gemini-api reading reading-comprehension research-paper
Last synced: 5 months ago
JSON representation
Lumi uses AI-powered features to help you read arXiv papers.
- Host: GitHub
- URL: https://github.com/pair-code/lumi
- Owner: PAIR-code
- License: apache-2.0
- Created: 2025-07-11T23:29:42.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-08-29T20:21:29.000Z (6 months ago)
- Last Synced: 2025-08-29T21:43:54.110Z (6 months ago)
- Topics: ai, arxiv, arxiv-papers, demo-app, gemini-api, reading, reading-comprehension, research-paper
- Language: TypeScript
- Homepage:
- Size: 8.68 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Lumi
Lumi is a web app with AI-powered features to help you quickly read and understand [arXiv](https://arxiv.org/) papers. Features include:
- ✏️ **AI-augmented annotations** - summaries at multiple granularities
- 🔖 **Smart highlights** - highlight text + ask questions
- 🖼️ **Explain figures** - ask Lumi about images in the paper

## Ask Lumi questions
Select text or click an image to ask Lumi questions:
|  |  |
| :--------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------: |
## Running Locally
### Set up Firebase functions and emulators
Follow instructions in
[`functions/README.md`](https://github.com/PAIR-code/lumi/tree/main/functions)
to install relevant dependencies and run local emulators.
### Start frontend web app
```bash
cd frontend # If navigating from top level
npm install # Only run once
# Create an index.html file and (optionally) replace the placeholder
# analytics ID (see TODOs in example file) with your Google Analytics ID
cp index.example.html index.html
# Create a firebase_config.ts file and replace the placeholder.
cp firebase_config.example.ts firebase_config.ts
npm run start
```
Then, view the app at http://localhost:4201.
### Storybook Stories
To view [Storybook](https://storybook.js.org/docs) stories for Lumi:
```
npm run storybook
```
Then, view the stories at http://localhost:6006.
### Local paper import and debugging
The import script in `scripts/import_papers_local.py` can be used to import a
set of papers for local debugging.
The locally imported papers can be rendered in `lumi_doc.stories.ts`
via Storybook.
## Deploying the app
To deploy the web app via App Engine, add an
[app.yaml](https://cloud.google.com/appengine/docs/standard/reference/app-yaml?tab=node.js)
configuration and
[set your Google Cloud project](https://cloud.google.com/sdk/gcloud/reference/config/set).
```bash
npm run deploy:prod
```
To deploy the Firebase cloud functions, see functions/README.md.
## License and Disclaimer
All software is licensed under the Apache License, Version 2.0 (Apache 2.0).
You may not use this file except in compliance with the Apache 2.0 license.
You may obtain a copy of the Apache 2.0 license at:
https://www.apache.org/licenses/LICENSE-2.0.
Unless required by applicable law or agreed to in writing, all software and
materials distributed here under the Apache 2.0 licenses are distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied. See the licenses for the specific language governing permissions and
limitations under those licenses.
This is not an official Google product.
Lumi is a research project under active development by a small
team. If you have suggestions or feedback, feel free to
[submit an issue](https://github.com/pair-code/lumi/issues).
Copyright 2025 DeepMind Technologies Limited.
## Acknowledgments
Lumi was designed and built by Ellen Jiang, Vivian Tsai, and Nada Hussein.
Special thanks to Andy Coenen, James Wexler, Tianchang He, Mahima Pushkarna, Michael Xieyang Liu, Alejandra Molina, Aaron Donsbach, Martin Wattenberg, Fernanda Viégas, Michael Terry, and Lucas Dixon for making this experiment possible!