I've been working on something: the disconnect between why we make code changes and what Git actually records.
Git is brilliant at tracking text changes. But when you look at a commit history, you see diffs—lines added, lines removed. What you don't see is the developer's intent, the architectural impact, or whether that "small refactor" actually introduced a breaking change.
Introducing Smelt
Smelt is a semantic version control layer that sits on top of Git. Instead of starting with code, you start with an intent:
🔗 https://github.com/anvanster/smelt-svc
smelt intent create --goal "Add rate limiting to API endpoints"
Then you make your changes. When you commit, Smelt captures a semantic delta—not just what lines changed, but what it means:
- Functions added/removed/modified
- Breaking signature changes
- Dependency impacts
- Complexity changes
The Result? Commits that tell a story.
Add rate limiting to API endpoints
Intent: fce32c4c-434e-44bb-bcb8-b2c747756279
Delta: 5eeac27c-ed52-45c1-ab07-3517a7044a85
Semantic: +3 functions, ~2 functions, 0 breaking
Why This Matters
- For Code Review: Reviewers instantly see architectural impact, not just line counts.
- For AI Agents: Structured intents give AI assistants clear context and constraints.
- For Compliance: Audit trails that capture reasoning, not just changes.
- For Onboarding: New team members understand the "why" behind every commit.
Built for the AI Era
As AI becomes a bigger part of software development, we need version control that speaks in concepts, not just characters. Smelt includes episodic memory that learns from your development patterns and surfaces relevant past experiences when you're solving similar problems.
The code is in Rust, layers cleanly over existing Git repos, and validates changes against architectural rules before commit.
Would love to hear thoughts from others thinking about developer tooling in the AI age. What's missing from your current workflow?
End-to-End Example
Here's a complete workflow demonstrating Smelt's semantic version control:
1. Initialize Smelt in your repository
$ smelt init --wait
Initializing Smelt in "/Users/dev/my-project"...
Database created: "/Users/dev/my-project/.smelt/smelt.db"
Graph storage created: "/Users/dev/my-project/.smelt/graph"
Git hooks installed
Configuration created
Indexing repository...
Scanning files: 0 found
Indexing complete.
✓ Smelt initialized successfully!
2. Create an intent describing your goal
$ smelt intent create --goal "Add greeting message to CLI startup"
Created intent: fce32c4c
Goal: Add greeting message to CLI startup
Status: In Progress
Baseline snapshot: 8795a78d
Now make your code changes, then run smelt status to see semantic changes.
3. Make your code changes
(e.g., add a function to main.rs)
4. Check semantic status
$ smelt status
Intent: fce32c4c (Add greeting message to CLI startup)
Status: In Progress
Changed files (1):
M src/main.rs
Semantic changes:
(Computing delta from 1 files...)
Impact Summary:
Files affected: 1
5. Validate changes against architectural rules
$ smelt validate
Validating 1 changed files...
Validation Results:
==================
✅ Validation passed
6. Commit with semantic delta
$ smelt commit --intent fce32c4c
Committing intent: fce32c4c (Add greeting message to CLI startup)
Staged 1 files
Computing semantic delta...
Running validation...
Validation: passed
Creating commit...
✓ Committed: 06d0a797
Intent: fce32c4c
Delta: 5eeac27c
Files: 1 changed
The resulting git commit includes semantic metadata:
commit 06d0a797559d1791f6dc0b5dc3742897e1446e60
Author: Developer <dev@example.com>
Date: Mon Jan 26 22:23:17 2026 -0800
Add greeting message to CLI startup
Intent: fce32c4c-434e-44bb-bcb8-b2c747756279
Delta: 5eeac27c-ed52-45c1-ab07-3517a7044a85
src/main.rs | 5 +++++
1 file changed, 5 insertions(+)
Reply or DM me if this is something that looks interesting.
Top comments (0)