The IDE Proxy is a lightweight component in Gitpod that serves static assets related to IDEs, including IDE logos, binaries, and configuration files. It acts as a centralized service for delivering IDE-related static content to other components of the Gitpod platform, particularly the dashboard and workspaces.
The primary purposes of the IDE Proxy component are:
- Serve static IDE-related assets (logos, icons, etc.)
- Provide a centralized location for IDE binaries and downloads
- Serve the Gitpod Local Companion application binaries
- Proxy requests to the blobserve component for IDE-related content
- Provide metrics endpoints for IDE usage
- Implement proper caching and security headers for static content
- Serve VS Code marketplace extension information
The IDE Proxy is built on Caddy, a modern web server with automatic HTTPS capabilities. It consists of several key components:
- Static File Server: Serves static files like IDE logos and binaries
- Proxy Rules: Routes specific requests to other services like blobserve
- Security Headers: Implements security policies for served content
- Caching Configuration: Optimizes content delivery with appropriate caching
- Health Checks: Provides endpoints for monitoring system health
Dockerfile
: Builds the IDE Proxy container imageconf/Caddyfile
: Main configuration file for the Caddy serverstatic/image/ide-logo/
: Contains SVG logos for various IDEsstatic/bin/
: Contains binaries for Gitpod Local Companion (added during build)static/code/
: Contains VS Code marketplace information (added during build)
The component serves SVG logos for various IDEs:
- VS Code (standard and Insiders)
- JetBrains IDEs:
- IntelliJ IDEA
- GoLand
- PyCharm
- PhpStorm
- RubyMine
- WebStorm
- Rider
- CLion
- RustRover
- Terminal
The component serves binaries for:
- Gitpod Local Companion for various platforms:
- Linux (x86_64)
- macOS (x86_64)
- Windows (x86_64)
The IDE Proxy implements several routing rules:
- Static Content: Serves files from the
/www
directory with appropriate headers - Blobserve Proxy: Routes
/blobserve/*
requests to the blobserve service - Binary Assets: Serves binary files with appropriate content-type and disposition headers
- Metrics: Routes metrics-related requests to the ide-metrics service
- Health Checks: Provides
/live
and/ready
endpoints for health monitoring
The IDE Proxy is configured through the Caddyfile, which includes:
- HTTP Strict Transport Security (HSTS)
- Content-Type Options
- Content Security Policy
- Referrer Policy
- XSS Protection
- Long-term caching for static assets (1 year)
- Short-term caching for binary assets (10 minutes)
- Supports gzip and zstd compression for efficient content delivery
blobserve
: For serving IDE-related blob contentide-metrics
: For metrics collectionlocal-app
: For Gitpod Local Companion binaries
- Caddy web server
- OpenVSX marketplace data
The IDE Proxy integrates with:
- Dashboard: Provides IDE logos and information for the UI
- Blobserve: Proxies requests to blobserve for IDE content
- IDE Metrics: Routes metrics requests to the metrics service
- Local App: Serves the Gitpod Local Companion binaries
- Implements comprehensive security headers
- Ensures proper content-type for binary downloads
- Configures appropriate CORS headers for cross-origin requests
- Removes server identification headers
The IDE Proxy is typically used to:
- Serve IDE logos for the dashboard UI
- Provide downloadable binaries for Gitpod Local Companion
- Proxy requests to blobserve for IDE-related content
- Serve VS Code marketplace extension information
- Collect and expose IDE usage metrics
- IDE: Provides the IDE binaries and assets
- IDE Service: Resolves IDE requirements
- Blobserve: Serves blob content that may be proxied through IDE Proxy
- Dashboard: Consumes IDE logos and information
- IDE Metrics: Collects and processes IDE usage metrics