Persistent .llm directories that survive git worktrees.
Centralize project context. Symlink everywhere.
You use .llm/ folders to store design docs, PRDs, and AI context for your projects. But they're gitignored — so when a git worktree is deleted, the .llm/ folder goes with it. LLM fixes this by centralizing .llm content in ~/llm/ and symlinking into projects.
- 📂 Centralized store — all
.llmcontent lives under~/llm/, mirroring your project paths - 🔗 Symlink management —
.llmin each project points to the central store - 🔄 Worktree-safe — worktrees come and go, your context stays
- 📦 Auto-migration — existing
.llm/directories are moved on init - 🌳 Multi-checkout — multiple checkouts can share the same
.llmstore - 🔍 Interactive linking — pick existing projects via fzf
Requires Go 1.21+ and optionally fzf for interactive project selection.
git clone https://github.com/shadowfax92/llm.git
cd llm
make install # builds and copies to $GOBIN# 1. Initialize a project (migrates existing .llm if present)
cd ~/code/my-project
llm init
# 2. Check status
llm
# .llm → ~/llm/code/my-project
# 6 files, 3 dirs
# 3. In another checkout, link to the same store
cd ~/code/my-project-worktree
llm link code/my-project
# 4. List all managed projects
llm ls~/code/my-project/.llm → ~/llm/code/my-project/
~/code/my-project-v2/.llm → ~/llm/code/my-project/ (shared)
llm init takes the current directory's path relative to $HOME and creates a matching directory under ~/llm/. If a real .llm/ folder already exists, its content is moved to the central store. A symlink replaces it.
llm link points .llm at an existing project in the store — useful for multiple checkouts of the same repo, or git worktrees that should share context.
A registry at ~/llm/.projects tracks all managed projects.
llm # show .llm status for current directory
llm init # centralize .llm and create symlink
llm link # pick existing project via fzf, link to it
llm link <project> # link directly (e.g. in grove setup commands)
llm ls # list all managed projectsAdd llm link to your grove repo setup commands so worktrees automatically get the symlink:
repos:
- path: ~/code/my-project
name: my-project
setup:
- llm link code/my-projectBuilt to pair with grove and a workflow where AI agents generate design context in
.llm/folders.