---
title: "Semantic vendoring keeps customized tools up to date"
date: 2026-08-06
canonical: https://solmaz.io/x/2085312986881921304/
x_url: https://x.com/onusoz/status/2085312986881921304
license: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
---

Are you still updating packages like it's 2025, and not regrafting updates from upstream?

Emacs perfected software extensibility. Now Pi, OpenClaw, Herdr, and many other are following its example

After a certain point of working with agents, one realizes that open source, personalizable and extensible tools are more powerful and useful than closed ones, like Claude Code

You can shape them to fit your workflow, your business cases however you like

In such ecosystems, extensions take a life of their own

What happens if you like someone else's extension, want to use it, but also want to modify it yourself?

You just copy it over and do whatever you want...

But if you fork it, then how will you update it?

That's where regrafting comes into picture. If upstream has changes over your modified copy, then you can just ask an LLM to carry over those changes

This is a good thing! It also protects you better against supply chain attacks, because each update has to pass through an LLM, to apply each change to the relevant place

To streamline this process in pi, I created pi-regraft, a pi extension that you can use to update your vendored in extensions

I call this "semantic vendoring". I wrote about it here: https://solmaz.io/semantic-vendoring

Repo:
