Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>BullseyeSyncNew to Visual Studio Code? Get it now.
BullseyeSync

BullseyeSync

Karish911

|
3 installs
| (1) | Free
Frictionless VS Code config and dotfiles sync via private git repo. Automatic, customizable, and cross-platform.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

BullseyeSync

Everything VS Code's built-in Settings Sync does — plus the things it doesn't. Same seven resources (settings, keybindings, extensions list, snippets, tasks, MCP, UI state), backed by a private GitHub repo you own.

What you also get over native sync:

  • Full git history — every change is a real commit you can diff, revert, or cherry-pick.
  • Conflict resolution — when two machines edit the same file, you get the native VS Code merge editor instead of silent loss.
  • Optional extras — opt-in folders for AI tools (Claude, Copilot, Gemini), dev tools (gitconfig, gh CLI, starship, ssh config), and dotfiles. Off by default; pick what you want.
  • You own the repo — no Anthropic / Microsoft / third-party servers in the loop.

Quick start

  1. Install the extension.
  2. Click the BullseyeSync icon in the Activity Bar (left rail) and hit Set up BullseyeSync.
  3. The setup wizard opens:
    • Step 1 — Sign in with GitHub. Same OS-native prompt Copilot uses. No tokens to paste.
    • Step 2 — What to sync. Checkboxes for VS Code resources plus any AI/dev tool configs the extension detected on this machine. Also offers to turn off VS Code's built-in Settings Sync (it conflicts with this extension).
    • Step 3 — Done. Initial push runs automatically.
  4. On a second machine: install the extension, open the wizard, sign in with the same GitHub account. The wizard finds your existing vscode-bullseye-sync repo and pulls down your config.

That's it. From here on the extension syncs whenever you save a watched file. No polling, no cron, no schedule to think about. The status bar shows sync state; the Sync now button forces a manual push+pull whenever you want.

Where things live

  • Activity Bar — BullseyeSync icon → Sync, re-run Setup, open repo, open local folder, view logs.
  • Status bar (bottom right) — sync status indicator + Sync / Repo / Folder buttons.
  • Output panel — View → Output → BullseyeSync shows every push/pull and any errors.

Commands

Command Purpose
BullseyeSync: Set up Run the setup wizard (also re-runnable anytime to change what you sync).
BullseyeSync: Clone setup from repo On a new machine, restore config from your existing sync repo.
BullseyeSync: Sync now Manual flush — push local changes, pull remote changes.
BullseyeSync: Open sync repo Open your GitHub sync repo in the browser.
BullseyeSync: Open local repo folder Reveal the local clone in your file explorer.
BullseyeSync: Status Open the status webview (watchers, recent activity).
BullseyeSync: Add path to sync / Remove path from sync Manage extra folders.
BullseyeSync: Resolve conflicts Open queued conflicts in the merge editor.
BullseyeSync: Pause / Resume Temporarily halt auto-sync.
BullseyeSync: Show output log Reveal the BullseyeSync output channel.

Settings

Only the settings you'll ever care about are visible in the Settings UI. Internal knobs (file-watcher backend, debounce, anti-thrash) are still editable via settings.json but hidden from the UI to keep things clean.

Setting Purpose
bullseyeSync.repository.url Read-only. The GitHub repo your config is synced to. Set by the wizard.
bullseyeSync.machineId Read-only. Unique device tag used in commit messages and backup branches.
bullseyeSync.editor.profiles Which VS Code profiles to sync.
bullseyeSync.editor.resources What to sync within each profile (settings, keybindings, extensions, snippets, tasks, mcp, uiState).
bullseyeSync.editor.keybindingsPerPlatform Keep separate keybindings per OS.
bullseyeSync.conflicts.defaultAction On conflict: prompt, local-wins, or remote-wins.
bullseyeSync.notification.level all / conflicts-only (default) / silent.
bullseyeSync.ignoredSettings Setting keys to never sync (machine-specific paths, etc.).
bullseyeSync.ignoredExtensions Extension IDs to never sync.

How it works

AutoSyncDaemon
  ├─ FileWatchers (chokidar; polling fallback)
  └─ SyncEngine
       ├─ snapshot()   local → repo
       ├─ restore()    repo → local
       ├─ autoMerge()  JSONC-aware AST diff + text diff3
       └─ ConflictQueue (native merge editor)
  • Pure file-watch. A save in any watched path triggers a debounced push (5 seconds default — hardcoded, no UI knob). No polling, no cron.
  • Sync now is the only way to pull from remote between events. (Most people only need it when they sit down at a new machine.)
  • Auth goes through VS Code's built-in GitHub authentication provider — the same one Copilot and GitHub PRs use. No PATs to paste, no tokens to manage. The token is fetched fresh on every git operation and never stored in settings.

Repo layout

manifest.yml
editor/profiles/<profile>/{settings.json, keybindings.json, tasks.json, mcp.json, snippets/, extensions.yml}
dirs/<id>/...
refs/heads/backup/<machineId>/<timestamp>

License

MIT.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft