OpenBooks

Search and download ebooks from IRC Highway

E-books & Media Library ★ 2.4k stars Easy setup GPL-3.0

OpenBooks is a lightweight web application for searching and downloading ebooks from the IRC Highway network. It provides a simple browser interface in front of the IRC ebook search system.

Key features

  • Ebook search via IRC
  • Simple web interface
  • Single binary deployment
  • Direct downloads

Pros & cons

Strengths

  • Very easy to run
  • Lightweight

Trade-offs

  • Depends on IRC sources
  • Not a library manager

OpenBooks replaces

Last reviewed Sep 13, 2026 · 804 words

OpenBooks is a web front-end for the #ebooks channel on the IRC Highway network, and nothing more. You type a title or author, it sends the search command to the channel's bots on your behalf, parses the results file that comes back, and lets you click a line to request a file that arrives by DCC transfer. Anyone who has used that channel by hand knows why a 2,402-star Go project exists to wrap it: the manual process is a 1990s ritual involving a zip file of search results and a wall of bot syntax. The legal position of what those bots serve is on you, not on the software, and I will not pretend otherwise. What follows is how it works and what to put around it.

What it does and does not do

It does: connect to IRC Highway with a nickname you choose, search, show results grouped by server bot and format, download the file you pick, and hand it to your browser or keep it on disk. It has a small, clean interface that works on a phone.

It does not: manage a library, convert formats, fetch metadata, track what you have read, or talk to a Kindle. The catalogue's "not a library manager" note is the key line. OpenBooks is a downloader. Everything after the download is another tool's job.

Running it: one binary, two flags that matter

The Go binary has no database, no config file and uses about 128 MB at most. The Docker image is the usual route:

services:
  openbooks:
    image: evanbuss/openbooks:latest
    command: ["--name", "pick-something-unique", "--persist"]
    ports:
      - "8080:80"
    volumes:
      - ./books:/books
    restart: unless-stopped

--name is the IRC nickname and it must be unique on the network; two people with the same nick collide and the second is refused. Use something random rather than your username. --persist keeps downloaded files on the mounted volume instead of serving them once and deleting them, which is what you want if a library manager is going to pick them up. Open port 8080 and the UI shows a search box and a connection status.

The IRC rules will get you banned if you ignore them

This is the part that trips up people used to normal web services. IRC Highway limits connections per IP, and the channel's bots enforce their own etiquette: a server that connects, disconnects and reconnects every few minutes, as a container in a restart loop will, gets the IP banned for hours or days. So do not run two OpenBooks instances from one address, do not put it behind a health check that restarts it on a slow response, and do not expose it publicly so that strangers hammer the channel through your IP. Searches also take 10 to 30 seconds because the results come back as a file from a bot, not from an API. The delay is the network, not the software.

The dependency is the risk, too. If IRC Highway changes its rules, or the channel's bots go quiet, OpenBooks has nothing to fall back on. It has held up for years, but treat it as a convenience, not infrastructure.

Where it fits in an ebook stack

On its own it produces a folder of EPUB and MOBI files. The useful setup points that folder at a library manager. Calibre-Web with its automated-ingest fork watches a directory, imports anything new into a Calibre library with metadata, and serves it to browsers and e-readers over OPDS. Kavita does the same job with a reading-progress focus if you also have comics. Either way OpenBooks is the intake, the library app is the shelf, and the books volume above is the handoff between them.

If you would rather have wanted books arrive without searching at all, Readarr and LazyLibrarian run wishlists against Usenet and torrent indexers. That is a different pipeline with different legal exposure and more moving parts, which is why some people prefer the deliberate, one-search-at-a-time nature of OpenBooks. The whole field is in the ebooks category.

What I'd do

Run OpenBooks only on a LAN or behind a VPN, never on a public hostname, with --persist writing into the ingest folder of a Calibre-Web instance. One instance per public IP, a unique nickname, and no automated restarts. Use it for out-of-print and public-domain material and make your own decision about the rest; the tool takes no position and neither does this page beyond noting that the position exists. For a household that reads a lot and already runs Calibre-Web, it is a 5-minute addition that removes the last reason to open an IRC client.

Compare OpenBooks

1 head-to-head comparisons.

Similar e-books & media library apps