devcat

Crates.iodevcat
lib.rsdevcat
version0.1.0
created_at2025-08-05 18:01:33.864417+00
updated_at2025-08-05 18:01:33.864417+00
descriptionA micro-version control system for your AI development loop.
homepagehttps://github.com/gni/devcat
repositoryhttps://github.com/gni/devcat
max_upload_size
id1782438
size72,676
Lucian (gni)

documentation

https://docs.rs/devcat

README

DEVCAT

A self-contained snapshot and context tool for your AI development workflow.


Overview

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.


Features

  • Snapshot & Revert: Take a snapshot of your project with a simple message. This is essential for quickly saving states during AI model tuning or prompt engineering. Later, you can jump back to any of those snapshots instantly if things go sideways.
  • Context Generation: Ever need to give an LLM a full view of a module or your entire project? DevCat concatenates all your relevant code into a single stream, ready for copy/pasting or piping. This is perfect for providing AI models with the context they need.
  • Diffing: Compare snapshots to see what changed, or check the difference between your last saved state and your current work.
  • Trace Extraction: Pipe in a stack trace from your application, and DevCat will fetch the exact code snippets from each file reference, giving you instant debugging context.
  • Auto-Watch: Let DevCat handle the saves for you. It can watch your files and automatically create snapshots when it detects changes.
  • Zero-Config: Just download it and run it. No complex setup or remote servers. It just works.

Installation

DevCat is a Rust binary. You can build it from source or grab a pre-compiled binary from the releases page.

From Source

git clone https://github.com/gni/devcat.git
cd devcat
cargo install --path .

Usage

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 log

Show 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 trace

Pipes 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 watch

Starts 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

Configuration

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/"]

Contributing

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.

Authors

Lucian BLETAN - initialized project

Commit count: 0

cargo fmt