vault / shells /
- +.bash_history7,912 ln
- +.zsh_history21,334 ln
- +fish_history612 ln
- +PSReadLine1,287 ln
- +nu-history.txt88 ln
- +git-bash hist2,041 ln
A new laptop is two days lost. Dotfiles, shell history, IDE settings, project notes, plugin manifests · gone. DevStash backs them up before you format and restores them after you install. Used twice per format cycle. Nothing else.
Act I · The Problem
You don't notice the dev environment until it's gone. The shell history you've been training for years. The CLAUDE.md you wrote at 2 a.m. The exact plugin order. None of it is in any cloud. None of it is on any disk image.
Act II · The Promise
The stash is the parts of your environment nothing else preserves. Shell history. Claude memory. Configs. Plugin manifests. You see every file before it's saved, and every file before it's restored.
Act III · The Product
Two modules today. Smart merge so the new machine doesn't overwrite work the old one didn't have. A web GUI so you can see what's in the vault before you trust it.
Detect, back up and restore command history across Bash, Zsh, Fish, PowerShell, Nushell and Git Bash. Merge mode appends. Overwrite mode replaces.
detect · backup · list · restore -m merge|overwrite
Backs up CLAUDE.md, settings.json, per-project MEMORY.md, reference docs, plugin manifests. Merge mode joins MEMORY.md by section heading. Credentials and sessions are never touched.
detect · backup · list · restore -m merge|overwrite
A pure HTML/CSS/JS dashboard at localhost. Browse backups, read inside zips, see commands saved per shell, vault size. No frameworks. No CDN.
dashboard · backups · explorer (incl. zip)
Every zip writes to .tmp, verifies, then renames. Backup metadata lives in a local SQLite (WAL mode). No logging, no tracking, just the data needed to find a backup later.
timestamped · verified · merge or overwrite
The Stack
Act IV · Proof
Windows users double-click and DevStash installs deps, builds, finds an open port, opens the GUI. Stop with the window or stop.bat. No PATH wrangling.
If the default port is busy, DevStash auto-increments. No "port already in use" failure mode for users who don't read the docs.
Merges per `## Section` heading. New sections from the backup are appended. Existing sections are preserved. You don't lose work the new machine has done.
SSH keys, gitconfig, VS Code extensions, dotfiles, cron, package lists, browser bookmarks, encrypted cloud sync to S3/R2/GCS. All on the GitHub roadmap, no surprise pivots.
I build small, strict tools that do one job and do it on every shell, every OS, every machine. Local-first. No cloud trap. No telemetry.