Your dev workspace, portable as a backpack.
Run one command on any Windows machine. Five minutes later your full AI-coding setup is there β same editor, same extensions, same Claude/Codex/Cursor memory, same slash commands. Walk away from your desk, open your laptop somewhere else, keep working.
After v0.2: it also keeps itself synced in the background. You stop thinking about git pull / git push entirely.
.\vibe.ps1 init # one-time setup
.\vibe.ps1 install-tasks # one-time: enable ambient auto-syncBuilt by @ProjectFlowmar (Omar Catlin) β a licensed insurance broker who codes with AI. Made for people in the same situation.
π What's new in v0.2 Β· π Lessons learned shipping this
You, if:
- You direct AI to write code rather than writing it yourself ("vibe coder")
- You work on multiple Windows machines β home desktop + travel laptop, or office PC + personal
- You use Claude Code, Codex, Cursor, Aider, openclaw, Continue, or any combination β and you're tired of re-doing your setup every time you switch
- You're an operator, solo founder, or small-biz owner who picked up coding because AI made it possible β not a career developer
You, if not:
- You only have one machine (you'll get less out of this; come back when you get a laptop)
- You're a career engineer with a polished dotfiles setup you love. Use chezmoi. It's better for you.
vibecockpit/
βββ vibe.ps1 β single entry point. Dispatches to the others.
βββ vibe-init.ps1 β asks one question, installs your stack
βββ vibe-sync.ps1 β pull + commit + push between machines
βββ vibe-scan.ps1 β AI-aware project scanner. Generates a CLAUDE.md.
βββ vibe-rewind.ps1 β time-travel your config to a past point
βββ inventory.ps1 β per-machine snapshot for diffing
βββ personas.json β 5 starter personas; add your own
βββ extensions/ β VS Code extension list per persona
βββ memory-template/ β starter memory files for new users
βββ .gitignore β whitelist: secrets cannot leak
Fresh-machine setup. Asks one question β "which persona fits you?" β then installs the right stack.
Personas in v1:
| Persona | For |
|---|---|
| AI Operator | Small-biz operators running multiple AI automations |
| Web Vibe Coder | Static sites, landing pages, marketing micro-apps |
| Solo Founder | Full-stack: backend + payments + lead capture |
| Terminal Native | "Just give me the shell, no GUI" |
| Curious Beginner | "I've never coded; install the minimum to try AI safely" |
Each persona = a different winget install list + a different VS Code extension set. Mix-and-match later, swap personas any time.
.\vibe.ps1 initPull memory + config from the other machine, commit any changes you made here, push back. The whole cross-machine workflow in one command.
.\vibe.ps1 syncPoint it at any project folder. It looks at what's there (package.json? netlify.toml? .env.example?), asks you "what are you building and what slows you down?", then writes a CLAUDE.md to the folder so any AI agent that opens it instantly knows the project.
Optionally drops a starter memory entry into your cockpit so future AI sessions across all your machines know this project exists.
.\vibe.ps1 scan C:\Users\me\my-projectYou broke something with a recent config edit? Time-travel your ~/.claude/ back to where it was.
.\vibe.ps1 rewind 1hour
.\vibe.ps1 rewind 1day
.\vibe.ps1 rewind 1week
.\vibe.ps1 rewind 2026-05-01
.\vibe.ps1 rewind list # show recent restore pointsOnly touches memory + commands + CLAUDE.md. Settings.json (which has your tokens) stays put. Reversible β git checkout HEAD puts you right back.
Snapshots this machine to inventories/<HOSTNAME>.json. Commit it. When you set up a new machine, you can diff it against this one and see exactly what's missing.
.\vibe.ps1 inventoryRegisters two Windows Scheduled Tasks per machine β turns vibe sync from a thing you remember to run into ambient infrastructure you don't think about:
- VibeCockpitSyncDaemon β every 10 min:
git pull, auto-commit anything new,git push. - VibeCockpitHealthCheck β daily at 08:00: runs
vibe test, drops aSYNC-ALERT.txtflag file if anything fails. Your PowerShell profile checks for that flag on shell open and prints a yellow warning.
.\vibe.ps1 install-tasksNo admin needed. Idempotent. Safe to re-run.
End-to-end self-test. Verifies the cockpit repo, memory + commands counts, cloud-drive credential vault junction, PowerShell profile + Bitwarden helpers. Use anytime drift is suspected.
.\vibe.ps1 testOne-time Bitwarden CLI login (uses API key, never master password in chat) + a re-unlock helper for after a reboot.
.\vibe.ps1 setup-bitwarden # one-time per machine
.\vibe.ps1 unlock-bitwarden # after reboot or 'bw lock'After this, Get-Secret OPENAI_API_KEY works from anywhere β small password-style secrets handled separately from the cloud-drive credential folder. See LESSONS.md for the routing rule.
VibeCockpit doesn't have a cloud backend. There are no servers. The "sync" is just git push/pull on your own private GitHub repo.
Setup:
- Create a private repo (suggested name:
your-name-cockpit). - Clone it into
~/.claude/on every machine you want synced. - Run
vibe syncbefore you leave a machine; runvibe syncwhen you arrive at the next one.
What gets synced:
- Memory files (
projects/*/memory/*.md) - Custom slash commands (
commands/*.md) - Root-level
CLAUDE.mdif you have one - Bootstrap scripts and machine inventories
What's never synced (the whitelist .gitignore enforces this):
settings.json(has your OAuth token).credentials.json(Anthropic OAuth)- Conversation transcripts, history, cache, statsig
- Any
.envfiles or*.key/*.pem
Running 2-3 Claude Code (or Codex / Cursor) sessions in parallel terminals works if and only if each session is in a different working directory. Claude namespaces memory by the directory you launched from β so cd ~/proj-A; claude and cd ~/proj-B; claude write to separate memory folders and never conflict.
If you start two sessions in the same working directory, they share memory and the sync-daemon will hit silent merge conflicts on MEMORY.md roughly every 10 minutes. See LESSONS.md for the full breakdown and rules.
Three tiers:
-
GitHub OAuth tokens, MCP server configs β stay machine-local in
~/.claude/settings.json(gitignored). Usegh auth loginon each machine. -
API keys for projects (Stripe, OpenAI, Telnyx, etc.) β file-based vault at
~/.openclaw/credentials/<service>.env. Symlink this folder from a cloud drive (Google Drive Desktop, OneDrive) so it auto-syncs across machines without ever entering git. -
Small password-style tokens β Bitwarden CLI.
vibe initinstallsbw; useGet-Secret <KEY_NAME>from any project to retrieve. Seevibe-setup-bitwarden.ps1(coming in v0.2) for setup.
The whitelist .gitignore prevents accidental commits of any of these.
This project does not phone home. It has no analytics. It does not check for updates against any server. It does not upload your config anywhere except the private GitHub repo you configure as the remote.
The maintainer cannot see who installs it, who uses it, or what's in your cockpit. That is by design and we will refuse PRs that change this.
- Cross-platform β currently Windows / PowerShell only. macOS + Linux is on the list as a Node CLI rewrite (
npx vibecockpit init). - GUI β no plans. The whole point is one command.
- Plugin system β maybe, if multiple people ask. For now, fork it.
- Cursor / JetBrains-specific flows β currently focused on VS Code + the CLI agents. PRs welcome.
See CONTRIBUTING.md. The bar is low β PRs that add personas, fix PowerShell quirks, or improve the README for non-engineers are immediately welcome.
I'm a licensed insurance broker. I'm an INTP. I don't write code well, but I direct AI to write code constantly β for my own business, for client work, for one-off automations. I run Claude Code on my office desktop and my Lenovo Yoga laptop, and I kept losing context every time I switched machines.
I built claude-config-sync (private) to fix it for myself. After it worked for a week, I extracted the generic parts here so anyone else in the same situation can have the same fix.
If that's you, welcome. If it helps, give the repo a star β that's the only "telemetry" I'll ever ask for.
β Omar