Deploy On Digitalocean
Deploying and Optimizing Xget on DigitalOcean
Xget itself is shipped as a container image, so it fits very naturally into
DigitalOcean’s ecosystem (Droplets, App Platform, Kubernetes, and Container
Registry).
This guide explains how to run Xget efficiently on DigitalOcean and how to
design a simple, robust acceleration layer for your team.
1. Which DigitalOcean product should I use for Xget?
Depending on your scale and operations model, you can pick one of these typical
setups:
| Scenario | Recommended option | Characteristics |
| ------------------------------------------- | ------------------------------ | ------------------------------------------------------------------- |
| Personal / small team, simple traffic | Droplet + Docker Compose | Lowest cost, closest to the official self-hosting examples |
| Small / mid-size team, prefer fully managed | App Platform (container mode) | Automatic HTTPS, deployments, and autoscaling |
| Large team / enterprise, complex traffic | DigitalOcean Kubernetes (DOKS) | Most flexible; supports fine-grained scaling and rollout strategies |
You can also use DigitalOcean Container Registry (DOCR) for your own Xget builds
or to host business images that Xget will accelerate.
2. Option 1: Droplet + Docker Compose (closest to "plain" self-hosting)
2.1 Prerequisites
1. Create a Droplet
- Recommended OS: Ubuntu 22.04 / 24.04 LTS.
- Size suggestions:
- Personal / small team: 1 vCPU / 1–2 GB RAM to start with.
- High concurrent downloads: prefer Premium Intel/AMD or CPU-Optimized
Droplets.
- Region: pick a region close to your main users or to upstream services
(e.g., GitHub, GHCR, DOCR).
2. Configure DNS
In DigitalOcean DNS, create a record, for example:
- xget.example.com → your Droplet’s public IP address.
3. Install Docker & Docker Compose (example on Ubuntu)
# Update system
sudo apt update && sudo apt upgrade -y # Install dependencies
sudo apt install -y ca-certificates curl gnupg
# Docker’s official GPG key and repo
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Allow current user to run docker without sudo (optional)
sudo usermod -aG docker $USER
Log out and back in so group changes take effect.
2.2 Deploy Xget using Docker Compose
Based on the self-hosting examples in the Xget README, it’s recommended to
manage the container via Docker Compose.
1. Create a directory and docker-compose.yml:
mkdir -p ~/xget && cd ~/xget
# docker-compose.yml
version: '3.8' services:
xget:
image: ghcr.io/xixu-me/xget:latest
container_name: xget
# Bind only to 127.0.0.1; expose via reverse proxy
ports:
- '127.0.0.1:8080:8080'
restart: unless-stopped
2. Bring up the service:
docker compose up -d Now Xget is running inside the Droplet on 127.0.0.1:8080.
2.3 Expose HTTPS via nginx + Let’s Encrypt
Instead of exposing port 8080 directly, run nginx on the Droplet as a reverse
proxy with HTTPS.
1. Install nginx and Certbot:
sudo apt install -y nginx certbot python3-certbot-nginx2. Request a certificate (example: xget.example.com):
sudo certbot --nginx -d xget.example.com3. Configure reverse proxy
Certbot will create a server block for you. You can adapt/add configuration
like:
server {
listen 80;
server_name xget.example.com;
return 301 https://$host$request_uri;
} server {
listen 443 ssl http2;
server_name xget.example.com;
# ssl_certificate / ssl_certificate_key and related settings
# are usually injected by Certbot automatically.
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Longer timeouts for big downloads
proxy_read_timeout 600s;
proxy_send_timeout 600s;
}
}
4. Reload nginx:
sudo nginx -t
sudo systemctl reload nginxNow users can access Xget via https://xget.example.com through nginx → Xget
container.
2.4 Harden security with DigitalOcean Cloud Firewall
To reduce attack surface and abuse risk:
- In Cloud Firewalls:
- Allow inbound only: 22 (SSH), 80 (HTTP) and 443 (HTTPS).
- Do _not_ expose 8080 to the public Internet.
- If needed, further restrict:
- Only allow company office IP ranges or CI/CD nodes.
- Combine with a VPN or other gateway if you need more control.
3. Option 2: DigitalOcean App Platform (fully managed)
App Platform can run Xget directly from a container image or source code repo.
It handles load balancing, TLS, and autoscaling for you, which is great if you
don’t want to manage servers.
3.1 Basic flow
1. Prepare the container image
Two common options:
- Use the official image: ghcr.io/xixu-me/xget:latest
- Or mirror/rebuild Xget into DOCR if you want a private registry or faster
internal pulls.
2. Create an App
In the DigitalOcean control panel:
- Create new App → choose "Container".
- Source:
- DigitalOcean Container Registry _or_
- an external image (ghcr.io/xixu-me/xget:latest).
- Set the internal listening port to 8080.
3. Configure routing
- Map external path / to the Xget service.
- Bind your domain (e.g. xget.example.com) to the app and enable automatic
HTTPS.
4. Scaling
- In the Scaling section, set minimum number of instances, e.g. 2 replicas
for high availability.
- Configure autoscaling based on CPU / memory usage.
3.2 Pros and caveats
- Pros
- No OS or Docker maintenance.
- Built-in TLS / certificate management.
- Simple scaling and deployment UX.
- Caveats
- Xget is sensitive to large download traffic: you should monitor bandwidth
and outbound data transfer costs.
- For advanced network control (VPC-only access, strict firewall rules),
combine App Platform with Cloud Firewall and VPC.
4. Option 3: DigitalOcean Kubernetes (DOKS)
When you need multiple replicas, blue-green deployments, or fine-grained rollout
strategies, run Xget on DOKS as a standard Deployment.
4.1 Example Deployment & Service
Note: the health check path below uses /. If your build of Xget exposes adedicated health endpoint, adjust accordingly.
apiVersion: apps/v1
kind: Deployment
metadata:
name: xget
spec:
replicas: 2
selector:
matchLabels:
app: xget
template:
metadata:
labels:
app: xget
spec:
containers:
- name: xget
image: ghcr.io/xixu-me/xget:latest
ports:
- containerPort: 8080
resources:
requests:
cpu: '250m'
memory: '256Mi'
limits:
cpu: '1'
memory: '512Mi'
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 30
periodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
name: xget
spec:
selector:
app: xget
ports:
- port: 80
targetPort: 8080
type: LoadBalancer- type: LoadBalancer will automatically create a DigitalOcean Load Balancer
and assign a public IP.
- Point xget.example.com to the Load Balancer IP in your DNS.
If you are using an Ingress Controller (nginx Ingress, Traefik, etc.), you can
change the service type to ClusterIP and configure Ingress + cert-manager for
Let’s Encrypt.
5. Using DOCR + Xget as an image accelerator
Xget can act as a registry accelerator for multiple container registries,
including DigitalOcean Container Registry (DOCR). The typical pattern is:
- Original: https://registry.digitalocean.com/...
- Through Xget: https://<your Xget domain>/cr/digitalocean/...
5.1 Example: accelerate DOCR pulls
Suppose your DOCR image is:
registry.digitalocean.com/my-registry/my-image:latestYou can convert it to:
https://xget.example.com/cr/digitalocean/my-registry/my-image:latestThis is especially useful for scripting, diagnostic, or advanced caching setups
around DOCR.
5.2 Using Xget as a pull accelerator (daemon.json idea)
In some environments you can configure Docker / containerd to use Xget as a
registry mirror. For example, in /etc/docker/daemon.json:
{
"registry-mirrors": ["https://xget.example.com/cr/digitalocean"]
}Note: Support for non–Docker Hub mirrors depends on the Docker/containerd
version and configuration. Treat this as a pattern; always verify behavior in
your own environment.
6. Using Xget on DigitalOcean to accelerate AI inference and dev dependencies
Xget also supports API acceleration for multiple AI inference providers (e.g.,
OpenAI, Anthropic, Gemini) through URL conversions such as ip/<provider>.
Once Xget is deployed on DigitalOcean, simply replace the public demo domain in
examples with your own domain:
.env example
OPENAI_BASE_URL=https://xget.example.com/ip/openai
ANTHROPIC_BASE_URL=https://xget.example.com/ip/anthropic
GEMINI_BASE_URL=https://xget.example.com/ip/geminiThen in your code (Python + OpenAI SDK):
import os
from openai import OpenAIclient = OpenAI(
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_BASE_URL"),
)
If your CI/CD pipelines or backend services also run on DigitalOcean (Droplets,
App Platform, DOKS), they can access Xget very close in network topology,
reducing latency and cross-region hops.
7. Monitoring, logging, and cost optimization
1. Monitoring
- Droplet: Install the DigitalOcean Monitoring Agent to track CPU,
memory, and bandwidth.
- App Platform / DOKS: Use the built-in metrics views and alerts.
- At the application level, you can inspect Xget’s response headers (e.g.,
performance metrics) to understand cache hits and upstream delays if Xget
exposes such information in your setup.
2. Logging
- Use docker logs or kubectl logs to inspect Xget container logs.
- Aggregate nginx / Ingress logs plus Xget logs into a centralized stack
(ELK, Loki, etc.) for easier debugging.
3. Cost optimization
- Start with a smaller Droplet or the lowest App Platform plan, then scale
based on real traffic.
- For very high outbound traffic, focus on:
- Improving cache hit ratio.
- Avoiding redundant upstream requests.
- Choose regions that balance:
- End-user latency.
- Upstream connectivity quality (e.g., to GitHub, DOCR, AI providers).
8. Security and abuse prevention
Because Xget is fundamentally a high-performance HTTP / Git / container registry
proxy, you need to be careful about abuse:
- Do not expose a completely open, unauthenticated Xget service to the entire
public Internet if you don’t fully understand the risk.
- Recommended mitigations:
- Restrict access to trusted IP ranges (office network, VPN, CI/CD nodes).
- Add authentication at the reverse proxy or gateway layer (e.g., Basic Auth,
token-based, or JWT).
- Configure reasonable timeouts and concurrency limits to reduce the impact of
misuse and protect upstreams.
With these patterns, you can deploy Xget on DigitalOcean using Droplets, App
Platform, or Kubernetes, and combine it with DOCR, DNS, and firewalls to build a
unified, robust acceleration layer for repositories, container images, and AI
inference traffic.
---
CONTRIBUTING
Contributing to Xget
Thank you for helping improve Xget. Contributions of all sizes are welcome,
including bug reports, documentation improvements, test coverage, performance
investigations, new platform support, and code changes.
Before you contribute, please read these repository documents:
- README for project scope, supported platforms, and deployment
options
- Code of Conduct for community expectations
- Security Policy for responsible vulnerability reporting
- Governance for maintainer roles and decision-making
Ways to contribute
- Report bugs with a minimal reproduction and clear expected behavior
- Propose features that improve correctness, usability, observability, or
maintainability
- Improve documentation, examples, or deployment guidance
- Add or expand automated tests
- Validate behavior against real clients, registries, or upstream platforms
Before opening an issue
- Search existing issues and pull requests first to avoid duplicates
- Keep one report focused on one problem or one proposal
- Include enough detail for someone else to reproduce the issue
- Do not use public issues for security vulnerabilities; follow
SECURITY.md instead
Useful details to include:
- The request URL or request shape that failed, with secrets removed
- The upstream platform involved, such as GitHub, npm, Docker Hub, or OpenAI
- Expected behavior and actual behavior
- Steps to reproduce the problem
- Logs, screenshots, or response headers when relevant
- Your runtime or deployment environment, if it affects the issue
Development setup
Xget uses Node.js and Wrangler for local development.
1. Install Node.js 24 and npm.
2. Install dependencies with npm ci.
3. Start the local worker with npm run dev.
4. Run tests and checks before opening a pull request.
Common commands:
npm run dev
npm run lint
npm run format:check
npm run test:run
npm run test:coverage
npm run type-checkRepository layout
- src/ contains the Worker entry point, request pipeline, protocol handlers,
routing logic, upstream fetch helpers, and shared utilities
- test/ contains unit, feature, platform, and integration tests
- adapters/ contains deployment adapters for non-Workers targets
- docs/ contains longer-form operational and deployment documentation
Pull request workflow
1. Fork the repository and create a branch from main.
2. Keep the change focused. Avoid mixing unrelated fixes.
3. Add or update tests when behavior changes.
4. Update documentation when user-facing behavior, configuration, or supported
platforms change.
5. Run the local checks listed below before requesting review.
6. Open a pull request using the repository template and explain the user impact
clearly.
Required local checks:
npm run lint
npm run format:check
npm run test:run
npm run type-checkIf your change affects routing, headers, cache behavior, retries, security
controls, or protocol compatibility, include test coverage for that behavior.
Coding expectations
- Follow the existing project structure and naming conventions
- Prefer small, reviewable changes over large mixed refactors
- Preserve protocol compatibility for Git, Docker, AI, and package manager
traffic
- Avoid logging secrets, tokens, or private request data
- Document new platform prefixes and examples in README.md when
support is added
Commit messages
This repository uses
Conventional Commits.
Preferred format:
type(scope): descriptionExamples:
- feat(docker): normalize blob redirect handling
- fix(routing): preserve crates search queries
- docs(readme): clarify npm registry setup
Review and release expectations
- Maintainers review contributions on a best-effort basis
- Large design changes should start with an issue before implementation
- Merged changes may be edited, squashed, or followed up by maintainers to keep
the project consistent
- Acceptance of a contribution does not create an obligation for long-term
support, backports, or maintenance
Community standards
By participating in this project, you agree to followCODE_OF_CONDUCT.md. Please be respectful, assume good
intent, and help keep the project welcoming for users and contributors from a
wide range of backgrounds and experience levels.
---
README
<div align="center">
Xget 🚀
<a href="https://trendshift.io/repositories/14768" target="_blank"><img src="https://trendshift.io/api/badge/repositories/14768" alt="xixu-me%2FXget | Trendshift" width="250" height="55"/></a>
[](https://zread.ai/xixu-me/Xget)
[](https://deepwiki.com/xixu-me/xget)
[](https://codecov.io/github/xixu-me/xget)
[](#ecosystem-integration)
[](#ecosystem-integration)
[](#deploy-to-cloudflare-workers)
[](#deploy-to-edgeone-pages)
[](#deploy-to-vercel)
[](#deploy-to-netlify)
[](#deploy-to-deno-deploy)
[](#self-hosted-deployment)
[](#self-hosted-deployment)
</div>
An ultra-high-performance, secure, all-in-one acceleration engine for developer
resources. It provides unified, efficient acceleration for code hosting, model
and dataset hubs, package registries, container registries, AI inference
providers, and more, while handling caching, retries, security headers, and
protocol-specific compatibility behavior for you.
Technical deep dive:
_Deep Dive into Xget: A High-Performance, Multi-Protocol, and Secure Acceleration Engine for Developer Resources_.
Xget was invited onto GitCode and
recognized as a G-Star graduation project. As "a widely used public project",
it receives support from OpenAI's
Codex for Open Source
and has also been spontaneously recommended by several tech creators, including
Ruan Yifeng,
GitHubDaily,
FishC, and
Xuanli 199. Thanks to every
individual, team, and community that supports, shares, recommends, or actively
uses Xget.
Supported Platforms
The badges below point to the relevant usage or deployment sections in this
README.
[](#github)
[](#gitlab)
[](#gitea)
[](#codeberg)
[](#sourceforge)
[](#aosp-android-open-source-project)
[](#hugging-face-mirror)
[](#civitai-ai-model-platform)
[](#npm-package-acceleration)
[](#python-package-acceleration)
[](#conda-package-acceleration)
[](#maven-package-acceleration)
[](#apache-software-download-acceleration)
[](#gradle-package-acceleration)
[](#homebrew-package-acceleration)
[](#ruby-package-acceleration)
[](#r-package-acceleration)
[](#perl-package-acceleration)
[](#texlatex-package-acceleration)
[](#go-module-acceleration)
[](#nuget-package-acceleration)
[](#rust-package-acceleration)
[](#php-package-acceleration)
[](#flathub-repository-mirror)
[](#debianubuntu-apt-configuration)
[](#debianubuntu-apt-configuration)
[](#fedora-dnf-configuration)
[](#rocky-linux-dnf-configuration)
[](#opensuse-zypper-configuration)
[](#arch-linux-pacman-configuration)
[](#arxiv-paper-download)
[](#f-droid-repository-mirror)
[](#jenkins-plugin-download)
[](#container-registries)
[](#ai-inference-providers)
Quick Start
Pre-deployed Instance: xget.xi-xu.me - For evaluation and trial only,
deploy your own instance for production or availability-sensitive workloads
If you self-host it, put it behind authentication, IP allowlists,
or both unless you explicitly intend to run a public mirror.
URL Converter: xuc.xi-xu.me - Convert any
supported platform URL to Xget's acceleration format with one click
Agent Skills: npx skills add xixu-me/skills -s xget
Why Xget
Performance-Oriented Design
- Global Edge Runtime: Built on Cloudflare Workers and designed to run
close to users and upstream services
- Protocol-Aware Handling: Supports HTTP/3, range requests, Git traffic,
container registry flows, and AI inference APIs
- Cache and Retry Pipeline: Includes edge caching for compatible
responses, retry logic for transient upstream failures, and request
normalization for supported platforms
- Connection Reuse: Uses standard HTTP connection reuse and keep-alive
behavior where the runtime and upstream allow it
- Request Timing Visibility: Can expose timing data through
X-Performance-Metrics headers where protocol compatibility allows
Deep Multi-Platform Integration
- All-in-One Multi-Platform Support: Unified support for mainstream
platforms in various development scenarios
- Intelligent Recognition and Conversion: Automatically recognizes platform
prefixes and converts to correct URL structures for target platforms
- Consistent Acceleration Experience: Enjoy unified and stable ultra-fast
download experience regardless of file type or source
Enterprise-Grade Security
- Multi-Layer Security Headers:
- Strict-Transport-Security: Enforces HTTPS transmission, prevents
man-in-the-middle attacks
- X-Frame-Options: DENY: Prevents clickjacking attacks
- Content-Security-Policy: Strict content security policy
- Referrer-Policy: Controls referrer information leakage
- Permissions-Policy: Restricts privacy-sensitive browser features by
default
- X-XSS-Protection: Legacy compatibility header for older browsers
- Request Validation Mechanism:
- HTTP method whitelist: Regular requests limited to GET/HEAD, while Git/LFS,
container registry, AI inference, and Hugging Face API traffic allow POST,
PUT, PATCH, and DELETE as needed
- Path length limit: Prevents excessively long URL attacks (max 2048
characters)
- Input sanitization: Prevents path traversal and injection attacks
- Timeout Protection: 30-second request timeout, prevents resource
exhaustion and malicious requests
Modern Architecture and Reliability
- Intelligent Retry Mechanism:
- Maximum 3 retries with linear delay strategy (1000ms × retry count)
- Automatic error recovery, improved download success rate
- Timeout detection and interruption handling
- Efficient Caching Strategy:
- Strategy-based cache durations keep mutable metadata fresh while caching
immutable artifacts longer
- Git operations skip caching to ensure real-time data
- Edge caching based on Cloudflare Cache API and Cloudflare fetch cache
controls
- Performance Monitoring System:
- Built-in PerformanceMonitor class for real-time tracking of request stage
durations
- Detailed performance data provided via X-Performance-Metrics response
header
- Cache hit rate statistics and optimization recommendations
Full Git Protocol Compatibility
- Smart Protocol Detection:
- Automatically recognizes Git-specific endpoints (/info/refs,
/git-upload-pack, /git-receive-pack)
- Detects Git client User-Agent patterns
- Supports query parameters like service=git-upload-pack
- Complete Operation Support:
- git clone: Full repository cloning, supports shallow clones and branch
specification
- git push: Code push and branch management
- git pull/fetch: Incremental updates and remote synchronization
- git submodule: Recursive submodule cloning
- Protocol Optimization:
- Preserves Git-specific request headers and authentication information
- Smart User-Agent handling (default git/2.34.1)
- Supports Git LFS large file transfer
Ecosystem Integration
- Dedicated Browser Extension:
Xget Now provides seamless experience
- Automatic URL redirection, no manual URL modification needed
- Support for custom Xget instance domains
- Multi-platform preference settings and blacklist/whitelist management
- Local processing ensures privacy and security
- Download Tool Compatibility: Perfect support for wget, cURL, aria2, IDM,
and other mainstream download tools
- CI/CD Integration: Can be used directly in GitHub Actions, GitLab CI, and
other environments
Architecture
Request Processing Flow
graph TD
Request[User Request / User-Agent] --> Identify{Identify Platform}
Identify -->|Invalid| Error[Return Error]
Identify -->|Valid| Transform[Transform Path] Transform --> CheckProtocol{Check Protocol}
CheckProtocol -->|Git| GitHandler[Git Protocol Adapter]
CheckProtocol -->|Docker| DockerHandler[Docker Protocol Adapter]
CheckProtocol -->|AI| AIHandler[AI Inference Adapter]
CheckProtocol -->|Standard| StdHandler[Standard Adapter]
GitHandler --> Upstream[Fetch Upstream]
DockerHandler --> Upstream
AIHandler --> Upstream
StdHandler --> CacheCheck{Check Cache}
CacheCheck -->|Hit| ReturnCache[Return Cached Response]
CacheCheck -->|Miss| Upstream
Upstream -->|Success| ProcessResponse[Process Response]
Upstream -->|Failure| Retry{Retry?}
Retry -->|Yes| Wait["Wait (Backoff)"] --> Upstream
Retry -->|No| Error
ProcessResponse --> Finalize[Add Headers & Return]
Finalize --> Response[Response]
Component Architecture
classDiagram
class Worker {
+fetch(request)
}
class AppHandler {
+handleRequest(request, env, ctx)
}
class PlatformCatalog {
+PLATFORM_CATALOG
}
class PlatformRouting {
+transformPath()
+resolveTarget()
}
class Validation {
+validateRequest()
+isDockerRequest()
}
class GitProtocol {
+configureGitHeaders()
+isGitRequest()
}
class DockerProtocol {
+handleDockerAuth()
+fetchToken()
}
class AIProtocol {
+configureAIHeaders()
}
class UpstreamPipeline {
+tryReadCachedResponse()
+fetchUpstreamResponse()
}
class ResponsePipeline {
+finalizeResponse()
}
class Security {
+addSecurityHeaders()
}
class Performance {
+monitor()
} Worker --> AppHandler
AppHandler --> PlatformCatalog
AppHandler --> PlatformRouting
AppHandler --> Validation
AppHandler --> GitProtocol
AppHandler --> DockerProtocol
AppHandler --> AIProtocol
AppHandler --> UpstreamPipeline
AppHandler --> ResponsePipeline
AppHandler --> Security
AppHandler --> Performance
PlatformRouting --> PlatformCatalog
URL Conversion Rules
Using the pre-deployed instance xget.xi-xu.me or your own deployed
instance, simply replace the domain and add the platform prefix:
Conversion Format
| Platform | Platform Prefix | Original URL Format | Accelerated URL Format |
| ---------------------- | --------------- | -------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| GitHub | gh | https://github.com/... | https://xget.xi-xu.me/gh/... |
| GitHub Gist | gist | https://gist.github.com/... | https://xget.xi-xu.me/gist/... |
| GitLab | gl | https://gitlab.com/... | https://xget.xi-xu.me/gl/... |
| Gitea | gitea | https://gitea.com/... | https://xget.xi-xu.me/gitea/... |
| Codeberg | codeberg | https://codeberg.org/... | https://xget.xi-xu.me/codeberg/... |
| SourceForge | sf | https://sourceforge.net/... | https://xget.xi-xu.me/sf/... |
| AOSP | aosp | https://android.googlesource.com/... | https://xget.xi-xu.me/aosp/... |
| Hugging Face | hf | https://huggingface.co/... | https://xget.xi-xu.me/hf/... |
| Civitai | civitai | https://civitai.com/... | https://xget.xi-xu.me/civitai/... |
| npm | npm | https://registry.npmjs.org/... | https://xget.xi-xu.me/npm/... |
| PyPI | pypi | https://pypi.org/... | https://xget.xi-xu.me/pypi/... |
| conda | conda | https://repo.anaconda.com/... and https://conda.anaconda.org/... | https://xget.xi-xu.me/conda/... and https://xget.xi-xu.me/conda/community/... |
| Maven | maven | https://repo1.maven.org/... | https://xget.xi-xu.me/maven/... |
| Apache | apache | https://downloads.apache.org/... | https://xget.xi-xu.me/apache/... |
| Gradle | gradle | https://plugins.gradle.org/... | https://xget.xi-xu.me/gradle/... |
| Homebrew | homebrew | https://github.com/Homebrew/... | https://xget.xi-xu.me/homebrew/... |
| RubyGems | rubygems | https://rubygems.org/... | https://xget.xi-xu.me/rubygems/... |
| CRAN | cran | https://cran.r-project.org/... | https://xget.xi-xu.me/cran/... |
| CPAN | cpan | https://www.cpan.org/... | https://xget.xi-xu.me/cpan/... |
| CTAN | ctan | https://tug.ctan.org/... | https://xget.xi-xu.me/ctan/... |
| Go Modules | golang | https://proxy.golang.org/... | https://xget.xi-xu.me/golang/... |
| NuGet | nuget | https://api.nuget.org/... | https://xget.xi-xu.me/nuget/... |
| Rust Crates | crates | https://crates.io/... | https://xget.xi-xu.me/crates/... |
| Packagist | packagist | https://repo.packagist.org/... | https://xget.xi-xu.me/packagist/... |
| Flathub | flathub | https://dl.flathub.org/... | https://xget.xi-xu.me/flathub/... |
| Debian | debian | https://deb.debian.org/... | https://xget.xi-xu.me/debian/... |
| Ubuntu | ubuntu | https://archive.ubuntu.com/... | https://xget.xi-xu.me/ubuntu/... |
| Fedora | fedora | https://mirrors.kernel.org/fedora/... | https://xget.xi-xu.me/fedora/... |
| Rocky Linux | rocky | https://download.rockylinux.org/... | https://xget.xi-xu.me/rocky/... |
| openSUSE | opensuse | https://download.opensuse.org/... | https://xget.xi-xu.me/opensuse/... |
| Arch Linux | arch | https://geo.mirror.pkgbuild.com/... | https://xget.xi-xu.me/arch/... |
| arXiv | arxiv | https://arxiv.org/... | https://xget.xi-xu.me/arxiv/... |
| F-Droid | fdroid | https://f-droid.org/... | https://xget.xi-xu.me/fdroid/... |
| Jenkins Plugins | jenkins | https://updates.jenkins.io/... | https://xget.xi-xu.me/jenkins/... |
| Container Registries | cr | See Container Registries | See Container Registries |
| AI Inference Providers | ip | See AI Inference Providers | See AI Inference Providers |
Platform Conversion Examples
#### GitHub
Original URL
https://github.com/microsoft/vscode/archive/refs/heads/main.zipConverted (add gh prefix)
https://xget.xi-xu.me/gh/microsoft/vscode/archive/refs/heads/main.zip#### GitHub Gist
Original URL
https://gist.github.com/xixu-me/e2ea9db6b1f143892495f796fef18631/raw/3b8807172ee492d0da3a7e370b0fb88fc97b53e6/Free-ChatGPT-Paid-Plan.mdConverted (add gist prefix)
https://xget.xi-xu.me/gist/xixu-me/e2ea9db6b1f143892495f796fef18631/raw/3b8807172ee492d0da3a7e370b0fb88fc97b53e6/Free-ChatGPT-Paid-Plan.md#### GitLab
Original URL
https://gitlab.com/gitlab-org/gitlab/-/archive/master/gitlab-master.zipConverted (add gl prefix)
https://xget.xi-xu.me/gl/gitlab-org/gitlab/-/archive/master/gitlab-master.zip#### Gitea
Original URL
https://gitea.com/gitea/gitea/archive/master.zipConverted (add gitea prefix)
https://xget.xi-xu.me/gitea/gitea/gitea/archive/master.zip#### Codeberg
Original URL
https://codeberg.org/forgejo/forgejo/archive/forgejo.zipConverted (add codeberg prefix)
https://xget.xi-xu.me/codeberg/forgejo/forgejo/archive/forgejo.zip#### SourceForge
Original URL
https://sourceforge.net/projects/sevenzip/files/7-Zip/23.01/7z2301-x64.exe/downloadConverted (add sf prefix)
https://xget.xi-xu.me/sf/projects/sevenzip/files/7-Zip/23.01/7z2301-x64.exe/download#### AOSP (Android Open Source Project)
AOSP project original URL
https://android.googlesource.com/platform/frameworks/baseConverted (add aosp prefix)
https://xget.xi-xu.me/aosp/platform/frameworks/baseAOSP device tree original URL
https://android.googlesource.com/device/google/pixelConverted (add aosp prefix)
https://xget.xi-xu.me/aosp/device/google/pixel#### Hugging Face
Model file original URL
https://huggingface.co/microsoft/DialoGPT-medium/resolve/main/pytorch_model.binConverted (add hf prefix)
https://xget.xi-xu.me/hf/microsoft/DialoGPT-medium/resolve/main/pytorch_model.binDataset file original URL
https://huggingface.co/datasets/rajpurkar/squad/resolve/main/plain_text/train-00000-of-00001.parquetConverted (add hf prefix)
https://xget.xi-xu.me/hf/datasets/rajpurkar/squad/resolve/main/plain_text/train-00000-of-00001.parquet#### Civitai
AI model download original URL
https://civitai.com/api/download/models/128713Converted (add civitai prefix)
https://xget.xi-xu.me/civitai/api/download/models/128713Model API original URL
https://civitai.com/api/v1/models/7240Converted (add civitai prefix)
https://xget.xi-xu.me/civitai/api/v1/models/7240Model version API original URL
https://civitai.com/api/v1/model-versions/128713Converted (add civitai prefix)
https://xget.xi-xu.me/civitai/api/v1/model-versions/128713#### npm
Package file original URL
https://registry.npmjs.org/react/-/react-18.2.0.tgzConverted (add npm prefix)
https://xget.xi-xu.me/npm/react/-/react-18.2.0.tgzPackage metadata original URL
https://registry.npmjs.org/lodashConverted (add npm prefix)
https://xget.xi-xu.me/npm/lodash#### PyPI
Python package file original URL
https://pypi.org/packages/source/r/requests/requests-2.31.0.tar.gzConverted (add pypi prefix)
https://xget.xi-xu.me/pypi/packages/source/r/requests/requests-2.31.0.tar.gzWheel file original URL
https://pypi.org/packages/py3/r/requests/requests-2.31.0-py3-none-any.whlConverted (add pypi prefix)
https://xget.xi-xu.me/pypi/packages/py3/r/requests/requests-2.31.0-py3-none-any.whl#### conda
Default channel package file original URL
https://repo.anaconda.com/pkgs/main/linux-64/numpy-1.24.3-py311h08b1b3b_1.condaConverted (add conda prefix)
https://xget.xi-xu.me/conda/pkgs/main/linux-64/numpy-1.24.3-py311h08b1b3b_1.condaCommunity channel metadata original URL
https://conda.anaconda.org/conda-forge/linux-64/repodata.jsonConverted (add conda/community prefix)
https://xget.xi-xu.me/conda/community/conda-forge/linux-64/repodata.json#### Maven
Maven Central Repository JAR file original URL
https://repo1.maven.org/maven2/org/springframework/spring-core/5.3.21/spring-core-5.3.21.jarConverted (add maven prefix)
https://xget.xi-xu.me/maven/maven2/org/springframework/spring-core/5.3.21/spring-core-5.3.21.jarMaven metadata original URL
https://repo1.maven.org/maven2/org/apache/commons/commons-lang3/maven-metadata.xmlConverted (add maven prefix)
https://xget.xi-xu.me/maven/maven2/org/apache/commons/commons-lang3/maven-metadata.xml#### Apache Software Download
Apache software download original URL
https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgzConverted (add apache prefix)
https://xget.xi-xu.me/apache/kafka/3.6.1/kafka_2.13-3.6.1.tgzApache Maven download original URL
https://downloads.apache.org/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gzConverted (add apache prefix)
https://xget.xi-xu.me/apache/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gzApache Spark download original URL
https://downloads.apache.org/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgzConverted (add apache prefix)
https://xget.xi-xu.me/apache/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz#### Gradle
Gradle plugin portal JAR file original URL
https://plugins.gradle.org/m2/org/gradle/gradle-hello-world-plugin/0.2/gradle-hello-world-plugin-0.2.jarConverted (add gradle prefix)
https://xget.xi-xu.me/gradle/m2/org/gradle/gradle-hello-world-plugin/0.2/gradle-hello-world-plugin-0.2.jarGradle plugin metadata original URL
https://plugins.gradle.org/m2/com/github/ben-manes/gradle-versions-plugin/0.51.0/gradle-versions-plugin-0.51.0.moduleConverted (add gradle prefix)
https://xget.xi-xu.me/gradle/m2/com/github/ben-manes/gradle-versions-plugin/0.51.0/gradle-versions-plugin-0.51.0.module#### Homebrew
Homebrew formula repository original URL
https://github.com/Homebrew/homebrew-core/raw/HEAD/Formula/g/git.rbConverted (add homebrew prefix)
https://xget.xi-xu.me/homebrew/homebrew-core/raw/HEAD/Formula/g/git.rbHomebrew API original URL
https://formulae.brew.sh/api/formula/git.jsonConverted (add homebrew/api prefix)
https://xget.xi-xu.me/homebrew/api/formula/git.jsonHomebrew Bottles original URL
https://ghcr.io/v2/homebrew/core/git/manifests/2.39.0Converted (add homebrew/bottles prefix)
https://xget.xi-xu.me/homebrew/bottles/v2/homebrew/core/git/manifests/2.39.0#### RubyGems
RubyGems package file original URL
https://rubygems.org/gems/rails-7.0.4.gemConverted (add rubygems prefix)
https://xget.xi-xu.me/rubygems/gems/rails-7.0.4.gemRubyGems API original URL
https://rubygems.org/api/v1/gems/nokogiri.jsonConverted (add rubygems prefix)
https://xget.xi-xu.me/rubygems/api/v1/gems/nokogiri.json#### CRAN
CRAN package file original URL
https://cran.r-project.org/src/contrib/ggplot2_3.5.2.tar.gzConverted (add cran prefix)
https://xget.xi-xu.me/cran/src/contrib/ggplot2_3.5.2.tar.gzCRAN package metadata original URL
https://cran.r-project.org/web/packages/dplyr/DESCRIPTIONConverted (add cran prefix)
https://xget.xi-xu.me/cran/web/packages/dplyr/DESCRIPTION#### CPAN (Perl Package Management)
CPAN module original URL
https://www.cpan.org/modules/by-module/DBI/DBI-1.643.tar.gzConverted (add cpan prefix)
https://xget.xi-xu.me/cpan/modules/by-module/DBI/DBI-1.643.tar.gzCPAN author package original URL
https://www.cpan.org/authors/id/T/TI/TIMB/DBI-1.643.tar.gzConverted (add cpan prefix)
https://xget.xi-xu.me/cpan/authors/id/T/TI/TIMB/DBI-1.643.tar.gz#### CTAN (TeX/LaTeX Package Management)
CTAN package file original URL
https://tug.ctan.org/tex-archive/macros/latex/contrib/beamer.zipConverted (add ctan prefix)
https://xget.xi-xu.me/ctan/tex-archive/macros/latex/contrib/beamer.zipCTAN font file original URL
https://tug.ctan.org/tex-archive/fonts/cm/pk/ljfour/public/cm/dpi600/cmr10.pkConverted (add ctan prefix)
https://xget.xi-xu.me/ctan/tex-archive/fonts/cm/pk/ljfour/public/cm/dpi600/cmr10.pk#### Go Modules
Go module proxy original URL
https://proxy.golang.org/github.com/gin-gonic/gin/@v/v1.9.1.zipConverted (add golang prefix)
https://xget.xi-xu.me/golang/github.com/gin-gonic/gin/@v/v1.9.1.zipGo module info original URL
https://proxy.golang.org/github.com/gorilla/mux/@v/listConverted (add golang prefix)
https://xget.xi-xu.me/golang/github.com/gorilla/mux/@v/list#### NuGet
NuGet package download original URL
https://api.nuget.org/v3-flatcontainer/newtonsoft.json/13.0.3/newtonsoft.json.13.0.3.nupkgConverted (add nuget prefix)
https://xget.xi-xu.me/nuget/v3-flatcontainer/newtonsoft.json/13.0.3/newtonsoft.json.13.0.3.nupkgNuGet package metadata original URL
https://api.nuget.org/v3/registration5-semver1/microsoft.aspnetcore.app/index.jsonConverted (add nuget prefix)
https://xget.xi-xu.me/nuget/v3/registration5-semver1/microsoft.aspnetcore.app/index.json#### Rust Crates
Crate download original URL
https://crates.io/api/v1/crates/serde/1.0.0/downloadConverted (add crates prefix)
https://xget.xi-xu.me/crates/serde/1.0.0/downloadCrate metadata original URL
https://crates.io/api/v1/crates/serdeConverted (add crates prefix)
https://xget.xi-xu.me/crates/serdeCrate search original URL
https://crates.io/api/v1/crates?q=serdeConverted (add crates prefix)
https://xget.xi-xu.me/crates/?q=serde#### Packagist
Packagist package metadata original URL
https://repo.packagist.org/p2/symfony/console.jsonConverted (add packagist prefix)
https://xget.xi-xu.me/packagist/p2/symfony/console.jsonPackagist package list original URL
https://repo.packagist.org/packages/list.jsonConverted (add packagist prefix)
https://xget.xi-xu.me/packagist/packages/list.json#### Flathub
Flathub repository original URL
https://dl.flathub.org/repo/summaryConverted (add flathub prefix)
https://xget.xi-xu.me/flathub/repo/summaryFlathub app reference original URL
https://dl.flathub.org/repo/appstream/org.gnome.gedit.flatpakrefConverted (add flathub prefix)
https://xget.xi-xu.me/flathub/repo/appstream/org.gnome.gedit.flatpakref#### Linux Distributions
/ Detailed source-code truncated for AI context efficiency. /#### arXiv
arXiv paper PDF original URL
https://arxiv.org/pdf/2301.07041.pdfConverted (add arxiv prefix)
https://xget.xi-xu.me/arxiv/pdf/2301.07041.pdfarXiv paper source original URL
https://arxiv.org/e-print/2301.07041Converted (add arxiv prefix)
https://xget.xi-xu.me/arxiv/e-print/2301.07041#### F-Droid
F-Droid app APK original URL
https://f-droid.org/repo/org.fdroid.fdroid_1016050.apkConverted (add fdroid prefix)
https://xget.xi-xu.me/fdroid/repo/org.fdroid.fdroid_1016050.apkF-Droid app metadata original URL
https://f-droid.org/api/v1/packages/org.fdroid.fdroidConverted (add fdroid prefix)
https://xget.xi-xu.me/fdroid/api/v1/packages/org.fdroid.fdroid#### Jenkins Plugins
Jenkins update center original URL
https://updates.jenkins.io/update-center.jsonConverted (add jenkins prefix)
https://xget.xi-xu.me/jenkins/update-center.jsonJenkins plugin download original URL
https://updates.jenkins.io/download/plugins/maven-plugin/3.27/maven-plugin.hpiConverted (add jenkins prefix)
https://xget.xi-xu.me/jenkins/download/plugins/maven-plugin/3.27/maven-plugin.hpi#### Container Registries
Xget supports multiple container registries, using the cr/[Registry Prefix]
format:
| Container Registry | Registry Prefix | Original URL Format | Accelerated URL Format |
| ---------------------------- | --------------- | ------------------------------------------- | ------------------------------------------- |
| Docker Hub | docker | https://registry-1.docker.io/... | https://xget.xi-xu.me/cr/docker/... |
| Quay.io | quay | https://quay.io/... | https://xget.xi-xu.me/cr/quay/... |
| Google Container Registry | gcr | https://gcr.io/... | https://xget.xi-xu.me/cr/gcr/... |
| Microsoft Container Registry | mcr | https://mcr.microsoft.com/... | https://xget.xi-xu.me/cr/mcr/... |
| Amazon Public ECR | ecr | https://public.ecr.aws/... | https://xget.xi-xu.me/cr/ecr/... |
| GitHub Container Registry | ghcr | https://ghcr.io/... | https://xget.xi-xu.me/cr/ghcr/... |
| GitLab Container Registry | gitlab | https://registry.gitlab.com/... | https://xget.xi-xu.me/cr/gitlab/... |
| Red Hat Registry | redhat | https://registry.redhat.io/... | https://xget.xi-xu.me/cr/redhat/... |
| Oracle Container Registry | oracle | https://container-registry.oracle.com/... | https://xget.xi-xu.me/cr/oracle/... |
| Cloudsmith | cloudsmith | https://docker.cloudsmith.io/... | https://xget.xi-xu.me/cr/cloudsmith/... |
| DigitalOcean Registry | digitalocean | https://registry.digitalocean.com/... | https://xget.xi-xu.me/cr/digitalocean/... |
| VMware Registry | vmware | https://projects.registry.vmware.com/... | https://xget.xi-xu.me/cr/vmware/... |
| Kubernetes Registry | k8s | https://registry.k8s.io/... | https://xget.xi-xu.me/cr/k8s/... |
| Heroku Registry | heroku | https://registry.heroku.com/... | https://xget.xi-xu.me/cr/heroku/... |
| SUSE Registry | suse | https://registry.suse.com/... | https://xget.xi-xu.me/cr/suse/... |
| openSUSE Registry | opensuse | https://registry.opensuse.org/... | https://xget.xi-xu.me/cr/opensuse/... |
| Gitpod Registry | gitpod | https://registry.gitpod.io/... | https://xget.xi-xu.me/cr/gitpod/... |
Docker Hub original URL (official images)
https://registry-1.docker.io/v2/library/nginx/manifests/latestConverted (add cr/docker prefix)
https://xget.xi-xu.me/cr/docker/v2/nginx/manifests/latestDocker Hub original URL (user images)
https://registry-1.docker.io/v2/nginxinc/nginx-unprivileged/manifests/latestConverted (add cr/docker prefix)
https://xget.xi-xu.me/cr/docker/v2/nginxinc/nginx-unprivileged/manifests/latestGitHub Container Registry original URL
https://ghcr.io/v2/nginxinc/nginx-unprivileged/manifests/latestConverted (add cr/ghcr prefix)
https://xget.xi-xu.me/cr/ghcr/v2/nginxinc/nginx-unprivileged/manifests/latestGoogle Container Registry original URL
https://gcr.io/v2/distroless/base/manifests/latestConverted (add cr/gcr prefix)
https://xget.xi-xu.me/cr/gcr/v2/distroless/base/manifests/latestFor use cases, see
Container Image Acceleration.
#### AI Inference Providers
Xget supports API acceleration for many mainstream AI inference providers, using
the ip/[AI Provider Prefix] format:
| AI Inference Provider | Provider Prefix | Original URL Format | Accelerated URL Format |
| --------------------- | --------------- | ----------------------------------------------- | -------------------------------------------- |
| OpenAI | openai | https://api.openai.com/... | https://xget.xi-xu.me/ip/openai/... |
| Anthropic | anthropic | https://api.anthropic.com/... | https://xget.xi-xu.me/ip/anthropic/... |
| Gemini | gemini | https://generativelanguage.googleapis.com/... | https://xget.xi-xu.me/ip/gemini/... |
| Vertex AI | vertexai | https://aiplatform.googleapis.com/... | https://xget.xi-xu.me/ip/vertexai/... |
| Cohere | cohere | https://api.cohere.ai/... | https://xget.xi-xu.me/ip/cohere/... |
| Mistral AI | mistralai | https://api.mistral.ai/... | https://xget.xi-xu.me/ip/mistralai/... |
| xAI | xai | https://api.x.ai/... | https://xget.xi-xu.me/ip/xai/... |
| GitHub Models | githubmodels | https://models.github.ai/... | https://xget.xi-xu.me/ip/githubmodels/... |
| NVIDIA API | nvidiaapi | https://integrate.api.nvidia.com/... | https://xget.xi-xu.me/ip/nvidiaapi/... |
| Perplexity | perplexity | https://api.perplexity.ai/... | https://xget.xi-xu.me/ip/perplexity/... |
| Groq | groq | https://api.groq.com/... | https://xget.xi-xu.me/ip/groq/... |
| Cerebras | cerebras | https://api.cerebras.ai/... | https://xget.xi-xu.me/ip/cerebras/... |
| SambaNova | sambanova | https://api.sambanova.ai/... | https://xget.xi-xu.me/ip/sambanova/... |
| Siray | siray | https://api.siray.ai/... | https://xget.xi-xu.me/ip/siray/... |
| HF Inference | huggingface | https://router.huggingface.co/... | https://xget.xi-xu.me/ip/huggingface/... |
| Together | together | https://api.together.xyz/... | https://xget.xi-xu.me/ip/together/... |
| Replicate | replicate | https://api.replicate.com/... | https://xget.xi-xu.me/ip/replicate/... |
| Fireworks | fireworks | https://api.fireworks.ai/... | https://xget.xi-xu.me/ip/fireworks/... |
| Nebius | nebius | https://api.studio.nebius.ai/... | https://xget.xi-xu.me/ip/nebius/... |
| Jina | jina | https://api.jina.ai/... | https://xget.xi-xu.me/ip/jina/... |
| Voyage AI | voyageai | https://api.voyageai.com/... | https://xget.xi-xu.me/ip/voyageai/... |
| Fal AI | falai | https://fal.run/... | https://xget.xi-xu.me/ip/falai/... |
| Novita | novita | https://api.novita.ai/... | https://xget.xi-xu.me/ip/novita/... |
| Burncloud | burncloud | https://ai.burncloud.com/... | https://xget.xi-xu.me/ip/burncloud/... |
| OpenRouter | openrouter | https://openrouter.ai/... | https://xget.xi-xu.me/ip/openrouter/... |
| Poe | poe | https://api.poe.com/... | https://xget.xi-xu.me/ip/poe/... |
| Featherless AI | featherlessai | https://api.featherless.ai/... | https://xget.xi-xu.me/ip/featherlessai/... |
| Hyperbolic | hyperbolic | https://api.hyperbolic.xyz/... | https://xget.xi-xu.me/ip/hyperbolic/... |
OpenAI API original URL
https://api.openai.com/v1/chat/completionsConverted (add ip/openai prefix)
https://xget.xi-xu.me/ip/openai/v1/chat/completionsClaude API original URL
https://api.anthropic.com/v1/messagesConverted (add ip/anthropic prefix)
https://xget.xi-xu.me/ip/anthropic/v1/messagesGemini API original URL
https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContentConverted (add ip/gemini prefix)
https://xget.xi-xu.me/ip/gemini/v1beta/models/gemini-2.5-flash:generateContentHF Inference API original URL
https://router.huggingface.co/hf-inference/models/openai/whisper-large-v3Converted (add ip/huggingface prefix)
https://xget.xi-xu.me/ip/huggingface/hf-inference/models/openai/whisper-large-v3For use cases, see
AI Inference API Acceleration.
Use Cases
Git Operations and Configuration
#### Git Operations
Clone repository
git clone https://xget.xi-xu.me/gh/microsoft/vscode.gitClone specific branch
git clone -b main https://xget.xi-xu.me/gh/facebook/react.gitShallow clone (latest commit only)
git clone --depth 1 https://xget.xi-xu.me/gh/torvalds/linux.gitClone GitLab repository
git clone https://xget.xi-xu.me/gl/gitlab-org/gitlab.gitClone Gitea repository
git clone https://xget.xi-xu.me/gitea/gitea/gitea.gitClone Codeberg repository
git clone https://xget.xi-xu.me/codeberg/forgejo/forgejo.gitClone SourceForge repository
git clone https://xget.xi-xu.me/sf/projects/mingw-w64/code.gitClone AOSP repository
git clone https://xget.xi-xu.me/aosp/platform/frameworks/base.gitAdd remote repository
git remote add upstream https://xget.xi-xu.me/gh/[owner]/[repository].gitPull updates
git pull https://xget.xi-xu.me/gh/microsoft/vscode.git mainRecursive submodule clone
git clone --recursive https://xget.xi-xu.me/gh/[username]/[repository-with-submodules].git#### Git Global Acceleration Configuration
Configure Git to use Xget for specific domains
git config --global url."https://xget.xi-xu.me/gh/".insteadOf "https://github.com/"
git config --global url."https://xget.xi-xu.me/gl/".insteadOf "https://gitlab.com/"
git config --global url."https://xget.xi-xu.me/gitea/".insteadOf "https://gitea.com/"
git config --global url."https://xget.xi-xu.me/codeberg/".insteadOf "https://codeberg.org/"
git config --global url."https://xget.xi-xu.me/sf/".insteadOf "https://sourceforge.net/"
git config --global url."https://xget.xi-xu.me/aosp/".insteadOf "https://android.googlesource.com/"Verify configuration
git config --global --get-regexp urlNow all git clone operations for relevant platforms will automatically use Xget
git clone https://github.com/microsoft/vscode.git # Automatically converted to Xget URL
git clone https://gitlab.com/gitlab-org/gitlab.git # Automatically converted to Xget URL
git clone https://codeberg.org/forgejo/forgejo.git # Automatically converted to Xget URL
git clone https://android.googlesource.com/platform/frameworks/base.git # Automatically converted to Xget URLMainstream Download Tool Integration
#### wget Download
Download single file
wget https://xget.xi-xu.me/gh/microsoft/vscode/archive/refs/heads/main.zipResume download
wget -c https://xget.xi-xu.me/hf/microsoft/DialoGPT-large/resolve/main/pytorch_model.binBatch download
wget -i urls.txt # urls.txt contains multiple Xget URLs#### cURL Download
Basic download
curl -L -O https://xget.xi-xu.me/gh/golang/go/archive/refs/tags/go1.22.0.tar.gzShow progress bar
curl -L --progress-bar -o model.bin https://xget.xi-xu.me/hf/openai/whisper-large-v3/resolve/main/pytorch_model.binSet user agent
curl -L -H "User-Agent: MyApp/1.0" https://xget.xi-xu.me/gl/gitlab-org/gitlab-runner/-/archive/main/gitlab-runner-main.zip#### aria2 Multi-threaded Download
Multi-threaded download of large files
aria2c -x 16 -s 16 https://xget.xi-xu.me/hf/microsoft/DialoGPT-large/resolve/main/pytorch_model.binResume download
aria2c -c https://xget.xi-xu.me/gh/microsoft/vscode/archive/refs/heads/main.zipBatch download configuration file
aria2c -i download-list.txt # File containing multiple Xget URLsHugging Face Mirror
import os
from transformers import AutoTokenizer, AutoModelForCausalLMSet environment variable to make transformers library automatically use Xget mirror
os.environ['HF_ENDPOINT'] = 'https://xget.xi-xu.me/hf'Define model name
model_name = 'microsoft/DialoGPT-medium'print(f"Downloading model from mirror: {model_name}")
Use AutoModelForCausalLM to load dialogue generation model
Since we set the environment variable above, no additional parameters are needed here
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)print("Model and tokenizer loaded successfully!")
You can now use the tokenizer and model
For example:
new_user_input_ids = tokenizer.encode("Hello, how are you?", return_tensors='pt')
chat_history_ids = model.generate(new_user_input_ids, max_length=1000, pad_token_id=tokenizer.eos_token_id)
print(tokenizer.decode(chat_history_ids[:, new_user_input_ids.shape[-1]:][0], skip_special_tokens=True))
Civitai AI Model Platform
import requestsSet API base URL to use Xget
base_url = "https://xget.xi-xu.me/civitai"Get model information
def get_model_info(model_id):
"""Get Civitai model information"""
url = f"{base_url}/api/v1/models/{model_id}"
response = requests.get(url)
return response.json()Download model
def download_model(model_version_id, output_path):
"""Download Civitai model file"""
download_url = f"{base_url}/api/download/models/{model_version_id}" print(f"Downloading model version {model_version_id}...")
response = requests.get(download_url, stream=True)
response.raise_for_status()
with open(output_path, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print(f"Model downloaded to: {output_path}")
Usage example
model_id = 7240 # Example model ID
model_info = get_model_info(model_id)
print(f"Model name: {model_info['name']}")Download first model version
if model_info['modelVersions']:
version_id = model_info['modelVersions'][0]['id']
download_model(version_id, f"model_{version_id}.safetensors")npm Package Acceleration
#### Configure npm to Use Xget Mirror
Temporarily use Xget mirror
npm install --registry https://xget.xi-xu.me/npm/Globally configure npm mirror
npm config set registry https://xget.xi-xu.me/npm/Verify configuration
npm config get registry#### Configure Bun to Use Xget Mirror
bunfig.toml (project-level) or ~/.bunfig.toml (global)
[install]
registry = "https://xget.xi-xu.me/npm/"Install dependencies with Bun
bun installBun also supports .npmrc, so you can reuse existing npm registry settings
echo "registry=https://xget.xi-xu.me/npm/" > .npmrc
bun install#### Use in Project (npm / Bun)
Configure project-level mirror in .npmrc (.npmrc can be reused by npm / Bun)
echo "registry=https://xget.xi-xu.me/npm/" > .npmrcInstall dependencies with npm
npm installInstall dependencies with Bun
bun installPython Package Acceleration
#### Configure pip to Use Xget Mirror
Temporarily use Xget mirror
pip install requests -i https://xget.xi-xu.me/pypi/simple/Globally configure pip mirror
pip config set global.index-url https://xget.xi-xu.me/pypi/simple/
pip config set global.trusted-host xget.xi-xu.meVerify configuration
pip config list#### Use in Project
Create pip.conf file (Linux/macOS)
mkdir -p ~/.pip
cat > ~/.pip/pip.conf << EOF
[global]
index-url = https://xget.xi-xu.me/pypi/simple/
trusted-host = xget.xi-xu.me
EOFOr create pip.conf in project root directory
cat > pip.conf << EOF
[global]
index-url = https://xget.xi-xu.me/pypi/simple/
trusted-host = xget.xi-xu.me
EOFInstall using configuration file
pip install -r requirements.txt --config-file pip.conf#### Specify Mirror in requirements.txt
requirements.txt
--index-url https://xget.xi-xu.me/pypi/simple/
--trusted-host xget.xi-xu.merequests>=2.25.0
numpy>=1.21.0
pandas>=1.3.0
matplotlib>=3.4.0
conda Package Acceleration
#### Configure conda to Use Xget Mirror
Configure default channel mirrors
conda config --add default_channels https://xget.xi-xu.me/conda/pkgs/msys2
conda config --add default_channels https://xget.xi-xu.me/conda/pkgs/r
conda config --add default_channels https://xget.xi-xu.me/conda/pkgs/mainConfigure all community channel mirrors (recommended)
conda config --set channel_alias https://xget.xi-xu.me/conda/communityOr configure specific community channels
conda config --add channels https://xget.xi-xu.me/conda/community/conda-forge
conda config --add channels https://xget.xi-xu.me/conda/community/biocondaSet channel priority
conda config --set channel_priority strictVerify configuration
conda config --show#### Configure in .condarc
The .condarc file can be placed in the user home directory (~/.condarc) or
project root directory:
default_channels:
- https://xget.xi-xu.me/conda/pkgs/main
- https://xget.xi-xu.me/conda/pkgs/r
- https://xget.xi-xu.me/conda/pkgs/msys2
channel_alias: https://xget.xi-xu.me/conda/community
channel_priority: strict
show_channel_urls: true#### Use Environment File
The environment file can directly specify complete mirror URLs:
environment.yml
name: myproject
channels:
- https://xget.xi-xu.me/conda/pkgs/main
- https://xget.xi-xu.me/conda/pkgs/r
- https://xget.xi-xu.me/conda/community/bioconda
- https://xget.xi-xu.me/conda/community/conda-forge
dependencies:
- python=3.11
- numpy>=1.24.0
- pandas>=2.0.0
- matplotlib>=3.7.0
- scipy>=1.10.0
- pip
- pip:
- requests>=2.28.0Create environment using environment file
conda env create -f environment.ymlUpdate environment
conda env update -f environment.ymlMaven Package Acceleration
#### Configure Maven to Use Xget Mirror
<settings>
<mirrors>
<mirror>
<id>xget-maven-central</id>
<mirrorOf>central</mirrorOf>
<name>Xget Maven Central Mirror</name>
<url>https://xget.xi-xu.me/maven/maven2</url>
</mirror>
</mirrors>
</settings>#### Use in Project
<project>
<repositories>
<repository>
<id>xget-maven-central</id>
<name>Xget Maven Central</name>
<url>https://xget.xi-xu.me/maven/maven2</url>
</repository>
</repositories> <pluginRepositories>
<pluginRepository>
<id>xget-maven-central</id>
<name>Xget Maven Central</name>
<url>https://xget.xi-xu.me/maven/maven2</url>
</pluginRepository>
</pluginRepositories>
</project>
Specify mirror using command line
mvn clean install -Dmaven.repo.remote=https://xget.xi-xu.me/maven/maven2Download specific dependency
mvn dependency:get -Dartifact=org.springframework:spring-core:5.3.21 \
-DremoteRepositories=https://xget.xi-xu.me/maven/maven2Apache Software Download Acceleration
#### Download Apache Software Using Xget
Download Apache Kafka
wget https://xget.xi-xu.me/apache/kafka/3.6.1/kafka_2.13-3.6.1.tgzDownload Apache Maven
curl -L -O https://xget.xi-xu.me/apache/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gzDownload Apache Spark
aria2c https://xget.xi-xu.me/apache/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgzDownload Apache Hadoop
wget https://xget.xi-xu.me/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gzDownload Apache Flink
curl -L -O https://xget.xi-xu.me/apache/flink/flink-1.18.1/flink-1.18.1-bin-scala_2.12.tgz#### Common Apache Software Downloads
Big data related
wget https://xget.xi-xu.me/apache/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
wget https://xget.xi-xu.me/apache/hbase/2.5.7/hbase-2.5.7-bin.tar.gz
wget https://xget.xi-xu.me/apache/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gzWeb servers
wget https://xget.xi-xu.me/apache/httpd/httpd-2.4.59.tar.gz
wget https://xget.xi-xu.me/apache/tomcat/tomcat-10/v10.1.19/bin/apache-tomcat-10.1.19.tar.gzDevelopment tools
wget https://xget.xi-xu.me/apache/ant/1.10.14/apache-ant-1.10.14-bin.tar.gz
wget https://xget.xi-xu.me/apache/netbeans/netbeans/20/netbeans-20-bin.zipGradle Package Acceleration
#### Configure Gradle to Use Xget Mirror
// Configure Gradle mirror in build.gradle
repositories {
maven {
url 'https://xget.xi-xu.me/maven/maven2'
}
gradlePluginPortal {
url 'https://xget.xi-xu.me/gradle/m2'
}
}// Configure plugin repositories
pluginManagement {
repositories {
maven {
url 'https://xget.xi-xu.me/gradle/m2'
}
gradlePluginPortal()
}
}
#### Global Configuration
// Configure global mirror in ~/.gradle/init.gradle
allprojects {
repositories {
maven {
url 'https://xget.xi-xu.me/maven/maven2'
}
}
}settingsEvaluated { settings ->
settings.pluginManagement {
repositories {
maven {
url 'https://xget.xi-xu.me/gradle/m2'
}
gradlePluginPortal()
}
}
}
Specify mirror using command line
gradle build -Dmaven.repo.remote=https://xget.xi-xu.me/maven/maven2Refresh dependencies
gradle build --refresh-dependenciesHomebrew Package Acceleration
#### Configure Homebrew to Use Xget Mirror
Set Homebrew environment variables to use Xget mirror
export HOMEBREW_BREW_GIT_REMOTE="https://xget.xi-xu.me/homebrew/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://xget.xi-xu.me/homebrew/homebrew-core.git"
export HOMEBREW_API_DOMAIN="https://xget.xi-xu.me/homebrew/api"
export HOMEBREW_BOTTLE_DOMAIN="https://xget.xi-xu.me/homebrew/bottles"Update Homebrew
brew update#### Long-term Configuration
For bash users, add to ~/.bash_profile
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://xget.xi-xu.me/homebrew/brew.git"' >> ~/.bash_profile
echo 'export HOMEBREW_CORE_GIT_REMOTE="https://xget.xi-xu.me/homebrew/homebrew-core.git"' >> ~/.bash_profile
echo 'export HOMEBREW_API_DOMAIN="https://xget.xi-xu.me/homebrew/api"' >> ~/.bash_profile
echo 'export HOMEBREW_BOTTLE_DOMAIN="https://xget.xi-xu.me/homebrew/bottles"' >> ~/.bash_profileFor zsh users, add to ~/.zprofile
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://xget.xi-xu.me/homebrew/brew.git"' >> ~/.zprofile
echo 'export HOMEBREW_CORE_GIT_REMOTE="https://xget.xi-xu.me/homebrew/homebrew-core.git"' >> ~/.zprofile
echo 'export HOMEBREW_API_DOMAIN="https://xget.xi-xu.me/homebrew/api"' >> ~/.zprofile
echo 'export HOMEBREW_BOTTLE_DOMAIN="https://xget.xi-xu.me/homebrew/bottles"' >> ~/.zprofile#### Use in Project
Install packages
brew install gitSearch packages
brew search pythonUpdate packages
brew upgradeView installed packages
brew list#### Verify Mirror Configuration
Check Homebrew configuration
brew configView environment variables
echo $HOMEBREW_API_DOMAIN
echo $HOMEBREW_BOTTLE_DOMAINRuby Package Acceleration
#### Configure RubyGems to Use Xget Mirror
Temporarily use Xget mirror
gem install rails --source https://xget.xi-xu.me/rubygems/Globally configure RubyGems mirror
gem sources --add https://xget.xi-xu.me/rubygems/
gem sources --remove https://rubygems.org/Verify configuration
gem sources -l#### Use in Project
Configure project-level mirror in Gemfile
source 'https://xget.xi-xu.me/rubygems/'gem 'rails', '~> 7.0.0'
gem 'pg', '~> 1.1'
gem 'puma', '~> 5.0'
Install using bundle
bundle config mirror.https://rubygems.org https://xget.xi-xu.me/rubygems/
bundle installR Package Acceleration
#### Configure R to Use Xget CRAN Mirror
Temporarily use Xget CRAN mirror in R
install.packages("ggplot2", repos = "https://xget.xi-xu.me/cran/")Globally configure CRAN mirror
options(repos = c(CRAN = "https://xget.xi-xu.me/cran/"))Verify configuration
getOption("repos")#### Configure in .Rprofile
Configure global mirror in .Rprofile file in user home directory
options(repos = c(
CRAN = "https://xget.xi-xu.me/cran/",
BioCsoft = "https://bioconductor.org/packages/release/bioc",
BioCann = "https://bioconductor.org/packages/release/data/annotation",
BioCexp = "https://bioconductor.org/packages/release/data/experiment"
))Set download method
options(download.file.method = "libcurl")#### Use in Project
Specify mirror in project's renv.lock or script
renv::init()
renv::settings$repos.override(c(CRAN = "https://xget.xi-xu.me/cran/"))Install packages
install.packages(c("dplyr", "ggplot2", "tidyr"))Or use pak package manager
pak::pkg_install("tidyverse", repos = "https://xget.xi-xu.me/cran/")Install packages using R script in command line
Rscript -e "options(repos = c(CRAN = 'https://xget.xi-xu.me/cran/')); install.packages('ggplot2')"Batch install packages
Rscript -e "
options(repos = c(CRAN = 'https://xget.xi-xu.me/cran/'))
packages <- c('dplyr', 'ggplot2', 'tidyr', 'readr')
install.packages(packages)
"Perl Package Acceleration
#### Configure CPAN to Use Xget Mirror
Configure CPAN to use Xget mirror
cpan o conf urllist push https://xget.xi-xu.me/cpan/
cpan o conf commitOr directly edit configuration file ~/.cpan/CPAN/MyConfig.pm
Add:
'urllist' => [q[https://xget.xi-xu.me/cpan/]],
#### Use cpanm to Install Modules
Install cpanm (if not available)
curl -L https://cpanmin.us | perl - --sudo App::cpanminusInstall modules using Xget mirror
cpanm --mirror https://xget.xi-xu.me/cpan/ DBI
cpanm --mirror https://xget.xi-xu.me/cpan/ MojoliciousInstall dependencies from Makefile.PL
cpanm --mirror https://xget.xi-xu.me/cpan/ --installdeps .#### Use in Project
List dependencies in cpanfile
requires 'DBI';
requires 'Mojolicious';
requires 'JSON';Then install using Xget mirror
cpanm --mirror https://xget.xi-xu.me/cpan/ --installdeps .TeX/LaTeX Package Acceleration
#### Configure TeX Live to Use Xget CTAN Mirror
Configure tlmgr to use Xget CTAN mirror
tlmgr option repository https://xget.xi-xu.me/ctan/systems/texlive/tlnetUpdate package database
tlmgr update --self --allInstall packages
tlmgr install beamer
tlmgr install tikz#### Configure MiKTeX to Use Xget Mirror
Windows MiKTeX configuration
mpm --set-repository=https://xget.xi-xu.me/ctan/systems/win32/miktexUpdate package database
mpm --update-dbInstall packages
mpm --install=beamer
mpm --install=pgf#### Use in Project
Automatically install missing packages during LaTeX document compilation
pdflatex --shell-escape document.texOr manually install specific packages
tlmgr install caption
tlmgr install subcaption
tlmgr install algorithm2eGo Module Acceleration
#### Configure Go to Use Xget Proxy
Configure Go module proxy
export GOPROXY=https://xget.xi-xu.me/golang,direct
export GOSUMDB=offOr permanently configure
go env -w GOPROXY=https://xget.xi-xu.me/golang,direct
go env -w GOSUMDB=offVerify configuration
go env GOPROXY#### Use in Project
Download dependencies
go mod downloadUpdate dependencies
go get -u ./...Clean module cache
go clean -modcacheNuGet Package Acceleration
#### Configure NuGet to Use Xget Mirror
Add Xget package source
dotnet nuget add source https://xget.xi-xu.me/nuget/v3/index.json -n xgetList package sources
dotnet nuget list sourceUse in project
dotnet restore --source https://xget.xi-xu.me/nuget/v3/index.json#### Configure in NuGet.Config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="xget" value="https://xget.xi-xu.me/nuget/v3/index.json" />
</packageSources>
</configuration>Rust Package Acceleration
#### Configure Cargo to Use Xget Mirror
Configure Cargo to use Xget mirror (in ~/.cargo/config.toml)
mkdir -p ~/.cargo
cat >> ~/.cargo/config.toml << EOF
[source.crates-io]
replace-with = "xget"[source.xget]
registry = "https://xget.xi-xu.me/crates/"
EOF
Verify configuration
cargo search serde#### Use in Project
Can use dependencies normally in Cargo.toml
[dependencies]
serde = "1.0"
tokio = "1.0"
reqwest = "0.11"Xget will be automatically used when building the project
cargo buildUpdate dependencies
cargo updateAdd new dependency
cargo add clapPHP Package Acceleration
#### Configure Composer to Use Xget Mirror
Globally configure Composer mirror
composer config -g repo.packagist composer https://xget.xi-xu.me/packagist/Project-level configuration
composer config repo.packagist composer https://xget.xi-xu.me/packagist/Verify configuration
composer config -l#### Configure in composer.json
{
"repositories": [
{
"type": "composer",
"url": "https://xget.xi-xu.me/packagist/"
}
],
"require": {
"symfony/console": "^6.0",
"guzzlehttp/guzzle": "^7.0"
}
}Flathub Repository Mirror
#### Configure Flatpak / Flathub to Use Xget Mirror
If Flathub has not been added before, import the official descriptor
first so Flatpak trusts the Flathub signing key.
flatpak remote-add --if-not-exists flathub \
https://dl.flathub.org/repo/flathub.flatpakrepoThen repoint the existing Flathub remote to the Xget mirror
flatpak remote-modify flathub \
--url=https://xget.xi-xu.me/flathub/repo/Restore the default upstream when needed
flatpak remote-modify flathub \
--url=https://dl.flathub.org/repo/Xget mirrors the Flathub OSTree repository endpoint. On current Flatpak clients,
importing a mirrored .flatpakrepo descriptor or adding the mirrored repository
directly may still fall back to the upstream Flathub URL or fail to import the
signing key, so flatpak remote-modify ... --url=... is the reliable setup. For
system-wide remotes, run the same commands with sudo.
#### Supported Flathub Services
OSTree repository metadata
https://xget.xi-xu.me/flathub/repo/config
https://xget.xi-xu.me/flathub/repo/summary
https://xget.xi-xu.me/flathub/repo/summary.sig
https://xget.xi-xu.me/flathub/repo/summary.idx
https://xget.xi-xu.me/flathub/repo/summaries/...Flatpak remote descriptor
https://xget.xi-xu.me/flathub/repo/flathub.flatpakrepoApp reference descriptor
https://xget.xi-xu.me/flathub/repo/appstream/[app-id].flatpakrefRepository objects and static deltas
https://xget.xi-xu.me/flathub/repo/objects/...
https://xget.xi-xu.me/flathub/repo/deltas/...
https://xget.xi-xu.me/flathub/repo/delta-indexes/...#### Usage Examples
Verify that the saved remote URL now points to Xget
flatpak remotes --show-detailsInspect remote contents
flatpak remote-ls flathubInstall an app after repointing the Flathub remote
flatpak install flathub org.gnome.geditInstall directly from a rewritten .flatpakref
flatpak install --from \
https://xget.xi-xu.me/flathub/repo/appstream/org.gnome.gedit.flatpakrefPrint libcurl HTTP traces when troubleshooting
OSTREE_DEBUG_HTTP=1 flatpak remote-ls flathubUpdate installed apps and runtimes
flatpak updateLinux Distribution Acceleration
#### Debian/Ubuntu APT Configuration
Backup original source list
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backupConfigure Debian mirror
echo "deb https://xget.xi-xu.me/debian/debian bookworm main" | sudo tee /etc/apt/sources.list
echo "deb https://xget.xi-xu.me/debian/debian-security bookworm-security main" | sudo tee -a /etc/apt/sources.listConfigure Ubuntu mirror
echo "deb https://xget.xi-xu.me/ubuntu/ubuntu jammy main restricted universe multiverse" | sudo tee /etc/apt/sources.list
echo "deb https://xget.xi-xu.me/ubuntu/ubuntu jammy-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.listUpdate package list
sudo apt update#### Fedora DNF Configuration
Configure Fedora mirror
sudo sed -i 's|^metalink=|#metalink=|g' /etc/yum.repos.d/fedora*.repo
sudo sed -i 's|^#baseurl=http://download.example/pub/fedora/linux|baseurl=https://xget.xi-xu.me/fedora/pub/fedora/linux|g' /etc/yum.repos.d/fedora*.repoUpdate package cache
sudo dnf makecache#### Rocky Linux DNF Configuration
Configure Rocky Linux mirror
sudo sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/rocky*.repo
sudo sed -i 's|^#baseurl=http://dl.rockylinux.org|baseurl=https://xget.xi-xu.me/rocky|g' /etc/yum.repos.d/rocky*.repoUpdate package cache
sudo dnf makecache#### openSUSE Zypper Configuration
Configure openSUSE Leap mirror
sudo zypper mr -d repo-oss
sudo zypper ar -f https://xget.xi-xu.me/opensuse/distribution/leap/15.5/repo/oss/ repo-oss-xgetConfigure openSUSE Tumbleweed mirror
sudo zypper mr -d repo-oss
sudo zypper ar -f https://xget.xi-xu.me/opensuse/tumbleweed/repo/oss/ repo-oss-xgetRefresh software sources
sudo zypper refreshVerify configuration
sudo zypper lr -u#### Arch Linux Pacman Configuration
Backup original mirror list
sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backupConfigure Arch Linux mirror
echo 'Server = https://xget.xi-xu.me/arch/$repo/os/$arch' | sudo tee /etc/pacman.d/mirrorlistUpdate package database
sudo pacman -SyAcademic Resource Acceleration
#### arXiv Paper Download
Download arXiv paper PDF
wget https://xget.xi-xu.me/arxiv/pdf/2301.07041.pdfDownload paper source
curl -L -O https://xget.xi-xu.me/arxiv/e-print/2301.07041Batch download multiple papers
for id in 2301.07041 2302.13971 2303.08774; do
wget https://xget.xi-xu.me/arxiv/pdf/${id}.pdf
done#### Use in Academic Tools
Use arXiv accelerated download in Python
import requestsdef download_arxiv_paper(arxiv_id, output_path):
url = f"https://xget.xi-xu.me/arxiv/pdf/{arxiv_id}.pdf"
response = requests.get(url)
if response.status_code == 200:
with open(output_path, 'wb') as f:
f.write(response.content)
print(f"Downloaded {arxiv_id} to {output_path}")
else:
print(f"Failed to download {arxiv_id}")
Download paper
download_arxiv_paper("2301.07041", "attention_is_all_you_need.pdf")F-Droid Repository Mirror
#### Configure F-Droid Client to Use Xget Mirror
1. In F-Droid app, go to Settings → Repositories
2. Click + and enter repository URL: https://xget.xi-xu.me/fdroid/repo
3. Click Add then click Add Mirror
#### Supported F-Droid Services
F-Droid app APK download
https://xget.xi-xu.me/fdroid/repo/[package-name]_[version-code].apkF-Droid repository index
https://xget.xi-xu.me/fdroid/repo/index-v1.jarF-Droid app icons
https://xget.xi-xu.me/fdroid/repo/icons-640/[package-name].[version-code].pngF-Droid API endpoints
https://xget.xi-xu.me/fdroid/api/v1/packages/[package-name]#### Usage Examples
Directly download F-Droid client APK
wget https://xget.xi-xu.me/fdroid/repo/org.fdroid.fdroid_1016050.apkDownload other open source apps
curl -L -O https://xget.xi-xu.me/fdroid/repo/org.mozilla.fennec_fdroid_1014000.apkGet app information
curl https://xget.xi-xu.me/fdroid/api/v1/packages/org.fdroid.fdroid#### Batch App Management
Create app download script
cat > download_fdroid_apps.sh << 'EOF'
#!/bin/bashDefine list of apps to download
apps=(
"org.fdroid.fdroid_1016050.apk"
"org.mozilla.fennec_fdroid_1014000.apk"
"com.termux_1180.apk"
"org.videolan.vlc_13050399.apk"
)Create download directory
mkdir -p fdroid_appsBatch download apps
for app in "${apps[@]}"; do
echo "Downloading: $app"
wget -P fdroid_apps "https://xget.xi-xu.me/fdroid/repo/$app"
doneecho "All apps downloaded!"
EOF
chmod +x download_fdroid_apps.sh
./download_fdroid_apps.sh
#### Developer Integration
For Android developers, F-Droid mirror can be integrated into build scripts:
// Configure F-Droid dependency check in build.gradle
task checkFDroidAvailability {
doLast {
def fdroidUrl = "https://xget.xi-xu.me/fdroid/api/v1/packages/${project.name}"
try {
def connection = new URL(fdroidUrl).openConnection()
connection.requestMethod = 'GET'
def responseCode = connection.responseCode
if (responseCode == 200) {
println "App available on F-Droid: $fdroidUrl"
}
} catch (Exception e) {
println "Error checking F-Droid availability: ${e.message}"
}
}
}Jenkins Plugin Download
#### Use Xget to Accelerate Jenkins Plugin Download and Update
Supports Jenkins update center and plugin downloads, compatible with
configuration methods of domestic mirrors like Tsinghua mirror.
#### Jenkins Update Center Configuration
##### Method 1: Configure in Jenkins Web Interface
1. Log in to Jenkins management interface
2. Go to Manage Jenkins → Plugins → Advanced
3. In the Update Site section, change the URL to
https://xget.xi-xu.me/jenkins/update-center.json
4. Click Submit to save configuration
##### Method 2: Modify Configuration File
Modify update center configuration file on Jenkins server
Default location: $JENKINS_HOME/hudson.model.UpdateCenter.xml
sudo nano /var/lib/jenkins/hudson.model.UpdateCenter.xmlChange URL to:
<url>https://xget.xi-xu.me/jenkins/update-center.json</url>
Restart Jenkins service
sudo systemctl restart jenkins#### Supported Jenkins Services
Jenkins update center JSON
https://xget.xi-xu.me/jenkins/update-center.jsonJenkins update center (actual JSON format)
https://xget.xi-xu.me/jenkins/update-center.actual.jsonJenkins plugin download
https://xget.xi-xu.me/jenkins/download/plugins/[plugin-name]/[version]/[plugin-name].hpiExperimental plugin update center
https://xget.xi-xu.me/jenkins/experimental/update-center.json#### Usage Examples
Download Maven plugin
wget https://xget.xi-xu.me/jenkins/download/plugins/maven-plugin/3.27/maven-plugin.hpiDownload Git plugin
curl -L -O https://xget.xi-xu.me/jenkins/download/plugins/git/5.2.1/git.hpiGet update center information
curl https://xget.xi-xu.me/jenkins/update-center.jsonBatch download common plugins
cat > download_jenkins_plugins.sh << 'EOF'
#!/bin/bashDefine list of plugins to download
plugins=(
"git:5.2.1"
"maven-plugin:3.27"
"workflow-aggregator:596.v8c21c963d92d"
"blueocean:1.27.8"
"docker-workflow:563.vd5d2e5c4007f"
)Create plugin download directory
mkdir -p jenkins_pluginsBatch download plugins
for plugin in "${plugins[@]}"; do
name=$(echo $plugin | cut -d: -f1)
version=$(echo $plugin | cut -d: -f2)
echo "Downloading plugin: $name v$version"
wget -P jenkins_plugins "https://xget.xi-xu.me/jenkins/download/plugins/$name/$version/$name.hpi"
doneecho "All plugins downloaded!"
EOF
chmod +x download_jenkins_plugins.sh
./download_jenkins_plugins.sh
#### Offline Jenkins Deployment
For Jenkins deployment in offline environments:
/ Detailed source-code truncated for AI context efficiency. /#### Use in Project
##### Plugin Check in Jenkinsfile
pipeline {
agent any stages {
stage('Check Plugin Availability') {
steps {
script {
// Check Maven plugin availability
def pluginUrl = "https://xget.xi-xu.me/jenkins/download/plugins/maven-plugin/3.27/maven-plugin.hpi"
try {
def response = httpRequest url: pluginUrl, httpMode: 'HEAD'
if (response.status == 200) {
echo "Maven plugin available: ${pluginUrl}"
}
} catch (Exception e) {
error "Maven plugin not available: ${e.message}"
}
}
}
}
stage('Build') {
steps {
// Your build steps
echo "Building with accelerated plugins..."
}
}
}
}
Container Image Acceleration
#### Pull Images Directly
Pull GitHub Container Registry images
docker pull xget.xi-xu.me/cr/ghcr/nginxinc/nginx-unprivileged:latestPull Google Container Registry images
docker pull xget.xi-xu.me/cr/gcr/distroless/base:latestPull Microsoft Container Registry images
docker pull xget.xi-xu.me/cr/mcr/dotnet/runtime:8.0#### Kubernetes Deployment Configuration
deployment.yaml - Use Xget's images
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: xget.xi-xu.me/cr/ghcr/nginxinc/nginx-unprivileged:latest
ports:
- containerPort: 80
- name: redis
image: xget.xi-xu.me/cr/ghcr/bitnami/redis:alpine
ports:
- containerPort: 6379#### Docker Compose Configuration
docker-compose.yml - Use Xget accelerated images
version: '3.8'
services:
web:
image: xget.xi-xu.me/cr/ghcr/nginxinc/nginx-unprivileged:latest
ports:
- '80:80'
volumes:
- ./html:/usr/share/nginx/html database:
image: xget.xi-xu.me/cr/mcr/mssql/server:2022-latest
environment:
ACCEPT_EULA: Y
SA_PASSWORD: 'MyStrongPassword123!'
volumes:
- mssql_data:/var/opt/mssql
cache:
image: xget.xi-xu.me/cr/ghcr/bitnami/redis:alpine
ports:
- '6379:6379'
volumes:
mssql_data:
#### Dockerfile Optimization
Use Xget accelerated base images in Dockerfile
FROM xget.xi-xu.me/cr/ghcr/nodejs/node:18-alpine AS builderWORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
Production stage
FROM xget.xi-xu.me/cr/ghcr/nginxinc/nginx-unprivileged:latest
COPY --from=builder /app/dist /usr/share/nginx/htmlUse Microsoft Container Registry's .NET image
FROM xget.xi-xu.me/cr/mcr/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY --from=builder /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]#### CI/CD Integration
GitHub Actions - Use Xget to accelerate container builds
name: Build and Deploy
on: [push]jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build with accelerated base images
run: |
# Build using Xget's base images
docker build -t myapp:latest \
--build-arg BASE_IMAGE=xget.xi-xu.me/cr/ghcr/nodejs/node:18-alpine .
- name: Test with accelerated images
run: |
# Test using accelerated images
docker run --rm \
xget.xi-xu.me/cr/mcr/dotnet/runtime:8.0 \
dotnet --version
#### Podman Configuration
Configure Podman to use Xget image acceleration
Edit /etc/containers/registries.conf
[[registry]]
prefix = "ghcr.io"
location = "xget.xi-xu.me/cr/ghcr"Or pull directly
podman pull xget.xi-xu.me/cr/ghcr/alpine/alpine:latest
podman pull xget.xi-xu.me/cr/ghcr/nginxinc/nginx-unprivileged:latest#### containerd Configuration
Configure containerd to use Xget
Edit /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."ghcr.io"]
endpoint = ["https://xget.xi-xu.me/cr/ghcr"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
endpoint = ["https://xget.xi-xu.me/cr/gcr"]Restart containerd
sudo systemctl restart containerdAI Inference API Acceleration
#### OpenAI API
from openai import OpenAIclient = OpenAI(
api_key="your-api-key",
base_url="https://xget.xi-xu.me/ip/openai/v1", # Use Xget
)
response = client.responses.create(
model="gpt-5.1",
input="Hello, GPT!",
)
print(response.output_text)
#### Claude API
from anthropic import Anthropicclient = Anthropic(
api_key="your-api-key",
base_url="https://xget.xi-xu.me/ip/anthropic", # Use Xget
)
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=256,
messages=[
{
"role": "user",
"content": "Hello, Claude!",
}
],
)
print(message.content[0].text)
#### Gemini API
from google import genai
from google.genai import typesclient = genai.Client(
api_key="your-api-key",
http_options=types.HttpOptions(base_url="https://xget.xi-xu.me/ip/gemini"), # Use Xget
)
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents="Hello, Gemini!",
)
print(response.text)
#### Multi-Provider Unified Interface
from openai import OpenAIproviders = [
("Cohere", "your-cohere-api-key", "/cohere/compatibility/v1", "command-a-03-2025"),
("Mistral", "your-mistral-api-key", "/mistralai/v1", "mistral-medium-latest"),
("xAI", "your-xai-api-key", "/xai/v1", "grok-4"),
]
for name, key, path, model in providers:
client = OpenAI(api_key=key, base_url="https://xget.xi-xu.me/ip" + path) # Use Xget
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": f"Hello, who are you?"}],
)
print(name, "=>", response.choices[0].message.content)
#### Use in JavaScript/Node.js
// OpenAI API acceleration
import OpenAI from 'openai';const openaiClient = new OpenAI({
apiKey: 'your-openai-api-key',
baseURL: 'https://xget.xi-xu.me/ip/openai/v1' // Use Xget
});
async function chatWithGPT() {
const response = await openaiClient.responses.create({
model: 'gpt-5.1',
input: 'Hello, GPT!'
});
console.log(response.output_text);
}
// Claude API acceleration
import Anthropic from '@anthropic-ai/sdk';
const anthropicClient = new Anthropic({
apiKey: 'your-claude-api-key',
baseURL: 'https://xget.xi-xu.me/ip/anthropic' // Use Xget
});
async function chatWithClaude() {
const message = await anthropicClient.messages.create({
model: 'claude-sonnet-4-5',
max_tokens: 256,
messages: [
{
role: 'user',
content: 'Hello, Claude!'
}
]
});
console.log(message.content[0].text);
}
// Gemini API acceleration
import { GoogleGenAI } from '@google/genai';
const geminiClient = new GoogleGenAI({
apiKey: 'your-gemini-api-key'
});
async function chatWithGemini() {
const response = await geminiClient.models.generateContent({
model: 'gemini-3-pro-preview',
contents: 'Hello, Gemini!',
config: {
httpOptions: {
baseUrl: 'https://xget.xi-xu.me/ip/gemini' // Use Xget
}
}
});
console.log(response.text);
}
#### Environment Variable Configuration
Configure in .env file
OPENAI_BASE_URL=https://xget.xi-xu.me/ip/openai
ANTHROPIC_BASE_URL=https://xget.xi-xu.me/ip/anthropic
GEMINI_BASE_URL=https://xget.xi-xu.me/ip/gemini
COHERE_BASE_URL=https://xget.xi-xu.me/ip/cohere
MISTRAL_AI_BASE_URL=https://xget.xi-xu.me/ip/mistralai
GROQ_BASE_URL=https://xget.xi-xu.me/ip/groqThen use in code:
import os
from openai import OpenAIRead configuration from environment variables
client = OpenAI(
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_BASE_URL") # Automatically uses Xget
)Deployment
Deploy to Cloudflare Workers
1. Fork this repository:
Fork xixu-me/Xget
2. Get Cloudflare credentials:
- Visit
Account API tokens
to create and note an API token, using the "Edit Cloudflare Workers"
template.
- Visit
Workers and Pages
to note the Account ID.
3. Configure GitHub Secrets:
- Go to your GitHub repository → Settings → Secrets and variables → Actions
- Add the following secrets:
- CLOUDFLARE_API_TOKEN: Your API token
- CLOUDFLARE_ACCOUNT_ID: Your Account ID
4. Trigger deployment:
- Pushing code to the main branch will automatically trigger deployment
- Modifying only documentation files (.md), LICENSE, .gitignore, etc.
will not trigger deployment
- You can also manually trigger deployment in the GitHub Actions page
5. Bind custom domain (optional): Bind your custom domain in the Cloudflare
Workers console
Deploy to Cloudflare Pages
1. Fork this repository:
Fork xixu-me/Xget
2. Get Cloudflare credentials:
- Visit
Account API tokens
to create and note an API token, using the "Edit Cloudflare Workers"
template.
- Visit
Workers and Pages
to note the Account ID.
3. Configure GitHub Secrets:
- Go to your GitHub repository → Settings → Secrets and variables → Actions
- Add the following secrets:
- CLOUDFLARE_API_TOKEN: Your API token
- CLOUDFLARE_ACCOUNT_ID: Your Account ID
4. Trigger deployment:
- The repository will automatically convert Workers code to Pages-compatible
format and sync to the pages branch
- Pushing code to the main branch will automatically trigger sync and
deployment workflows
- Modifying only documentation files (.md), LICENSE, .gitignore, etc.
will not trigger deployment
- You can also manually trigger deployment in the GitHub Actions page
5. Bind custom domain (optional): Bind your custom domain in the Cloudflare
Pages console
Note: The pages branch is automatically generated from the main branch.
Do not manually edit the pages branch as it will be overwritten by the sync
workflow.
Deploy to EdgeOne Pages
1. Fork this repository:
Fork xixu-me/Xget
2. Get EdgeOne Pages API Token:
- Visit
China EdgeOne Console
or
International EdgeOne Console
to create and note an API Token
3. Configure GitHub Secrets:
- Go to your GitHub repository → Settings → Secrets and variables → Actions
- Add the following secret:
- EDGEONE_API_TOKEN: Your API Token
4. Trigger deployment:
- The repository will automatically convert Workers code to Pages-compatible
format and sync to the pages branch
- Pushing code to the main branch will automatically trigger sync and
deployment workflows
- Modifying only documentation files (.md), LICENSE, .gitignore, etc.
will not trigger deployment
- You can also manually trigger deployment in the GitHub Actions page
5. Bind custom domain (optional): Bind your custom domain in the EdgeOne
Pages console
Note: The pages branch is automatically generated from the main branch.
Do not manually edit the pages branch as it will be overwritten by the sync
workflow.
Deploy to Vercel
1. Fork this repository:
Fork xixu-me/Xget
2. Get Vercel credentials:
- Visit Vercel Account Settings
to create and note an Access Token
- Visit Team Settings to note the Team ID
- Visit project's Settings after creating a new project to note the Project
ID
3. Configure GitHub Secrets:
- Go to your GitHub repository → Settings → Secrets and variables → Actions
- Add the following secrets:
- VERCEL_TOKEN: Your Access Token
- VERCEL_ORG_ID: Your Team ID
- VERCEL_PROJECT_ID: Your Project ID
4. Trigger deployment:
- The repository will automatically convert Workers code to
Functions-compatible format and sync to the functions branch
- Pushing code to the main branch will automatically trigger sync and
deployment workflows
- Modifying only documentation files (.md), LICENSE, .gitignore, etc.
will not trigger deployment
- You can also manually trigger deployment in the GitHub Actions page
5. Bind custom domain (optional): Bind your custom domain in the Vercel
console
Note: The functions branch is automatically generated from the main
branch. Do not manually edit the functions branch as it will be overwritten by
the sync workflow.
Deploy to Netlify
1. Fork this repository:
Fork xixu-me/Xget
2. Get Netlify credentials:
- Visit Netlify User Settings to
create and note a personal access token
- Visit Project configuration after creating a new project to note the
Project ID
3. Configure GitHub Secrets:
- Go to your GitHub repository → Settings → Secrets and variables → Actions
- Add the following secrets:
- NETLIFY_AUTH_TOKEN: Your personal access token
- NETLIFY_SITE_ID: Your Project ID
4. Trigger deployment:
- The repository will automatically convert Workers code to
Functions-compatible format and sync to the functions branch
- Pushing code to the main branch will automatically trigger sync and
deployment workflows
- Modifying only documentation files (.md), LICENSE, .gitignore, etc.
will not trigger deployment
- You can also manually trigger deployment in the GitHub Actions page
5. Bind custom domain (optional): Bind your custom domain in the Netlify
console
Note: The functions branch is automatically generated from the main
branch. Do not manually edit the functions branch as it will be overwritten by
the sync workflow.
Deploy to Deno Deploy
1. Fork this repository:
Fork xixu-me/Xget
2. Switch default branch:
- Go to your GitHub repository → Settings → General → Default branch
- Switch the default branch from main to functions
3. Deploy to Deno Deploy:
- Follow the
Deno Deploy official documentation
for deployment
- Create a new project in the Deno Deploy console and connect your GitHub
repository
4. Bind custom domain (optional): Bind your custom domain in the Deno Deploy
console
Note: The functions branch is automatically generated from the main
branch. Do not manually edit the functions branch as it will be overwritten by
the sync workflow.
Self-Hosted Deployment
If you prefer to run Xget on your own server, you can use Docker or Podman
deployment:
#### Using Pre-built Image
Pull and run the pre-built image from GitHub Container Registry:
Using Docker:
Pull the latest image
docker pull ghcr.io/xixu-me/xget:latestRun the container
docker run -d \
--name xget \
-p 8080:8080 \
ghcr.io/xixu-me/xget:latestUsing Podman:
Pull the latest image
podman pull ghcr.io/xixu-me/xget:latestRun the container
podman run -d \
--name xget \
-p 8080:8080 \
ghcr.io/xixu-me/xget:latest#### Building Locally
Build the container image from source:
Using Docker:
Clone the repository
git clone https://github.com/xixu-me/Xget.git
cd XgetBuild the image
docker build -t xget:local .Run the container
docker run -d \
--name xget \
-p 8080:8080 \
xget:localUsing Podman:
Clone the repository
git clone https://github.com/xixu-me/Xget.git
cd XgetBuild the image
podman build -t xget:local .Run the container
podman run -d \
--name xget \
-p 8080:8080 \
xget:local#### Using Docker Compose / Podman Compose
Create a docker-compose.yml file:
version: '3.8'services:
xget:
image: ghcr.io/xixu-me/xget:latest
container_name: xget
ports:
- '8080:8080'
restart: unless-stopped
Using Docker Compose:
docker compose up -dUsing Podman Compose:
podman compose up -dAfter deployment, Xget will run on port 8080.
If you want to deploy and run Xget on DigitalOcean, please refer to
_Deploying and Optimizing Xget on DigitalOcean_.
By signing up via the referral link below, you can receive USD 200 in credits to
try Droplets, Kubernetes, App Platform, and more:
<p>
<a href="https://m.do.co/c/7efe110ca23f">
<img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg" width="201px">
</a>
</p>
Note: Self-hosted deployment does not include global edge network
acceleration. Performance depends on your server configuration and network
environment.
Configuration
Configuration Parameters
You can customize configuration by modifying src/config/index.js:
export const CONFIG = {
TIMEOUT_SECONDS: 30, // Request timeout (seconds)
MAX_RETRIES: 3, // Maximum retry count
RETRY_DELAY_MS: 1000, // Retry delay (milliseconds)
CACHE_DURATION: 300, // Fallback mutable cache duration (300 seconds = 5 minutes)
SECURITY: {
ALLOWED_METHODS: ['GET', 'HEAD'], // Base allowlist for regular requests; protocol traffic has broader built-in allowances
ALLOWED_ORIGINS: ['*'], // Allowed CORS origins
MAX_PATH_LENGTH: 2048 // Maximum path length (characters)
}
};Performance Tuning Recommendations
- Cache Optimization: Adjust the CACHE_DURATION fallback value based on
usage patterns; metadata and immutable artifacts use built-in policy TTLs
- Timeout Settings: Increase TIMEOUT_SECONDS appropriately for poor
network conditions
- Retry Strategy: Increase MAX_RETRIES and RETRY_DELAY_MS in
high-latency environments
Adding New Platforms
To add support for new platforms, update the platform catalog and, if needed,
the path transformers:
// src/config/platform-catalog.js
export const PLATFORM_CATALOG = {
// Existing platforms...
custom: 'https://example.com'
};// src/routing/platform-transformers.js
const PLATFORM_PATH_TRANSFORMERS = {
custom: path => path.replace(/^\/custom\//, '/')
};
Development
1. Repository Setup
git clone https://github.com/xixu-me/Xget.git
cd Xget
npm install
npx wrangler login # First time use2. Local Development
npm run dev # Start development server (http://localhost:8787)
npm run test:run # Run complete test suite
npm run test:coverage # Generate test coverage report
npm run lint # Code linting
npm run format # Code formatting
npm run deploy # Deploy to productionTesting
The repository includes a complete test suite to ensure code quality and
functional correctness.
Complete Testing
Install test dependencies
npm installRun all tests
npm run test:runGenerate coverage report
npm run test:coverageWatch mode
npm run test:watchTest Coverage
- Unit Tests: Core functionality, platform configuration, performance
monitoring
- Integration Tests: End-to-end processes, platform integration, Git
protocol
- Security Tests: Input validation, security headers, permission control
- Performance Tests: Response time, memory usage, concurrent processing
Troubleshooting
Common Issues
Q: No significant speed improvement? A: Check if source files are already
cached at CDN edge nodes. Initial access may be slower, subsequent accesses will
be significantly faster.
Q: Git operations failing? A: Confirm correct URL format is used and Git
client version supports HTTPS proxy.
Q: Cannot access after deployment? A: Check if Cloudflare Workers domain is
correctly bound, confirm wrangler.toml configuration is correct.
Q: Getting 400 error? A: Check URL path format, confirm platform prefix is
correctly used.
Performance Monitoring
Performance metrics are returned in response headers:
- X-Performance-Metrics: Contains timing statistics for request stages
- X-Cache-Status: Shows cache hit status
Log Debugging
In development environment, you can view detailed logs through Cloudflare
Workers console:
npx wrangler dev --log-level debugDisclaimer
- Legal and Compliant Use: This repository aims to provide unified
acceleration services for code repositories, package registries, AI inference
APIs, container images, models, datasets, and other legitimate developer
resources. Users must strictly comply with the laws and regulations of their
jurisdiction and the terms of service of relevant platforms. Any illegal use
is the sole responsibility of the user
- Non-Affiliation and Independent Responsibility: This repository has no
affiliation, agency, or partnership relationship with any third-party
platforms. Any fork, secondary development, redistribution, or derivative
version based on this repository is solely the responsibility of its
maintainer; authors, maintainers, and contributors bear no legal or joint
liability for the actions or consequences of derivative repositories
- No Warranty and Limitation of Liability: To the maximum extent permitted
by applicable law, this repository is provided "AS IS" without any express or
implied warranties (including but not limited to merchantability, fitness for
a particular purpose, non-infringement, etc.). Authors, maintainers, and
contributors assume no responsibility for any direct or indirect losses
(including but not limited to data loss, business interruption, profit loss,
etc.) resulting from the use of this repository
- Risk Assumption Principle: Users should independently assess usage risks,
ensure their use is legal and compliant, respect third-party rights, and must
not use this repository for any illegal, infringing, malicious, or improper
purposes
- Third-Party Platform Compliance: Users must comply with the terms of
service, API usage policies, rate limits, and copyright requirements of
relevant platforms, and avoid causing overload or interference to source
platforms. Each platform has the final interpretation right over its content,
services, and policies
- Intellectual Property Protection: Content obtained through this repository
is protected by respective copyright laws. Users must comply with relevant
licensing agreements, copyright notices, and terms of use, and must not engage
in any activities that infringe intellectual property rights
- Security Recommendations: Although this repository adopts a no-log
architecture and does not store user request data, due to inherent risks of
internet transmission, users are advised to perform security scans on
downloaded content, especially for executable files and scripts
- Open Source Nature: This repository is open source. Authors and
contributors are not obligated to provide technical support, bug fixes, or
continuous maintenance. The inclusion of external contributions does not
constitute endorsement or commitment to specific uses or effects
- Name Usage Guidelines: Any representations that may imply authors or
contributors provide commercial cooperation, technical support, guarantees, or
endorsements are strictly prohibited. The use of repository names or author
identifiers must comply with relevant laws and regulations as well as general
norms
- Disclaimer Updates: This disclaimer may be updated and revised as the
repository develops or legal environments change. Continued use, copying,
distribution, or modification of this repository constitutes acceptance of the
latest version of this disclaimer
Project Resources
We welcome all forms of contribution. Start with the
Contributing Guide, and use these project documents when you
need the full collaboration and maintenance context:
- Code of Conduct
- Security Policy
- Governance
You can help by:
1. Report Issues: Use
issue templates to
report bugs or propose feature requests.
2. Submit Code: Fork the repository, create a feature branch, and open a
pull request.
3. Improve Documentation: Fix errors, add examples, and improve
explanations.
4. Testing Feedback: Validate Xget in different environments and share what
you learn.
Copyright © Xi Xu.
This repository is licensed under the AGPL-3.0 License. SeeLICENSE for details.
Star History
<a href="https://www.star-history.com/#xixu-me/Xget&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=xixu-me/Xget&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=xixu-me/Xget&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=xixu-me/Xget&type=Date" />
</picture>
</a>
---
<div align="center">
If this repository helps you, please consider giving it a ⭐ star!
Made with ❤️ by Xi Xu
</div>
[](https://dartnode.com 'Powered by DartNode - Free VPS for Open Source')
---
SECURITY
Security Policy
Xget proxies requests across code hosting platforms, package registries,
container registries, and AI inference providers. If you believe you have found
a security vulnerability, please report it responsibly and avoid public
disclosure until maintainers have had a chance to investigate.
Supported versions
Security fixes are developed against the latest code on main. Backports to
older revisions or downstream forks are not guaranteed.
| Version | Supported |
| ------------------------------ | ---------------- |
| main | Yes |
| Older commits, tags, and forks | Best effort only |
How to report a vulnerability
Please do not open a public GitHub issue for suspected vulnerabilities.
Instead, use one of these private channels:
1. GitHub private vulnerability reporting for this repository, if it is enabled
2. The maintainer contact page at <https://xi-xu.me/#contact>
Please include as much of the following as you can:
- A clear description of the vulnerability
- The affected code path, route shape, platform prefix, or deployment flow
- Reproduction steps or a proof of concept
- Impact assessment, including confidentiality, integrity, or availability
concerns
- Any suggested remediation, if you have one
- Sanitized logs, headers, or payload samples with secrets removed
What to expect
- Maintainers will acknowledge reports on a best-effort basis
- Reports will be reviewed privately and handled confidentially where possible
- Maintainers may ask follow-up questions to validate severity and scope
- If the report is confirmed, maintainers will work toward a fix and coordinate
a disclosure timeline
Scope notes
The following are usually in scope:
- Vulnerabilities in Xget source code
- Security weaknesses in official deployment manifests or adapters
- Authentication, header forwarding, request validation, cache isolation, and
secret handling issues
The following are usually out of scope unless Xget directly introduces them:
- Availability-only complaints caused by third-party outages
- Misconfiguration in self-hosted deployments outside the repository defaults
- Issues in upstream services that Xget only proxies
Handling sensitive information
Do not include private tokens, credentials, or other secrets in public issues,
pull requests, or discussion threads. If a proof of concept requires secrets,
share them only through a private reporting channel and rotate them afterward.
---