# Script-Hub: Proxy Script and Rule Set Converter for iOS Proxy Apps

> Script-Hub is a GPL-3.0 licensed web tool that converts proxy scripts and rule sets between QuantumultX, Loon, Surge, Stash, Shadowrocket, Egern, LanceX, and related iOS proxy apps. It runs as a Node.js server or Docker container, exposes a browser UI for conversion, and allows remote parameter modification without pulling scripts to a local module.

**Script-Hub-Org/Script-Hub** — Advanced Script Converter for QX, Loon, Surge, Stash, Egern, LanceX and Shadowrocket - 重写 & 规则集转换

- Repository: https://github.com/Script-Hub-Org/Script-Hub
- Website: https://scripthub.vercel.app
- Stars: 3,791 · Forks: 158
- Language: JavaScript
- License: GPL-3.0
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/script-hub-org-script-hub

## What Script-Hub Solves and Who Uses It

iOS proxy apps such as QuantumultX (QX), Surge, Loon, Shadowrocket, and Stash each use different formats for scripts and rule sets. A script written as a QX rewrite cannot be loaded directly into Surge or Loon without conversion. Users who maintain configurations across multiple devices or want to use a community-written script in an app it was not written for face a manual conversion problem. Script-Hub addresses this as a web-based conversion tool. The README summarizes the conversions it supports: parsing QX rewrites to Surge, Shadowrocket, Loon, and Stash formats; parsing Surge modules to Loon and Stash; parsing Loon plugins to Surge, Shadowrocket, and Stash; and parsing QX, Surge, Loon, Shadowrocket, and Clash rule sets for use in Surge, Shadowrocket, Stash, and Loon. The primary audience is technical iOS users in China who manage proxy configurations actively, as indicated by the Telegram communities and the primarily Chinese-language README.

## Supported Conversions and Rule Formats

Script-Hub covers both script (rewrite/module/plugin) conversion and rule set conversion. For scripts, the conversion directions are: QX rewrite to Surge, Shadowrocket, Loon, and Stash; Surge module to Loon and Stash; Loon plugin to Surge, Shadowrocket, and Stash. These cover the most common sharing patterns in Chinese iOS proxy communities, where scripts are frequently shared in QX or Surge format. For rule sets, the README lists support for QX, Surge, Loon, Shadowrocket, and Clash rule set parsing, usable in Surge, Shadowrocket, Stash, and Loon. QX scripts can also be converted to Surge scripts (compatible format). One-click import links are generated for Shadowrocket, Loon, and Stash, letting a user send a converted result directly to the target app without copying a URL manually. The README also describes a QX-to-Surge script conversion path in addition to module conversion.

## Running Script-Hub Locally

The repository includes a Dockerfile and a package.json with npm scripts. The Dockerfile uses node:18-alpine as the base image and exposes ports 9100 and 9101. The service.js file at the root is the server entry point. The package.json defines three scripts: service (runs nodemon service.js), preview (runs nodemon preview.js), and export_html (runs cross-env EXPORT_HTML=true node preview.js). The README documents the preview script as a local HTML content preview:

```bash
pnpm preview
```

For the full server, the Dockerfile CMD shows `pnpm service` is the start command, which in turn runs:

```bash
nodemon service.js
```

The .nvmrc file pins a Node.js version for consistent local development. Dependencies include koa (web framework), got (HTTP client), iconv-lite (character encoding conversion), crypto-js (cryptography), and lodash (utilities). The pnpm package manager is used throughout, with pnpm@9.1.0 specified as the package manager in the package.json packageManager field.

## The Parameter Modification Workflow

One use case the README emphasizes is modifying parameters in a remote script or module without cloning it locally. Some proxy scripts require an argument or parameter to function, but if you use the script as a remote URL you cannot edit its content. Script-Hub's Advanced function and the Modify Parameter feature let you point at a remote URL, specify the content or argument change, and use the resulting modified URL directly in your proxy app. This avoids the common workaround of copying a script to a local module, editing it, and maintaining the local copy separately. The README describes this as: the plain text to Advanced operation and Modify Parameter workflow, which modifies any arbitrary content or argument parameter in a remote URL, without needing to copy the script to a local module. This is the core convenience that distinguishes Script-Hub from a simple format converter.

