Announcing - MutAnt: Mutable Key/Value storage (prev: Anthill)

Hey guys !

I’m really excited to share MutAnt v0.2.0 with you all! I’ve been working hard on this update, packing it with features to make storing and retrieving your mutable key-value data on the network smoother and safer.

What’s MutAnt again?
For those who haven’t seen it, MutAnt is a project I built to provide a user-friendly layer on top of Autonomi’s scratchpad storage. Think of it as your personal, private, and mutable key-value store directly on the network, accessed via a simple command-line tool (mutant) or a Rust library (mutant-lib). Store text snippets, config files, small assets – whatever bytes you need kept private and accessible!

Why I’m Excited About v0.2.0 (What’s New?)

This release tackles some of the biggest hurdles I found in previous versions, focusing heavily on reliability and user experience. The feature I’m most proud of? Resumable Uploads!

  • Never Fear Network Drops Again! (mutant put): It’s happened to me, and probably you too – you start uploading a file, the connection hiccups, and… frustration. With v0.2.0, MutAnt now cleverly saves the progress of your uploads. If it gets interrupted, simply run the same put command again, and it will pick up right where it left off, verifying data checksums to ensure nothing got corrupted. This brings massive peace of mind, especially for larger values.
  • See What’s Happening (Clearer Progress): I’ve revamped the progress indicators for commands like put and sync. Multiple detailed bars now show you exactly what’s happening under the hood – reserving space, transferring data, confirming writes, and synchronizing state. No more guessing!
  • Rock-Solid Syncing (mutant sync): Keeping your local cache aligned with the network state is crucial. The sync command is now much more robust, handling edge cases like missing remote indexes gracefully. I’ve also added a --push-force flag for situations where you need your local view to be the definitive one.
  • Storage Management Tools (mutant import, mutant purge): Got an old scratchpad lying around you want to add to your MutAnt pool? Use mutant import. Need to clean up storage attempts that got stuck? mutant purge helps tidy up pads that were reserved but failed verification.
  • Snappier Experience (Lazy Initialization): Commands that only interact with your local cache (like mutant ls or mutant stats) now start much faster, as MutAnt waits until it actually needs the network to establish a connection.
  • Squashing Bugs & Improving Stability: I’ve dug deep to fix various hangs, potential data consistency issues during concurrent operations, and improved overall error handling. Verification loops now have better timeouts and retry logic for greater resilience against temporary network issues.
  • Smarter Caching: Your local index cache is now kept separate depending on whether you’re interacting with Mainnet or a local Devnet, preventing accidental mix-ups.

Using MutAnt v0.2.0 on Mainnet - A Word of Caution

This v0.2.0 release represents a major step forward in stability and safety compared to previous versions. The resumable uploads and data integrity checks significantly reduce risks during data transfer.

However, I want to be transparent! While I’ve made great strides, the underlying logic for reserving and allocating storage space (the scratchpads) is still an area I’m actively developing and refining.

Therefore, my recommendation for mainnet usage is this:

  • Storing smaller key-value pairs, configurations, or important snippets should be considerably safer now. Go for it!
  • I’d advise exercising caution with very large files or performing a high volume of rapid put/rm operations for the time being. The allocation logic might still have edge cases under heavy load that I haven’t caught yet.
  • Stick to data where the improved reliability of the transfer process (thanks to resumable uploads) provides significant value, but where potential (though less likely now) allocation quirks wouldn’t be catastrophic.

Ready to Try It?

I’d love for you to give MutAnt v0.2.0 a spin! You can install or update easily via crates.io:

cargo install mutant --force

Or, if you build from source:

git fetch --tags
git checkout v0.2.0 # Or pull master if you prefer the latest dev changes
cargo install --path . --force

Find Out More:

I’m really excited about this release and the foundation it lays for future improvements. I hope you find MutAnt increasingly useful! Please share your experiences, report any issues you encounter on GitHub, and let me know what features you’d like to see next.

Happy Storing!

16 Likes