Open-source project
shiyi-0x7f/o-lib avatar
shiyi-0x7f/o-lib

Olib: a Tauri desktop client for reading and downloading books, with its data layer kept private

O-lib is a free and open-source software application for PC

3,363 stars260 forksTypeScriptGPL-3.0

At a glance

What is it?
Olib is a free, GPL-3.0 licensed book desktop client built on Tauri 2, React and Rust. It ships search, an aria2 download manager, multi-account switching, a local bookshelf and OPDS sharing over the LAN, but the repository deliberately omits the code that talks to external book sources, so a clone will not build into a working app.
Who is it for?
Olib is worth adopting if you want a local, ad-free reading and download client and you are willing to write or obtain the external data-source module yourself, since the public repository ships only the shell. It is the wrong choice if you need something that builds and runs from a fresh clone, or if you cannot take on GPL-3.0 obligations for anything you distribute.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 70 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The gap Olib is trying to fill, and who it is aimed at

Olib is a desktop client for finding and reading books, not a store and not a library service. The README frames the motivation in plain terms: the author argues that access to books is often blocked by price, region or platform, and that the client exists as a free, ad-free alternative. It is explicitly a third-party client that "only provides the front-end interface", with all book data coming from external sources. That sentence defines the audience. Olib is for people who already have a source of book data and want a native desktop window around it: search by title, author or keyword, queue downloads, keep a local shelf and reading history. The repository also states that the project accepts no commercial cooperation and carries no advertising or subscription. For an engineer evaluating it, the practical question is not whether the UI is pleasant, since the README describes a Fluent-derived interface with Windows 11 Mica support, but whether the missing half of the system is something you can supply.

Tauri 2 shell, Rust core, React front end: the shape of the system

The stack is split cleanly. The application shell is Tauri 2, so the window is the system WebView and the backend is Rust. The package manifest shows React 19, react-router-dom, framer-motion, lucide-react and react-hot-toast on the front end, with Vite 7 and TypeScript 5.8 as the build toolchain. On the Rust side the README names reqwest for HTTP, rusqlite for local storage, tokio for async and axum for the embedded HTTP surface. That last dependency is what makes the LAN feature possible: the README states that local books can be shared to other devices on the same network and exposed as an OPDS catalogue, which readers such as KOReader and Jingdu Tianxia can subscribe to directly. Downloads are handled by aria2, which the README says is bundled with the package, with multi-threaded transfers and resume support. Multi-line support is a first-class concept: the client can hold several server lines, import them by subscription or manually, and run a one-click speed test. Accounts are switchable. The important architectural point is that all of this sits behind an interface boundary the repository does not include.

Installing Olib and getting a first build running

The prerequisites are Node.js 18 or newer (22 is recommended), a stable Rust toolchain, and the platform-specific Tauri system dependencies listed on Tauri's own prerequisites page. The README's development flow starts with installing the front-end dependencies and then launching the desktop shell, which runs the Vite dev server and the Tauri window together:

bash
npm install
npm run tauri dev

Before that will produce a working application, the README is explicit that the module connecting to external data sources is a separate private component and is not in the repository. It says a clone cannot be built and run out of the box, and that anyone building it must find and implement the relevant interface themselves, wiring it in as a local dependency. The README points to dev_docs/refs/ for details. If you only want to verify the front end compiles, the build script runs the TypeScript compiler and Vite:

bash
npm run build

On the Rust side, the README gives the check sequence for the backend, including the integration tests it says cover LAN and OPDS behaviour:

bash
cd src-tauri
cargo build
cargo clippy
cargo test

For a distributable package for the current platform, the README gives `npm run tauri build`. It also notes that multi-platform installers are produced by GitHub Actions and published to the Releases page, so most users will take a prebuilt artifact rather than build from source.

The private interface module is the real constraint