## Ecosystem: Surge Module Tool and Related Projects

The README includes a section listing related ecosystem tools. The Surge Module Tool (SurgeModuleTool.js at the root) supports one-click import into Surge and requires the Scriptable app. A macOS variant (SurgeModuleTool_macOS.js) is also present. The project credits a number of contributors: Env.js from @Chavy forms the foundation, resource-parser.js from @KOP-XIAO provided significant reference, and frontend work is attributed to @xream. The README acknowledges contributions from multiple community members, which is typical for tools in this space: iOS proxy app scripting is a distributed community effort where many tools build on each other's components. The modules/ directory likely contains format-specific parsing modules corresponding to each supported app format.

## License and What Script-Hub Does Not Do

Script-Hub is released under the GPL-3.0 license, which requires that any modifications to the source code be released under the same license. This is a stronger copyleft requirement than MIT or Apache, and it matters for anyone who wants to incorporate Script-Hub's conversion logic into a closed-source tool. The README does not document any hosted public instance with guaranteed uptime; the Vercel deployment at scripthub.vercel.app is described as the live demo but is not described as a managed service. Script-Hub does not create or author proxy scripts: it converts existing ones between formats. It also does not validate that a converted script is functionally correct in the target format; conversion covers the structural transformation but edge cases in specific app versions may require manual review. The last push to the repository was on 2026-06-21.

## Script-Hub vs Direct Rule File Editing

An alternative to Script-Hub is editing proxy rule files manually. Most iOS proxy apps use text-based rule files that follow a documented syntax, and a user comfortable with configuration files can translate a rule or rewrite by hand. The practical barrier is time and knowledge: different apps use different syntax for the same logical operation, and a rule for blocking a domain in QX syntax is not the same string as the equivalent Stash rule. Script-Hub automates this translation for the common conversion paths. Manual editing remains necessary for cases not covered by Script-Hub's supported conversion paths, such as converting to app formats not in the list (Egern and LanceX have more limited support), or when fine-grained control over the output is required. The full server deployment version (listed in the README wiki as still in testing at the time of writing) is described as operating without requiring a proxy app at all.

## Conclusion

Script-Hub suits users of iOS proxy apps who need to convert scripts or rule sets from one app format to another without manually editing configuration files. The tool is most useful when a script is written for QuantumultX or Surge and you need it in Loon or Stash format, or when a remote script needs a parameter changed without forking it locally. The last push to this repository was on 2026-06-21. Users in China maintain active communities on Telegram at the linked channels.

## FAQ

### How do you use Script-Hub?

Script-Hub provides a browser UI where you paste a script URL or content, select the source and target app formats, and generate a converted result or modified URL. For self-hosting, run `pnpm service` after installing dependencies, which starts the service on ports 9100 and 9101. A Docker image is also provided.

### Does Script-Hub work with Surge modules?

Yes. Script-Hub can parse Surge modules and convert them to Loon and Stash formats, according to the README. It also converts QX rewrites to Surge format and handles Loon plugins to Surge conversion.

### What license does Script-Hub use?

Script-Hub is licensed under GPL-3.0, which requires any modifications to the source code to be released under the same license. This applies to forks and derived works but not to users who simply run the tool.

## Sources

- [Issues](https://github.com/Script-Hub-Org/Script-Hub/issues)
- [License: GPL-3.0](https://github.com/Script-Hub-Org/Script-Hub/blob/main/LICENSE)
- [Project website](https://scripthub.vercel.app)
- [README](https://github.com/Script-Hub-Org/Script-Hub/blob/main/README.md)
- [Script-Hub-Org/Script-Hub on GitHub](https://github.com/Script-Hub-Org/Script-Hub)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/script-hub-org-script-hub
