Zimi
A modern experience for your ZIM files.
Kiwix packages the world's knowledge into ZIM files. Zimi makes them feel like the real internet with a rich web UI, fast JSON API, and an MCP server for AI agents. Everything works offline, in your language.
If you ❤️ Zimi, leave a ⭐️ to help others find it.
Use as much as you need:
- Search for agents.
pip install zimi-mcpsearches and reads every ZIM over MCP. 280 KB. - A reader and library.
ZIMI_APPS=0 zimi servereads, searches and manages your ZIMs, nothing more. - The whole app. Everything below.
What it does
- Search everything. One query across every ZIM, 100M+ articles, with
-word,"exact words",OR,lang:andin:when you need them. - Apps over your library. Zimipedia for every wiki, the Dictionary for every Wiktionary, Bookshelf for every book, ZimiTube for video, ZimiExchange for Q&A, Reddot for subreddits, and offline street Maps.
- Keep what you find. Bookmarks, lists, likes and highlights in every app, synced across devices when you sign in.
- A real library. The whole Kiwix catalog one click away, even offline, with auto-updates and BitTorrent downloads that seed back.
- Make your own ZIMs. A web page, a whole site, a video playlist, a subreddit, a web archive or a folder of your files.
- Share on your network. Zimi devices find each other and pass ZIMs at LAN speed.
- Every language. Articles across languages by Wikidata ID; ten UI languages, right-to-left included; offline voices.
- For people and agents. Web app, JSON API and an MCP server. Runs on Docker, Podman, pip, macOS, Windows, Linux, or your phone as a PWA.
Screenshots
| Homepage | Search Results |
|---|---|
| Zimipedia | Bookshelf |
|---|---|
| Maps | ZimiTube |
|---|---|
| Reddot | Catalog |
|---|---|
| Sharing | Make a ZIM |
|---|---|
Install
macOS
brew tap epheterson/zimi
brew trust --tap epheterson/zimi # Homebrew 6 and later
brew install --cask zimi
Linux: sudo snap install zimi, or the AppImage (it updates itself; the window needs WebKitGTK 4.1 from your distro, otherwise Zimi opens in your browser).
Windows: the installer or portable zip from Releases.
Docker
docker run --network host -v ./zims:/zims -v ./zimi-config:/config epheterson/zimi
/zims holds your ZIM files, /config keeps settings and indexes. Open http://localhost:8899. Host networking lets LAN discovery and seeding work; for bridge mode, Compose, rootless Podman and Kubernetes see operations and networking.
Python
pip install zimi
ZIM_DIR=./zims zimi serve --port 8899
Two packages: pip install zimi is the complete experience; pip install zimi-mcp is only the MCP server and search, for AI agents (280 KB, no web app).
Most people configure nothing. Everything is in Settings; zimi config prints every effective value and where it came from, and each ZIMI_* variable is documented in the guides below.
Documentation
- Reading: search, the reader, Reader View, find in page, languages, PDFs, offline use.
- Apps: Zimipedia, Bookshelf, ZimiTube, ZimiExchange, Reddot and Maps.
- Saving: bookmarks, lists, likes, highlights, sync.
- Making ZIMs: every capture mode, folders and their metadata files, web archives.
- Saved web pages: pages saved from Firefox, Chrome and Safari (complete, single file, web archive) as a ZIM.
- Getting & sharing: the catalog, downloads, auto-update, BitTorrent, Nearby.
- Access: public access, accounts, per-ZIM allowlists, single sign-on.
- Operations: configuration, backup, air-gapped use, monitoring, updates.
- API & MCP: the JSON API (
/openapi.json), RAG chunks, the MCP server and its tools. - Project NOMAD: read NOMAD's Information Library in Zimi without copying it, and an offline research agent over the same files.
MCP server
pip install zimi-mcp
zimi-mcp /path/to/zims
{
"mcpServers": {
"zimi": { "command": "zimi-mcp", "args": ["/path/to/zims"] }
}
}
zimi-mcp is the MCP server and search alone, built from this repository and released with it. pip install "zimi[mcp]" gives the full install the same command, and zimi mcp. Three tools by default (search, read a page as Markdown, read one section), about 360 tokens of schema, sized for small local models; --tools full serves every tool. No web server is started. For Docker on another machine, run docker exec -i zimi python3 -m zimi mcp over ssh. See API & MCP for the tools and measured numbers, and the SearXNG and OpenWebUI guides.
Contributing
Issues and ideas are welcome, and every one gets answered. See CONTRIBUTING.md; security reports go privately per SECURITY.md.
License
GPL-3.0-or-later, like the Kiwix and openZIM libraries it builds on; 1.13.3 and earlier were MIT. Desktop and Docker builds bundle libtorrent-rasterbar (BSD-3-Clause), see THIRD_PARTY_NOTICES.md.
Built with ❤️ in California by @epheterson and Claude Code.
Metadata
Release files for zimi 1.14.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| zimi-1.14.1.tar.gz | 16.4 MB | Without provenance | Details for zimi-1.14.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| zimi-1.14.1-py3-none-any.whl | Python 3 | none | any | Details for zimi-1.14.1-py3-none-any.whl |
Total release size: 32.0 MB
Release files / zimi-1.14.1.tar.gz
| Download URL | zimi-1.14.1.tar.gz |
|---|---|
| Size | 16.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2252f1ae4f8350d34062f2dfd951843e0681651a062db4a2b49d01f15ecb7ec5
|
|
BLAKE2b-256 checksum How to use checksums |
87dc6471dafe95d1cdc76d8e19f07ef5524f791fb9fe290445a2a59de7b76c15
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / zimi-1.14.1-py3-none-any.whl
| Download URL | zimi-1.14.1-py3-none-any.whl |
|---|---|
| Size | 15.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
01717b47c5b84a9ce2bbaef331f99e72e55eb5756a4c14f5dfad712c16219f39
|
|
BLAKE2b-256 checksum How to use checksums |
39e9d80b05989c1b9ac1ec3b1a714c6ccfab06e6b213dc8633b0de613c3ad439
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for zimi 1.14.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.