This is the limitation that decides whether Olib is usable for you. The README states that the implementation of specific data interfaces is hidden to prevent abuse, and that the public repository contains only the application framework and front-end interface. The consequence is stated in the same paragraph: cloning the repository does not give you a runnable build. Any evaluation that starts with `git clone` and ends with a working binary is therefore off the table unless you write the missing module or obtain it separately. That is a deliberate design choice by the author, and it is defensible for a project that depends on third-party sources it does not control, but it changes the cost profile completely. You are not adopting a finished application; you are adopting a shell plus a documented contract you have to satisfy. The README does not describe the interface shape, the authentication model or the expected response format in the main text. It only points at dev_docs/refs/. If that directory does not contain enough to implement against, the project is effectively unusable for a self-builder regardless of how complete the UI is.

How Olib differs from a Calibre-style local library manager

The nearest comparison for most engineers is Calibre, and the difference is in where the data lives. Calibre is built around a local library you own: you import files, it manages metadata, converts formats and serves them. Olib starts from a remote source instead. Its primary flow is search against external servers, then download through aria2 into a local shelf, with the shelf and favourites acting as a cache of what you pulled rather than as the system of record. The LAN and OPDS features overlap with what Calibre's content server does, and the README's OPDS support means the same readers can subscribe to either. The distinction that matters is the dependency direction: Calibre works with files you already have and needs no external service, while Olib is only as useful as the source module you connect it to. If your goal is organising a collection you already own, a local library manager is the better fit. If your goal is pulling books from a source and reading them in a native client, Olib's architecture is aimed at exactly that.

Maintenance, release cadence and what GPL-3.0 means here

The repository is not archived, and the most recent release, v3.3.1, was published on 2026-07-23, with the last push to the default branch on the same date. That is roughly two months before the date of this article, so the project is current rather than dormant, though the README does not publish a roadmap or a support policy. Versioning is handled by a script, `npm run bump`, and the package manifest currently reads 3.3.0 while the release tag is v3.3.1, so the version string in package.json and the release tag are not guaranteed to match at any given moment. Upgrade cost for end users is low: installers are built by CI and published to Releases. Upgrade cost for anyone building from source is higher, because the private module has to keep working across versions and the README gives no compatibility guarantee for it. The licence is GNU GPLv3. For a desktop application you install and use yourself, that is unremarkable. If you plan to distribute a modified build, the copyleft terms apply to the whole combined work, and the fact that part of the codebase is a private module you wrote does not change that for the parts you ship together. This is a description of the licence, not legal advice; read LICENSE and take your own counsel if distribution is planned.

Editorial conclusion

Olib is worth adopting if you want a local, ad-free reading and download client and you are willing to write or obtain the external data-source module yourself, since the public repository ships only the shell. It is the wrong choice if you need something that builds and runs from a fresh clone, or if you cannot take on GPL-3.0 obligations for anything you distribute. Before committing, check dev_docs/refs/ for the module contract, confirm that your Rust toolchain and platform Tauri prerequisites are in place, and run cargo test in src-tauri to see whether the LAN and OPDS integration tests pass on your machine.

Frequently asked questions

Can I build Olib from a fresh clone of the repository?

No. The README states that the implementation of the external data interfaces is a separate private module and is not included in the public repository, so a direct clone cannot be built and run out of the box. You have to implement the interface yourself and wire it in as a local dependency, with dev_docs/refs/ given as the place to look.

What does Olib use to download books?

The README says aria2 is bundled with the package and provides multi-threaded downloads with resume support. Download records are kept alongside the local bookshelf and favourites.

Does Olib share books over the local network?

Yes. The README states that local books can be shared to other devices on the same LAN and exposed as an OPDS catalogue, which readers such as KOReader and Jingdu Tianxia can subscribe to directly. The Rust integration tests are described as covering LAN and OPDS behaviour.

What licence is Olib released under?

The repository uses GNU GPLv3, and the README and package metadata both identify it as GPL-3.0. The project is described as non-commercial, permanently free and without advertising.

Official sources

  1. Issues
  2. License: GPL-3.0
  3. README
  4. Releases
  5. shiyi-0x7f/o-lib on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/shiyi-0x7f-o-lib.svg)](https://hysenlabs.com/projects/shiyi-0x7f-o-lib)