Ziplark - Free cross-platform archiver: GUI, CLI, and an MCP server

byβ€’
Ziplark is a free, open-source archiver on one small Rust engine, driven three ways: a desktop app, a CLI, and an MCP server. Reads ZIP, RAR5, 7z, tar, ISO; creates ZIP/7z/tar with AES-256. Cross-platform, zip-slip-safe, tiny. The first archiver an LLM can drive.

Add a comment

Replies

Best
Maker
πŸ“Œ
Hey Product Hunt πŸ‘‹ I built Ziplark because every archiver I reached for was either paid-with-a-nag (WinRAR), Windows-only with a 1999 UI (7-Zip), or single-platform (Keka, The Unarchiver) β€” and none of them could be driven by anything but a human clicking. So Ziplark is one small Rust engine with three front-ends over the exact same code: πŸ–₯️ Desktop app (Tauri, no bundled Chromium β€” tiny) β€” drag an archive in, extract it ⌨️ CLI β€” ziplark extract photos.zip -o ./out, with --json on everything πŸ€– MCP server β€” so an LLM/agent can list, extract, test and create archives itself It reads ZIP, RAR5, 7z, tar, ISO 9660/Joliet and every tar.* variant; creates ZIP/7z/tar with AES-256. Every extraction path goes through a single zip-slip guard, so nothing can escape the destination folder. Free, MIT, macOS / Windows / Linux. brew install --cask zhitongblog/tap/ziplark Would genuinely love feedback β€” especially from anyone wiring archives into an agent workflow. What format or integration should I add next?back β€” especially from anyone wiring archives into an agent workflow. What format or integration should I add next?

Curious how the MCP server actually handles large archives without ballooning context windows, any plans for streaming responses or chunked reads so an LLM can poke through a 10GB ISO without choking?

Maker

Β Good question β€” and it's the one thing I actually changed because of it.

Listing is paged now: ziplark_list returns at most limit entries (default 200) starting at offset, always alongside the archive's true total_entries β€” so listing a 200,000-entry ISO costs the same context as listing a small ZIP. When the result is truncated it also carries a top_level summary: entry counts grouped by directory, descending past a single root, so an agent can see the shape of a huge archive without paging through it at all. And since paging is usually the wrong move, include filters before paging (glob or substring), with a dirs flag for files-only or directories-only.

On the data side nothing is ever read into the context: extraction streams to disk, and ziplark_extract takes include + exact, so an agent pulls out exactly the two files it wants from a 10 GB archive instead of the whole thing. ziplark_test verifies by decompressing and discarding β€” no temp copy, no bytes returned.

All of that is on main now and ships in the next build. Thanks for asking the question that pushed it.

Rust-based archiver that handles weird formats without bloat, and the MCP server angle is genuinely useful for piping archives into agent workflows. Caught it zip-slip safe out of the box too, which is more than I can say for most tools I have tried.

Maker

Β Thanks β€” the zip-slip guard is the part I'm most paranoid about: it checks the entry name and what is actually on disk, so a symlink planted by an earlier entry of the same archive can't be used to redirect a later write. Since launch I found one more way through it β€” a directory entry landing where a symlink already sits, which mkdir -p happily follows out of the destination β€” so directory entries now go through the same on-disk check, in every format.