Sanitized public skill package for Xray/VLESS/XHTTP VPN orchestration
Public, sanitized release package for the xray-xhttp-vpn-orchestrator skill.
This repository contains one visible orchestrator skill with internal worker modules and deterministic helper scripts for authorized Xray/VLESS/XHTTP VPN operations. It is built for cases where an AI agent must configure or audit VPN infrastructure without leaking secrets, inventing evidence, or applying live DNS/VPS changes too early.
Markdown versions:
xray-xhttp-vpn-orchestrator is a workflow and automation skill for safe Xray/VLESS/XHTTP VPN work:
group/workers/*/WORKER.md;scripts/;The skill is not a generic VPN product and not a subscription panel. It is an agent-side operating discipline plus scripts for people who already own or administer their VPS, DNS zone, and client devices.
This is useful for:
It is probably too heavy if you only need to paste one VLESS URI into one app once.
The current package can:
clients/<device>/xray-client-full-split.json;clients/<device>/vless-uri.txt;xray-outbound.json, sing-box-outbound.json, and clash-mihomo.yaml;Real device import/connect proof still requires device-side smoke tests in the target client apps. The pinned parser gate proves configuration acceptance only; it does not claim that a live VPN connection succeeds or that traffic selects the intended route.
Before DNS, server build, or client artifact work, the orchestrator can route missing or ambiguous domain requests to dns-endpoint-selector.
The selector produces an endpoint-domain-decision.json contract with:
server_name, and client endpoint;The recommended path is a dedicated owned subdomain such as vpn.example.net. Root domains require explicit root/www/mail impact review. FreeDNS/shared-domain endpoints are fallback only: they may be useful when the user has no domain, but they carry reputation, availability, account-policy, and ownership-control risks. The package does not automate FreeDNS account creation, web-panel login, captcha handling, or HTML form scraping, and it must not store token-bearing FreeDNS update URLs.
For each device identity, the main artifact is:
clients/<identity_ref>/xray-client-full-split.json
It contains:
The fallback import artifact is:
clients/<identity_ref>/vless-uri.txt
This is useful for clients that import VLESS links more reliably than full JSON.
xray-xhttp-vpn-orchestrator-public/
├── README.md
├── LICENSE
├── adapters/
│ ├── codex/
│ ├── claude-code/
│ ├── gemini/
│ ├── antigravity/
│ ├── vs-codium/
│ ├── qwen/
│ ├── zai-glm/
│ ├── kimi/
│ └── github-copilot/
├── docs/diagrams/
├── release/
└── xray-xhttp-vpn-orchestrator/
├── SKILL.md
├── group/workers/*/WORKER.md
├── scripts/
├── assets/examples/
└── evals/
Only xray-xhttp-vpn-orchestrator/SKILL.md is the visible skill entrypoint. Worker files are internal modules and must not be installed as separate top-level skills.
| Target | Package support |
|---|---|
| Codex | Native single-skill container shape |
| Claude Code | Portable adapter instructions |
| Gemini | Portable adapter instructions |
| Antigravity | Portable adapter instructions |
| VS Codium | Portable adapter instructions |
| Qwen | Portable adapter instructions |
| Z.ai GLM | Portable adapter instructions |
| Kimi | Portable adapter instructions |
| GitHub Copilot | Portable repository instruction adapter |
Target notes are in adapters/<target>/. Non-Codex targets are packaged as portable instructions until their native runtime loading is smoke-tested in the target environment.
GitHub Actions workflow: .github/workflows/ci.yml.
The CI pipeline runs on push, pull_request, and manual workflow_dispatch:
scripts/run_all_checks.py;npm pack --dry-run.Automated publishing/deployment is not configured. Release publication is manual by design so package or registry tokens are not stored in the repository or GitHub Actions secrets without an explicit release policy.
Apache License 2.0. See LICENSE.
Python helper scripts intentionally use only the Python standard library. requirements.txt is present as an explicit dependency contract and currently contains no external packages.
python -m pip install -r requirements.txt
Optional external CLIs such as xray, sing-box, mihomo, ssh, scp, and gh are detected by the relevant scripts when needed; they are not Python package dependencies.
The FI example intentionally contains public endpoint facts only. It does not contain real UUIDs, client links, tokens, private keys, or server logs.
From the public package root:
cd xray-xhttp-vpn-orchestrator
python3 scripts/generate_xray_build_package.py \
--input assets/examples/fi-xhttp-443-new-users-build-input.json \
--out /tmp/fi-xhttp-build \
--generate-uuid
The command creates a private build package under /tmp/fi-xhttp-build. Because --generate-uuid creates real device UUID material, do not commit that output.
Generate per-device client artifacts:
python3 scripts/export_xray_artifacts.py \
--input /tmp/fi-xhttp-build/client-export-input.json \
--out /tmp/fi-xhttp-clients
Validate artifacts:
python3 scripts/validate_client_artifacts.py \
/tmp/fi-xhttp-clients/client-artifacts.manifest.json \
--output /tmp/fi-xhttp-clients/validation-report.json
python3 scripts/validate_split_routing.py \
--input /tmp/fi-xhttp-clients/clients/phone-user-fi-example/xray-client-full-split.json \
--output /tmp/fi-xhttp-clients/phone-user-split-routing.json
Plan deployment without changing the VPS:
python3 scripts/deploy_xray_xhttp_server.py \
--package-dir /tmp/fi-xhttp-build \
--host 203.0.113.10 \
--user root \
--output /tmp/fi-xhttp-build/deploy-dry-run.json
Live apply requires explicit operator approval and:
--apply --acknowledge-live-mutation
Generated build/client output is private and is not part of this repository. The release package is checked by sanitation tests before publication.
From inside xray-xhttp-vpn-orchestrator/:
python3 tests/test_xray_artifact_exporter.py
python3 scripts/run_all_checks.py --skill-path . --workspace /tmp/xray-xhttp-release-checks
python3 scripts/check_single_container_package.py .
Static validation is not the same as live client proof. Real production confidence requires:
xray run -test and nginx -t;Это публичный очищенный пакет skill-а xray-xhttp-vpn-orchestrator.
Пакет содержит один видимый skill-оркестратор, внутренние worker-модули и набор детерминированных скриптов для разрешённой работы с Xray/VLESS/XHTTP VPN. Он нужен не для красивой демонстрации, а для практической работы: собрать конфиги, не потерять порядок действий, не засветить секреты и не применить опасные DNS/VPS изменения без явного подтверждения.
xray-xhttp-vpn-orchestrator помогает агенту:
group/workers/*/WORKER.md;scripts/;Это не VPN-панель и не сервис подписок. Это рабочий skill для владельца VPS/DNS/клиентов, который хочет, чтобы агент действовал аккуратно и проверяемо.
Пакет полезен, если вы:
Текущая версия умеет:
clients/<device>/xray-client-full-split.json;clients/<device>/vless-uri.txt;xray-outbound.json, sing-box-outbound.json, clash-mihomo.yaml;Реальная проверка импорта и подключения всё равно делается на физических клиентах: v2rayN, v2rayNG, Nekoray, Shadowrocket, Streisand, Happ и других.
Если endpoint-домен не выбран, skill сначала ведёт пользователя через dns-endpoint-selector, а не сразу собирает сервер или клиентские конфиги.
Worker формирует endpoint-domain-decision.json:
server_name и client endpoint;Практичный default — отдельный поддомен своего домена, например vpn.example.net. Root-домен требует отдельной проверки влияния на root/www/mail. FreeDNS/shared-domain — только fallback, если своего домена нет: там выше риски репутации, доступности, политики аккаунта и контроля имени. Пакет не автоматизирует создание FreeDNS-аккаунта, вход в web-panel, captcha, HTML-form scraping и не должен хранить FreeDNS update URL/token.
Для каждого устройства главный файл:
clients/<identity_ref>/xray-client-full-split.json
В нём есть:
Fallback-файл:
clients/<identity_ref>/vless-uri.txt
Он нужен для клиентов, которым проще импортировать VLESS-ссылку, чем полный JSON.
Release-check использует официальный Xray с точной версией и SHA-256 из references/xray-compatibility-matrix.json. Это подтверждает parser validity, но не live-connect, фактический выбор маршрута или импорт в физическом клиенте.
Для Codex установите папку xray-xhttp-vpn-orchestrator/ как один skill. Worker-файлы внутри group/workers/ не надо устанавливать отдельно.
Для других провайдеров используйте adapter-файлы:
adapters/claude-code/CLAUDE.mdadapters/gemini/GEMINI.mdadapters/antigravity/AGENTS.mdadapters/vs-codium/AGENTS.mdadapters/qwen/QWEN.mdadapters/zai-glm/GLM.mdadapters/kimi/KIMI.mdadapters/github-copilot/copilot-instructions.mdApache License 2.0. См. LICENSE.
GitHub Actions workflow лежит здесь: .github/workflows/ci.yml.
Пайплайн запускается на push, pull_request и вручную через workflow_dispatch; он проверяет Python 3.11/3.12/3.13, release checks, FI quick-start smoke, sanitation и npm pack --dry-run.
Автоматическая публикация/деплой не настроены. Релизы публикуются вручную, чтобы не хранить package/registry tokens в репозитории или GitHub Actions secrets без отдельной release-policy.
Python-скрипты намеренно используют только стандартную библиотеку Python. requirements.txt добавлен как явный контракт зависимостей; внешних Python-пакетов сейчас нет.
python -m pip install -r requirements.txt
Быстрый пример на очищенных FI facts:
cd xray-xhttp-vpn-orchestrator
python3 scripts/generate_xray_build_package.py \
--input assets/examples/fi-xhttp-443-new-users-build-input.json \
--out /tmp/fi-xhttp-build \
--generate-uuid
python3 scripts/export_xray_artifacts.py \
--input /tmp/fi-xhttp-build/client-export-input.json \
--out /tmp/fi-xhttp-clients
Важно: результат в /tmp/fi-xhttp-build и /tmp/fi-xhttp-clients уже содержит приватные UUID/client artifacts. Его нельзя коммитить в публичный репозиторий.
Проверка:
python3 scripts/validate_client_artifacts.py \
/tmp/fi-xhttp-clients/client-artifacts.manifest.json \
--output /tmp/fi-xhttp-clients/validation-report.json
python3 scripts/validate_split_routing.py \
--input /tmp/fi-xhttp-clients/clients/phone-user-fi-example/xray-client-full-split.json \
--output /tmp/fi-xhttp-clients/phone-user-split-routing.json
Сгенерированные build/client outputs приватные и не входят в этот репозиторий. Перед публикацией пакет проверяется sanitation-тестами.