MahaCata

MahaCata runs AI agents on your data, and keeps a record of each run that you can check later.

An agent’s answer is only as good as what you know about how it got it. You need to know which data it read, and which version of that data. You also need the prompt, the model and each tool that it called. The data changes after the run, and so do the prompt and the model. So a month later, nobody can say for sure what the agent saw.

MahaCata answers that in three ways. First, code names its data by a name that stays the same when the data moves, and MahaCata pins the version that each run reads. Second, it runs the agent in a folder of its own, where the inputs are read-only. Third, it records each step of the run as an event, and each event holds the hash of the one before it. A later change to the record breaks that chain, so a check finds it.

When the run file names a store for runs, MahaCata commits the record and the agent’s answers there together, under the name of the run. A reviewer can then ask which runs read a file, and which version each one saw. They can also check that no one has changed an answer or the record since.

MahaCata is three Python packages that work together.

provrun depends on provevi and provcat, and provevi depends on provcat. provcat depends on neither. What MahaCata does follows one file through all three.

Start here

To do this Read
Learn the three packages together, by running an agent on a report and checking what it did The tutorial
Learn provcat alone, step by step The provcat tutorial
Learn provrun alone, step by step The provrun tutorial
Learn provevi alone, step by step The provevi tutorial
See how the three packages work together, with one example from each What MahaCata does
See what provcat does, with examples What provcat does
Run provcat on your own machine, step by step A runnable tour of provcat
See what provrun does, with examples What provrun does
Run provrun on your own machine, from one file in a store to the evidence of its runs A runnable tour of provrun
Look up provrun’s run file, library, telemetry policy and limits provrun
See what provevi does with the evidence of runs, with examples What provevi does
Run provevi on your own machine, step by step A runnable tour of provevi
Install lakeFS, etcd and the tools that the tests need, and run the tests Setup
Learn how the parts of provcat fit together Design
Learn what a write and a commit guarantee Transactions
Set up one lakeFS that keeps orgs apart A reference lakeFS target
Read why provrun is built as it is The provrun plan
Read how the evidence store will be built The provevi design and plan
Look up a class or a function Reference
Look up the provc commands, URI forms, stores and configuration The provcat reference
Look up the prove commands, the stores, the tables and the policy’s keys The provevi reference

Install

You need Python 3.13 and uv. provcat, provrun and provevi are not on PyPI, so clone the repository:

git clone https://github.com/rahuldave/MahaCata
cd MahaCata
uv sync
uv run provc --help
uv run provr --help

This site

smalldocs builds this site from the folder docs.

uv run --group docs smalldocs preview docs