| Crates.io | devcat |
| lib.rs | devcat |
| version | 0.1.0 |
| created_at | 2025-08-05 18:01:33.864417+00 |
| updated_at | 2025-08-05 18:01:33.864417+00 |
| description | A micro-version control system for your AI development loop. |
| homepage | https://github.com/gni/devcat |
| repository | https://github.com/gni/devcat |
| max_upload_size | |
| id | 1782438 |
| size | 72,676 |
A self-contained snapshot and context tool for your AI development workflow.
We've all been there. You're deep in an LLM project or machine learning development, juggling code, prompts, and a chaotic mess of trial-and-error. Git feels too heavy for these quick, experimental loops. Your terminal history is a graveyard of forgotten commands, and your text editor is a minefield of unsaved changes.
That's why I made DevCat. It's a micro-version control system built for how we actually work. No branches, no commits, just instant, clean snapshots of your project. It's a lifesaver when you need to quickly save a good state, revert to a previous version, or grab a full code context to feed back to an AI model. DevCat gets out of your way and gives you a fighting chance in the wild world of AI development.
DevCat is a Rust binary. You can build it from source or grab a pre-compiled binary from the releases page.
git clone https://github.com/gni/devcat.git
cd devcat
cargo install --path .
Here’s a quick rundown of the essential commands.
devcat save <message>Save a new snapshot of the current project state.
# Save your current progress
devcat save "refactored the prompt engineering logic"
# Save a snapshot but exclude the 'data' folder
devcat save "experimenting with new data loaders" --exclude 'data/'
devcat logShow a history of all saved snapshots.
devcat log
Output:
ID TIMESTAMP MESSAGE
--- ---------------------- --------------------------------------------------
1 2025-08-04 17:01:44 Initial commit
2 2025-08-04 17:05:21 Refactored the core loop
3 2025-08-04 17:12:03 Implemented new AI logic
devcat (Default Cat)This is the default command. It concatenates all files in the current directory (or a specified path) into a single output. It's perfect for giving context to an LLM.
# Send all files in the current directory to your LLM
devcat | pbcopy
# Concatenate files from a specific module
devcat ./src/my_module
devcat --id <id>Concatenate all files from a specific snapshot.
# Re-run a prompt with the state from snapshot 2
devcat --id 2 | some_llm_cli "debug this"
devcat diff <id1> [id2]Show the differences between two snapshots or between a snapshot and your current working directory.
# Compare the latest snapshot with your current work
devcat diff
devcat revert <id>Revert the working directory to the state of a specific snapshot.
# Revert to a stable state
devcat revert 2
devcat tracePipes in a stack trace and outputs the referenced code snippets.
# Get context for a Python stack trace
python my_script.py 2>&1 | devcat trace
devcat watchStarts a file watcher that automatically creates a new snapshot whenever files are changed.
# Don't think about it, just code. DevCat will handle the snapshots.
devcat watch
For now, DevCat is mostly plug-and-play. If you want to permanently exclude files or directories, you can create a .devcatrc file in the root of your project.
.devcatrc# Exclude the 'target' and 'node_modules' directories globally
exclude = ["target/", "node_modules/"]
DevCat is an open-source project. If you have an idea, a bug report, or a feature request, feel free to open an issue or submit a pull request.
Lucian BLETAN - initialized project