A comprehensive platform for managing and synchronizing VS Code extensions across multiple machines and teams.
This project is under active development. See our GitHub Projects board for current progress and roadmap.
- π Profile Management: Create and manage multiple extension profiles
- π Cross-Machine Sync: Keep your extensions synchronized across all your development machines
- π₯ Team Collaboration: Share extension profiles with your team
- π Extension Analytics: Track extension usage and optimize your setup
- π Smart Recommendations: Get intelligent extension suggestions based on your workspace
- π― Bulk Operations: Install, uninstall, and manage extensions in batches
- π Conflict Detection: Identify and resolve extension conflicts automatically
- π Secure Sync: End-to-end encrypted synchronization of your extension data
DevTools Sync consists of three main components:
- Agent (Go): CLI tool that runs on developer workstations to manage local VS Code extensions
- Server (Go): Backend API that handles authentication, profile storage, and synchronization
- Dashboard (React): Web interface for managing profiles, teams, and viewing analytics
# Install the agent
curl -fsSL https://raw.githubusercontent.com/mark-chris/devtools-sync/main/install.sh | sh
# Initialize and login
devtools-sync init
devtools-sync login
# Save your current extensions to a profile
devtools-sync profile save my-setup
# Sync to the server
devtools-sync sync push
# On another machine, pull your profile
devtools-sync sync pull
devtools-sync profile load my-setupVisit the dashboard at https://devtools-sync.example.com to:
- Browse and manage your extension profiles
- Create and manage teams
- View extension usage analytics
- Search and discover new extensions
macOS/Linux:
curl -fsSL https://raw.githubusercontent.com/mark-chris/devtools-sync/main/install.sh | shWindows (PowerShell):
iwr -useb https://raw.githubusercontent.com/mark-chris/devtools-sync/main/install.ps1 | iexFrom Source:
git clone https://github.com/mark-chris/devtools-sync.git
cd devtools-sync/agent
go build -o devtools-sync-agent ./cmdSee the deployment guide for instructions on hosting your own DevTools Sync server.
# Save current extensions to a new profile
devtools-sync profile save work-setup
# List all profiles
devtools-sync profile list
# Compare a profile with currently installed extensions
devtools-sync profile diff work-setup
# Load a profile
devtools-sync profile load work-setup
# Show profile details
devtools-sync profile show work-setup
# Delete a profile
devtools-sync profile delete old-setup- Validation: Profiles are validated to ensure extension IDs follow the correct format (publisher.name)
- Conflict Detection: Automatically detects which extensions are already installed vs. need to be installed
- Diff Command: Preview what would change before loading a profile
- Idempotent Loading: Loading a profile multiple times won't reinstall already installed extensions
- Save-Diff-Load Workflow: Compare profiles before applying them to avoid unexpected changes
# Save your current setup
devtools-sync profile save my-setup
# On another machine, check what would be installed
devtools-sync profile diff my-setup
# Output shows:
# To Install (5): new extensions that will be installed
# Already Installed (3): extensions you already have
# Load the profile (only installs missing extensions)
devtools-sync profile load my-setup
# Skips already installed extensions automatically# Login (stores token securely in system keychain)
devtools-sync login
# Or with flags:
devtools-sync login --email user@example.com --password mypassword
# Logout (removes stored credentials)
devtools-sync logoutSync commands require authentication. Run devtools-sync login first.
# Push local profiles to server
devtools-sync sync push
# Pull profiles from server
devtools-sync sync pull
# Auto-sync (watches for changes)
devtools-sync sync auto# Share a profile with your team
devtools-sync team share my-profile team-name
# Load a team profile
devtools-sync team load team-profile
# List team profiles
devtools-sync team list# Install extensions from a profile
devtools-sync install my-profile
# Search for extensions
devtools-sync search "python"
# Get recommendations
devtools-sync recommendConfiguration is stored in ~/.devtools-sync/config.yaml:
server:
url: https://devtools-sync.example.com
api_key: your-api-key
sync:
auto_sync: false
interval: 300 # seconds
profiles:
default: work-setup
logging:
level: info
file: ~/.devtools-sync/logs/agent.logAuthentication tokens are stored securely in your system's native keychain:
- Linux: libsecret (GNOME Keyring, KWallet)
- macOS: macOS Keychain
- Windows: Windows Credential Manager
The client automatically retries failed requests with exponential backoff:
- Max retries: 3 (4 total attempts)
- Initial delay: 1 second
- Backoff factor: 2x (1s, 2s, 4s)
- Jitter: +/-10% randomization
- Retries on: network errors, HTTP 429/502/503/504
See development.md for detailed development setup instructions.
# Clone the repository
git clone https://github.com/mark-chris/devtools-sync.git
cd devtools-sync
# Start PostgreSQL
docker compose -f docker-compose.dev.yml up -d postgres
# Terminal 1: Run the server
cd server
go run ./cmd serve
# Terminal 2: Run the dashboard
cd dashboard
npm install
npm run dev
# Terminal 3: Build the agent
cd agent
go build -o bin/devtools-sync-agent ./cmd# Run all tests
make test
# Run tests for a specific component
cd agent && go test ./...
cd server && go test ./...
cd dashboard && npm test- API Reference
- Architecture Overview
- Development Guide
- Deployment Guide
- Contributing Guidelines
- Security Policy
We welcome contributions! Please see CONTRIBUTING.md for details on:
- Code of Conduct
- Development setup
- Submitting pull requests
- Coding standards
- Testing requirements
MIT License - see LICENSE.md for details.
- π Documentation
- π Issue Tracker
- π¬ Discussions
- π§ Email: support@devtools-sync.example.com
Built with β€οΈ for the developer community.
Note: This tool is not affiliated with or endorsed by Microsoft or Visual Studio Code.