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.
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.0
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 | |
|---|---|---|---|---|
| zimi-1.14.0.tar.gz | 16.4 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| zimi-1.14.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.9 MB
Release files / zimi-1.14.0.tar.gz
| Download URL | zimi-1.14.0.tar.gz |
|---|---|
| Size | 16.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eae66924123f3c256c43ce08ee9f08e83e7cd6a19ff7067b2fe42f5f6ae778f9
|
|
BLAKE2b-256 checksum How to use checksums |
efa29881df0ae16a902cab7b2756a1ff27d31df93347d119a7a4b9842ad5e1ae
|
| 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.0-py3-none-any.whl
| Download URL | zimi-1.14.0-py3-none-any.whl |
|---|---|
| Size | 15.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
48fd1f8533231573cfc770bed7a5ad97cb65a71bf47e9ce481773540c95ffc50
|
|
BLAKE2b-256 checksum How to use checksums |
8d3bc138d95dabe292fd27043ac0b8e688ae89d57feaa13d8f6f7c43487401ac
|
| 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.0
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.