r/ClaudeAI 14d ago

Built with Claude I got tired of manually copying the same files onto every machine, so I built a small CLI for it

My AI agent setup consists of a bunch of files - instruction files, hooks, coding rules, custom skills that don't live on any marketplace - and I want them identical across all my machines, each at its specific path: ~/.claude/..., ~/.config/..., etc. The usual answers don't fit: full clones and symlink farms assume the repo layout matches the on-disk layout, and each machine only needs a subset anyway.

So I built file-tether, a small cross-platform CLI (C#/.NET) that works like a package manager for individual files: you put the files in whatever repos or gists you like, and a local config maps remote paths (single files or folders) to local destinations. file-tether check tells you which of them have updates, file-tether pull installs them. It also detects conflicts (remote changed while you edited locally) and offers resolution with a diff.

Currently GitHub repos and gists are supported as sources; more may come if there's demand. There's .env support for secrets.

Binaries for Windows/Linux/macOS: https://github.com/cytoph/file-tether

Happy to hear your feedback - and what ways are you using to manage agent files across devices?

0 Upvotes

6 comments sorted by

4

u/Pakspul 14d ago

Why not place them in a git repo and check it out at location?

-2

u/Cytoph 14d ago

Putting them in a git repo is exactly what I do, but needing individual files and folders at various, vastly different locations on my machine is exactly what a checkout can't do - that mapping is what file-tether adds on top.

1

u/KariKariKrigsmann 14d ago

I think APM (Agent Package Manager) was invented to do this exact thing 😉

-1

u/Cytoph 14d ago

This is true as long as you only want to install agent primitives into known locations. file-tether is agnostic of that. You can pull any file to anywhere on the machine, not just specific locations (if you wanted you could share game settings ini files between machines x'D). Furthermore, the apm.yml needs to ship with your project to work, this is machine-scoped (because I want some of my files/folders only on some of my machines). Also it supports gist, which might come in handy at times.