[!IMPORTANT] This repository has been moved from its previous location at eclipse/openvsx. During the repository transfer, already released packages have not been transferred and are still accessible at their previous location to ease migration.
Releases upto
v0.32.3are accessible at ghcr.io/eclipse/openvsx-server and ghcr.io/eclipse/openvsx-webui.Releases starting from
v0.33.0are accessible at ghcr.io/eclipse-openvsx/openvsx-server and ghcr.io/eclipse-openvsx/openvsx-webui.
Open VSX is a vendor-neutral open-source alternative to the Visual Studio Marketplace. It provides a server application that manages VS Code extensions in a database, a web application similar to the VS Code Marketplace, and a command-line tool for publishing extensions similar to vsce.
A public instance of Open VSX is running at open-vsx.org. Please report issues related to that instance at EclipseFdn/open-vsx.org.
For information on publishing and managing extensions at open-vsx.org, please see the EclipseFdn/open-vsx.org wiki.
See the openvsx Wiki for documentation of general concepts and usage of this project.
Click Open Browser on port 3000 to see the running web application.
yarn prepare — generates required local version data and builds the library and ovsx commandyarn build — build the library and ovsx commandyarn watch — watch (build continuously)The command line tool is available at cli/lib/ovsx.
The default frontend is the one bundled in the Docker image, and is also used for testing in the development environment. It depends on the compiled library, so make sure to build or watch the library before you build or watch the default frontend.
yarn build — build the libraryyarn watch — watch (build continuously)yarn build:default — build the default frontend (run vite)yarn watch:default — run vite in watch modeyarn start:default — start Express to serve the frontend on port 3000yarn dev — use vite to serve the frontend in development mode on port 3000The Express server is started automatically in Gitpod. A restart is usually not necessary.
./gradlew build — build and test the server./gradlew assemble -t — build continuously (the server is restarted after every change)./gradlew runServer — start the Spring server on port 8080./scripts/test-report.sh — display test results on port 8081The Spring server is started automatically in Gitpod. It includes spring-boot-devtools which detects changes in the compiled class files and restarts the server.
If you would like to test authorization through GitHub, you need to create an OAuth app with a callback URL pointing to the exposed port 8080 of your Gitpod workspace. You can get it by calling a script:
server/scripts/callback-url.sh github
Note that the callback URL needs to be updated on GitHub whenever you create a fresh Gitpod workspace.
After you created the GitHub OAuth app, the next step is to copy the Client ID and Client Secret into Gitpod environment variables named GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET and bound to this repository. If you change the variables in a running workspace, run scripts/generate-properties.sh in the server directory to update the application properties.
With these settings in place, you should be able to log in by authorizing your OAuth app.
If you prefer to quickly get started with a local, docker-based development environment, you can use the approach described in our docker compose setup. You can use our docker compose profiles, allowing you the option to either run a service directly in a docker container or to manually build and run it on your local machine.
If you would like to test file storage via Google Cloud, follow these steps:
allUsers."*" and method "GET".GCP_PROJECT_ID and GCS_BUCKET_ID containing your GCP project and bucket identifiers. If you change the variables in a running workspace, run scripts/generate-properties.sh in the server directory to update the application properties.GOOGLE_APPLICATION_CREDENTIALS containing the path to the credentials file.If you would like to test file storage via Azure Blob, follow these steps:
openvsx-resources (a different name is possible if you change the ovsx.storage.azure.blob-container property)."*", method "GET" and allowed headers "x-market-client-id, x-market-user-id, x-client-name, x-client-version, x-machine-id, x-client-commit"AZURE_SERVICE_ENDPOINT with the "Blob service" URL of your storage account. If you change the variables in a running workspace, run scripts/generate-properties.sh in the server directory to update the application properties.AZURE_SAS_TOKEN.If you also would like to test download count via Azure Blob, follow these steps:
Monitoring -> Diagnostic settings (preview)).blob.Add diagnostic setting.StorageRead, Transaction and Archive to a storage account.Storage account.Data Storage-> Containersinsights-logs-storageread container should have been added (it might take a few minutes and you might need to do some test downloads or it won't get created).insights-logs-storageread container.insights-logs-storageread container.Settings -> Shared access tokenRead and List permissions.Data Management-> Lifecycle managementLimit blobs with filters, Block blobs and Base blobs.insights-logs-storageread/resourceId= blob prefix to limit the rule to the insights-logs-storageread container.AZURE_LOGS_SERVICE_ENDPOINT with the "Blob service" URL of your diagnostic storage account. The URL must end with a slash!AZURE_LOGS_SAS_TOKEN with the shared access token for the insights-logs-storageread container.scripts/generate-properties.sh in the server directory to update the application properties.If you would like to test file storage via Amazon S3, follow these steps:
Permissions tab.Block all public access setting.Cross-origin resource sharing (CORS) configuration:
json
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"HEAD"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": []
}
]OpenVSX supports multiple AWS authentication methods with the following precedence:
AWS_ACCESS_KEY_ID with your access key idAWS_SECRET_ACCESS_KEY with your secret access keyAWS_SESSION_TOKEN with your session token (optional, for temporary credentials)For deployments using IAM roles with web identity token authentication (such as IRSA in Kubernetes, ECS tasks with task roles, or other container orchestration platforms):
AWS_ROLE_ARN - The ARN of the IAM role to assumeAWS_WEB_IDENTITY_TOKEN_FILE - Path to the web identity token fileOpenVSX will automatically detect credentials from:
* Environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
* AWS credentials file (~/.aws/credentials)
* AWS config file (~/.aws/config)
* IAM instance profile (for EC2 instances)
* Container credentials (for ECS tasks)
Regardless of authentication method, configure these environment variables:
* AWS_REGION with your bucket region name
* AWS_SERVICE_ENDPOINT with the url of your S3 provider if not using AWS (for AWS do not set)
* AWS_BUCKET with your bucket name
* AWS_PATH_STYLE_ACCESS whether o
$ claude mcp add openvsx \
-- python -m otcore.mcp_server <graph>