Free, open source, read-it-later app for serious readers. Distraction free. Privacy focused. Open source. Designed for knowledge workers and lifelong learners. Save articles, newsletters, and documents and read them later — focused and distraction free. Add notes and highlights. Organize your reading list the way you want and sync it across all your devices.
Deploy this app to Linode with a free $100 credit!
Omnivore is a complete, open source read-it-later solution for people who like text.
We built Omnivore because we love reading and we want it to be more social. Join us!
Every single part is fully open source! Fork it, extend it, or deploy it to your own server.
We also have a free hosted version of Omnivore at omnivore.app -- try it now!
We're building our community on Discord. Join us!
Read more about Omnivore on our blog. https://blog.omnivore.app/p/getting-started-with-omnivore
Omnivore takes advantage of some great open source software:
If you have a library you'd like to import, @davidohlin has created a tool that imports a list of CSV URLs: omnivore-import
The easiest way to get started with local development is to use docker compose up
. This will start a postgres container, our web frontend, an API server, and our content fetching microservice.
Omnivore is written in TypeScript and JavaScript.
git clone https://github.com/omnivore-app/omnivore
cd omnivore
docker compose up
This will start postgres, initialize the database, and start the web and api services.
Open http://localhost:3000 and confirm Omnivore is running
During database setup docker compose creates an account demo@omnivore.app
, password: demo
.
Go to http://localhost:3000/ in your browser and choose Continue with Email
to login.
If you want to work on just the frontend of Omnivore you can run the backend services with docker compose and the frontend locally:
docker compose up api content-fetch
cd packages/web
cp .env.template .env
yarn dev
To save pages you need to run the puppeteer-parse
service.
brew install chromium --no-quarantine
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
export CHROMIUM_PATH=`which chromium`
cd packages/puppeteer-parse
cp .env.example .env
yarn
yarn start
This will start the puppeteer-parse service on port 9090.
In your browser go to http://localhost:3000/home, click the Add Link
button,
and enter a URL such as https://blog.omnivore.app/p/getting-started-with-omnivore
.
You should see a Chromium window open and navigate to your link. When the service is done fetching your content you will see it in your library.
Omnivore was originally designed to be deployed on GCP and takes advantage of some of GCP's PaaS features. We are working to make Omnivore more portable so you can easily run the service on your own infrastructure. You can track progress here: https://github.com/omnivore-app/omnivore/issues/25
To deploy Omnivore on your own hardware you will need to deploy three dockerized services and configure access to a postgres service. To handle PDF documents you will need to configure access to a Google Cloud Storage bucket.
packages/api
- the backend API servicepackages/web
- the web frontend (can easily be deployed to vercel)packages/puppeteer-parse
- the content fetching service (can easily
be deployed as an AWS lambda or GCP Cloud Function)Additionally, you will need to run our database migrations to initialize
your database. These are dockerized and can be run with the
packages/db
service.
Omnivore and our extensions to Readability.js are under the AGPL-3.0 license.
Please login to review this project.
No reviews for this project yet.
Comments (0)
Please login to join the discussion on this project.