Skip to content

Latest commit

ย 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ VSCode Rebel - Extension Manager for Code-Server & VSCode Forks

License: MIT Shell Script OpenVSX

Breaking Free from Microsoft's Marketplace Restrictions
A declarative extension management solution for code-server, Gitpod, and other VS Code forks that can't access the official Microsoft marketplace.

๐ŸŽฏ Why VSCode Rebel?

Microsoft has blocked access to their extension marketplace for VS Code forks like code-server, forcing developers to manually manage extensions or go without their favorite tools. VSCode Rebel solves this by:

  • ๐Ÿ”„ Declarative Management: Define your extensions in YAML, let the script handle the rest
  • ๐ŸŒ Open VSX Integration: Automatically fetches latest versions from the open-source registry
  • ๐Ÿงน Clean Environment: Removes unwanted extensions automatically
  • ๐Ÿ“ฆ URL Installation: Install extensions directly from Open VSX URLs
  • ๐Ÿš€ Always Current: Keeps extensions updated to their latest versions

๐Ÿ› ๏ธ Features

  • Zero-maintenance extension management - Set it and forget it
  • Automatic updates - Always uses the latest available versions
  • Cleanup automation - Removes extensions not in your desired list
  • URL-based installation - Add extensions directly from Open VSX URLs
  • Cross-platform compatibility - Works on Linux, macOS, and Windows (WSL)
  • Robust error handling - Gracefully handles network issues and missing extensions
  • API-based version detection - Reliable version checking using Open VSX REST API

๐Ÿ“‹ Prerequisites

  • Bash shell (4.0+ recommended)
  • curl - for downloading extensions and API calls
  • yq - for YAML parsing (automatically installed if missing)
  • code-server or compatible VS Code fork
  • jq (optional) - for better JSON parsing

๐Ÿš€ Quick Start

  1. Clone the repository:

    git clone https://github.com/yourusername/vscode-rebel.git
    cd vscode-rebel
  2. Make the script executable:

    chmod +x manage_extensions.sh
  3. Edit your extensions list:

    nano extensions.yaml
  4. Run the manager:

    ./manage_extensions.sh

๐Ÿ“ Configuration

Extension List (extensions.yaml)

Define your desired extensions using a simple YAML format:

extensions:
  - id: Anthropic.claude-code
    version: latest
  - id: ms-python.python
    version: latest
  - id: esbenp.prettier-vscode
    version: latest
  - id: bradlc.vscode-tailwindcss
    version: latest
  # Add more extensions as needed

Pro Tip: Use version: latest for automatic updates, or specify a version like version: 1.0.0 for pinned versions.

Script Configuration

Edit the configuration section in manage_extensions.sh:

# --- Configuration ---
CODE_SERVER_PATH="/usr/lib/code-server/lib/vscode/bin/remote-cli/code-server"
EXTENSIONS_DIR="/root/.local/share/code-server/extensions"
TEMP_DIR="/tmp/code-server-ext-updates"
YAML_FILES_PATTERN="*.yaml"

๐ŸŽฎ Usage

Basic Usage

# Process all extensions from YAML files
./manage_extensions.sh

# Show help
./manage_extensions.sh --help

URL Mode

Install extensions directly from Open VSX URLs:

./manage_extensions.sh "https://open-vsx.org/api/publisher/extension/version/file/publisher.extension-version.vsix"

Example:

./manage_extensions.sh "https://open-vsx.org/api/Anthropic/claude-code/1.0.29/file/Anthropic.claude-code-1.0.29.vsix"

This will:

  1. Extract the extension ID and version from the URL
  2. Add it to your extensions.yaml file
  3. Download and install the extension

Automation

Set up a cron job to keep extensions updated:

# Edit crontab
crontab -e

# Add this line to check for updates daily at 2 AM
0 2 * * * /path/to/vscode-rebel/manage_extensions.sh > /tmp/extension-updates.log 2>&1

๐Ÿ”ง Advanced Usage

Custom YAML Files

The script processes all *.yaml files in the current directory. You can organize extensions by project:

project-a-extensions.yaml
project-b-extensions.yaml
shared-extensions.yaml

Environment Variables

Override default paths using environment variables:

export CODE_SERVER_PATH="/custom/path/to/code-server"
export EXTENSIONS_DIR="/custom/extensions/directory"
./manage_extensions.sh

Debugging

Enable verbose output for troubleshooting:

set -x
./manage_extensions.sh

๐ŸŒŸ How It Works

  1. Reads Configuration: Parses all *.yaml files for desired extensions
  2. Scans Installed: Checks currently installed extensions in your VS Code fork
  3. Fetches Latest Versions: Uses Open VSX REST API to get current versions
  4. Performs Updates: Downloads and installs outdated extensions
  5. Cleanup: Removes extensions not in your desired list
  6. Reports Results: Shows what was updated, installed, or removed

๐Ÿ” Troubleshooting

Common Issues

Extensions not installing:

  • Check if the extension exists on Open VSX
  • Verify your CODE_SERVER_PATH is correct
  • Ensure you have write permissions to the extensions directory

YAML parsing errors:

  • Install yq: apt install yq or brew install yq
  • Verify YAML syntax using an online validator

Network issues:

  • Check internet connectivity
  • Verify Open VSX is accessible: curl -s https://open-vsx.org/api/ms-python/python

Getting Help

  1. Check the Issues page
  2. Enable debug mode: set -x before running the script
  3. Share logs when reporting issues

๐Ÿค Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes
  4. Test thoroughly
  5. Commit your changes: git commit -m 'Add amazing feature'
  6. Push to the branch: git push origin feature/amazing-feature
  7. Open a Pull Request

Development Setup

git clone https://github.com/yourusername/vscode-rebel.git
cd vscode-rebel
chmod +x manage_extensions.sh

# Test your changes
./manage_extensions.sh --help

๐Ÿ“Š Compatibility

Platform Status Notes
Linux โœ… Tested Primary development platform
macOS โœ… Compatible Requires Homebrew for dependencies
Windows WSL โœ… Compatible Use WSL2 for best performance
code-server โœ… Tested Primary target platform
Gitpod โœ… Compatible Works with Gitpod workspaces
Theia โš ๏ธ Experimental May require path adjustments

๐Ÿ“ˆ Roadmap

  • GUI Interface - Web-based management dashboard
  • Extension Profiles - Different extension sets for different projects
  • Backup/Restore - Export and import extension configurations
  • Team Sharing - Share extension configurations across teams
  • Docker Integration - Pre-built containers with popular extension sets
  • Metrics Dashboard - Track extension usage and updates

๐Ÿ™ Acknowledgments

  • Open VSX Registry - The open-source extension registry
  • code-server - VS Code in the browser
  • Gitpod - Cloud development environments
  • The VS Code community for creating amazing extensions

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ”— Links


Made with โค๏ธ by developers, for developers who refuse to be limited by corporate restrictions.

"If you can't access the marketplace, become the marketplace."

About

Manage VS Code extensions: list/compare/export/import across profiles and machines

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages