mcp-xray-pilot 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +502 -0
  3. package/data/docs/_index.json +533 -0
  4. package/data/docs/basic__api.md +148 -0
  5. package/data/docs/basic__dns.md +366 -0
  6. package/data/docs/basic__fakedns.md +202 -0
  7. package/data/docs/basic__geodata.md +64 -0
  8. package/data/docs/basic__inbound.md +159 -0
  9. package/data/docs/basic__index.md +136 -0
  10. package/data/docs/basic__log.md +67 -0
  11. package/data/docs/basic__metrics.md +262 -0
  12. package/data/docs/basic__observatory.md +115 -0
  13. package/data/docs/basic__outbound.md +164 -0
  14. package/data/docs/basic__policy.md +140 -0
  15. package/data/docs/basic__reverse.md +268 -0
  16. package/data/docs/basic__routing.md +474 -0
  17. package/data/docs/basic__stats.md +61 -0
  18. package/data/docs/basic__transport.md +1283 -0
  19. package/data/docs/features__features_browser_dialer.md +61 -0
  20. package/data/docs/features__features_env.md +66 -0
  21. package/data/docs/features__features_fallback.md +110 -0
  22. package/data/docs/features__features_index.md +17 -0
  23. package/data/docs/features__features_multiple.md +144 -0
  24. package/data/docs/features__features_xtls.md +13 -0
  25. package/data/docs/inbounds__inbounds_dokodemo.md +11 -0
  26. package/data/docs/inbounds__inbounds_http.md +80 -0
  27. package/data/docs/inbounds__inbounds_hysteria.md +60 -0
  28. package/data/docs/inbounds__inbounds_index.md +22 -0
  29. package/data/docs/inbounds__inbounds_shadowsocks.md +118 -0
  30. package/data/docs/inbounds__inbounds_socks.md +87 -0
  31. package/data/docs/inbounds__inbounds_trojan.md +78 -0
  32. package/data/docs/inbounds__inbounds_tun.md +47 -0
  33. package/data/docs/inbounds__inbounds_tunnel.md +86 -0
  34. package/data/docs/inbounds__inbounds_vless.md +135 -0
  35. package/data/docs/inbounds__inbounds_vmess.md +95 -0
  36. package/data/docs/inbounds__inbounds_wireguard.md +78 -0
  37. package/data/docs/outbounds__outbounds_blackhole.md +42 -0
  38. package/data/docs/outbounds__outbounds_dns.md +97 -0
  39. package/data/docs/outbounds__outbounds_freedom.md +170 -0
  40. package/data/docs/outbounds__outbounds_http.md +70 -0
  41. package/data/docs/outbounds__outbounds_hysteria.md +39 -0
  42. package/data/docs/outbounds__outbounds_index.md +24 -0
  43. package/data/docs/outbounds__outbounds_loopback.md +65 -0
  44. package/data/docs/outbounds__outbounds_shadowsocks.md +105 -0
  45. package/data/docs/outbounds__outbounds_socks.md +58 -0
  46. package/data/docs/outbounds__outbounds_trojan.md +49 -0
  47. package/data/docs/outbounds__outbounds_vless.md +122 -0
  48. package/data/docs/outbounds__outbounds_vmess.md +76 -0
  49. package/data/docs/outbounds__outbounds_wireguard.md +141 -0
  50. package/data/docs/transports__transports_grpc.md +137 -0
  51. package/data/docs/transports__transports_h2.md +11 -0
  52. package/data/docs/transports__transports_http.md +11 -0
  53. package/data/docs/transports__transports_httpupgrade.md +61 -0
  54. package/data/docs/transports__transports_hysteria.md +110 -0
  55. package/data/docs/transports__transports_index.md +19 -0
  56. package/data/docs/transports__transports_mkcp.md +125 -0
  57. package/data/docs/transports__transports_quic.md +11 -0
  58. package/data/docs/transports__transports_raw.md +156 -0
  59. package/data/docs/transports__transports_splithttp.md +11 -0
  60. package/data/docs/transports__transports_tcp.md +11 -0
  61. package/data/docs/transports__transports_websocket.md +75 -0
  62. package/data/docs/transports__transports_xhttp.md +11 -0
  63. package/dist/data/compatibility.js +170 -0
  64. package/dist/data/compatibility.js.map +1 -0
  65. package/dist/data/geocatalogue.js +191 -0
  66. package/dist/data/geocatalogue.js.map +1 -0
  67. package/dist/docs.js +339 -0
  68. package/dist/docs.js.map +1 -0
  69. package/dist/handlers.js +217 -0
  70. package/dist/handlers.js.map +1 -0
  71. package/dist/index.js +66 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/lint.js +737 -0
  74. package/dist/lint.js.map +1 -0
  75. package/dist/schemas/protocols/blackhole.js +16 -0
  76. package/dist/schemas/protocols/blackhole.js.map +1 -0
  77. package/dist/schemas/protocols/common.js +32 -0
  78. package/dist/schemas/protocols/common.js.map +1 -0
  79. package/dist/schemas/protocols/dns.js +14 -0
  80. package/dist/schemas/protocols/dns.js.map +1 -0
  81. package/dist/schemas/protocols/dokodemo.js +17 -0
  82. package/dist/schemas/protocols/dokodemo.js.map +1 -0
  83. package/dist/schemas/protocols/freedom.js +45 -0
  84. package/dist/schemas/protocols/freedom.js.map +1 -0
  85. package/dist/schemas/protocols/http.js +38 -0
  86. package/dist/schemas/protocols/http.js.map +1 -0
  87. package/dist/schemas/protocols/hysteria.js +51 -0
  88. package/dist/schemas/protocols/hysteria.js.map +1 -0
  89. package/dist/schemas/protocols/index.js +50 -0
  90. package/dist/schemas/protocols/index.js.map +1 -0
  91. package/dist/schemas/protocols/loopback.js +11 -0
  92. package/dist/schemas/protocols/loopback.js.map +1 -0
  93. package/dist/schemas/protocols/shadowsocks.js +60 -0
  94. package/dist/schemas/protocols/shadowsocks.js.map +1 -0
  95. package/dist/schemas/protocols/socks.js +42 -0
  96. package/dist/schemas/protocols/socks.js.map +1 -0
  97. package/dist/schemas/protocols/trojan.js +34 -0
  98. package/dist/schemas/protocols/trojan.js.map +1 -0
  99. package/dist/schemas/protocols/tun.js +19 -0
  100. package/dist/schemas/protocols/tun.js.map +1 -0
  101. package/dist/schemas/protocols/vless.js +44 -0
  102. package/dist/schemas/protocols/vless.js.map +1 -0
  103. package/dist/schemas/protocols/vmess.js +48 -0
  104. package/dist/schemas/protocols/vmess.js.map +1 -0
  105. package/dist/schemas/protocols/wireguard.js +34 -0
  106. package/dist/schemas/protocols/wireguard.js.map +1 -0
  107. package/dist/schemas/security/index.js +16 -0
  108. package/dist/schemas/security/index.js.map +1 -0
  109. package/dist/schemas/security/reality.js +35 -0
  110. package/dist/schemas/security/reality.js.map +1 -0
  111. package/dist/schemas/security/tls.js +46 -0
  112. package/dist/schemas/security/tls.js.map +1 -0
  113. package/dist/schemas/security/xtls.js +17 -0
  114. package/dist/schemas/security/xtls.js.map +1 -0
  115. package/dist/schemas/transports/grpc.js +18 -0
  116. package/dist/schemas/transports/grpc.js.map +1 -0
  117. package/dist/schemas/transports/httpupgrade.js +14 -0
  118. package/dist/schemas/transports/httpupgrade.js.map +1 -0
  119. package/dist/schemas/transports/hysteria.js +25 -0
  120. package/dist/schemas/transports/hysteria.js.map +1 -0
  121. package/dist/schemas/transports/index.js +32 -0
  122. package/dist/schemas/transports/index.js.map +1 -0
  123. package/dist/schemas/transports/mkcp.js +34 -0
  124. package/dist/schemas/transports/mkcp.js.map +1 -0
  125. package/dist/schemas/transports/raw.js +19 -0
  126. package/dist/schemas/transports/raw.js.map +1 -0
  127. package/dist/schemas/transports/websocket.js +15 -0
  128. package/dist/schemas/transports/websocket.js.map +1 -0
  129. package/dist/schemas/transports/xhttp.js +34 -0
  130. package/dist/schemas/transports/xhttp.js.map +1 -0
  131. package/dist/search.js +78 -0
  132. package/dist/search.js.map +1 -0
  133. package/dist/state.js +87 -0
  134. package/dist/state.js.map +1 -0
  135. package/dist/tools.js +274 -0
  136. package/dist/tools.js.map +1 -0
  137. package/dist/tools_impl/diff.js +55 -0
  138. package/dist/tools_impl/diff.js.map +1 -0
  139. package/dist/tools_impl/github.js +416 -0
  140. package/dist/tools_impl/github.js.map +1 -0
  141. package/dist/tools_impl/merge.js +181 -0
  142. package/dist/tools_impl/merge.js.map +1 -0
  143. package/dist/tools_impl/refresh.js +46 -0
  144. package/dist/tools_impl/refresh.js.map +1 -0
  145. package/dist/tools_impl/suggest.js +169 -0
  146. package/dist/tools_impl/suggest.js.map +1 -0
  147. package/dist/types.js +10 -0
  148. package/dist/types.js.map +1 -0
  149. package/dist/utils.js +81 -0
  150. package/dist/utils.js.map +1 -0
  151. package/dist/validate.js +408 -0
  152. package/dist/validate.js.map +1 -0
  153. package/package.json +62 -0
@@ -0,0 +1,118 @@
1
+ ---
2
+ url: https://xtls.github.io/en/config/inbounds/shadowsocks.html
3
+ source_url: https://raw.githubusercontent.com/XTLS/Xray-docs-next/main/docs/en/config/inbounds/shadowsocks.md
4
+ title: Shadowsocks
5
+ category: inbounds
6
+ slug: inbounds/shadowsocks
7
+ fetched_at: 2026-05-04T18:42:50.217Z
8
+ ---
9
+ # Shadowsocks
10
+
11
+ The [Shadowsocks](https://zh.wikipedia.org/wiki/Shadowsocks) protocol, compatible with most other version implementations.
12
+
13
+ Current compatibility is as follows:
14
+
15
+ - Supports TCP and UDP packet forwarding, where UDP can be optionally disabled;
16
+ - Recommended encryption methods:
17
+ - 2022-blake3-aes-128-gcm
18
+ - 2022-blake3-aes-256-gcm
19
+ - 2022-blake3-chacha20-poly1305
20
+ - Other encryption methods:
21
+ - aes-256-gcm
22
+ - aes-128-gcm
23
+ - chacha20-poly1305 (or chacha20-ietf-poly1305)
24
+ - xchacha20-poly1305 (or xchacha20-ietf-poly1305)
25
+ - none (or plain)
26
+
27
+ The Shadowsocks 2022 new protocol format improves performance and includes complete replay protection, resolving the following security issues of the old protocol:
28
+
29
+ - [Severe vulnerabilities in the design of Shadowsocks AEAD encryption, unable to guarantee communication reliability](https://github.com/shadowsocks/shadowsocks-org/issues/183)
30
+ - The false positive rate of the original TCP replay filter increases over time
31
+ - No UDP replay protection
32
+ - TCP behavior that can be used for active probing
33
+
34
+ ::: danger
35
+ Under the "none" encryption method, traffic will be transmitted in plain text. To ensure security, do not use it on public networks.
36
+ :::
37
+
38
+ ## InboundConfigurationObject
39
+
40
+ ```json
41
+ {
42
+ "settings": {
43
+ "network": "tcp,udp",
44
+ "method": "aes-256-gcm",
45
+ "password": "114514",
46
+ "level": 0,
47
+ "email": "love@xray.com",
48
+ "clients": [
49
+ {
50
+ "password": "1919810",
51
+ "method": "aes-128-gcm"
52
+ }
53
+ ]
54
+ }
55
+ }
56
+ ```
57
+
58
+ > `network`: "tcp" | "udp" | "tcp,udp"
59
+
60
+ The network type that the server port **listens** on. The default value is `"tcp"`.
61
+
62
+ Note that this is only for listening; it mainly affects and controls the native UDP transmission of Shadowsocks. Setting it to `"tcp"` does not mean the inbound will reject UDP proxy requests. UDP proxy requests can still be wrapped into TCP packets by Shadowsocks outbound features like UoT or mux.cool and sent to the server, and are not controlled by this option.
63
+
64
+ > `method`: string
65
+
66
+ Encryption method. See above for options.
67
+
68
+ > `password`: string
69
+
70
+ Required.
71
+
72
+ - Shadowsocks 2022
73
+
74
+ Uses a pre-shared key similar to WireGuard as the password.
75
+
76
+ Use `openssl rand -base64 <length>` to generate a key compatible with shadowsocks-rust. The length depends on the encryption method used.
77
+
78
+ | Encryption Method | Key Length |
79
+ | ----------------------------- | ---------: |
80
+ | 2022-blake3-aes-128-gcm | 16 |
81
+ | 2022-blake3-aes-256-gcm | 32 |
82
+ | 2022-blake3-chacha20-poly1305 | 32 |
83
+
84
+ In the Go implementation, 32-byte keys always work.
85
+
86
+ - Other encryption methods
87
+
88
+ Any string. There is no limit on password length, but short passwords are more likely to be cracked. It is recommended to use passwords of 16 characters or longer.
89
+
90
+ > `level`: number
91
+
92
+ User level. The connection will use the [local policy](../policy.md#levelpolicyobject) corresponding to this user level.
93
+ The value of `level` corresponds to the `level` value in [policy](../policy.md#levelpolicyobject). If not specified, the default is 0.
94
+
95
+ > `email`: string
96
+
97
+ User email, used to distinguish traffic from different users (logs, statistics).
98
+
99
+ ## ClientObject
100
+
101
+ ```json
102
+ {
103
+ "password": "1919810",
104
+ "method": "aes-256-gcm",
105
+ "level": 0,
106
+ "email": "love@xray.com"
107
+ }
108
+ ```
109
+
110
+ When this option exists, it indicates that multi-user mode is enabled.
111
+
112
+ When the `method` in `InboundConfigurationObject` is not an SS2022 option, you can specify `"method"` for each user here (only non-SS2022 options are supported in `"method"`) along with `"password"` (at the same time, the `"password"` set in `InboundConfigurationObject` will be ignored).
113
+
114
+ When the `method` in `InboundConfigurationObject` is an SS2022 option, for security reasons, setting `"method"` for individual users is no longer supported. It is unified to the `"method"` specified in `InboundConfigurationObject`.
115
+
116
+ Note that SS2022 does not ignore the upper-level `"password"` like the old SS did. The correct password format for the client should be `ServerPassword:UserPassword`. For example: `"password": "114514:1919810"`.
117
+
118
+ The remaining options have the same meaning as in `InboundConfigurationObject`.
@@ -0,0 +1,87 @@
1
+ ---
2
+ url: https://xtls.github.io/en/config/inbounds/socks.html
3
+ source_url: https://raw.githubusercontent.com/XTLS/Xray-docs-next/main/docs/en/config/inbounds/socks.md
4
+ title: Socks
5
+ category: inbounds
6
+ slug: inbounds/socks
7
+ fetched_at: 2026-05-04T18:42:50.715Z
8
+ ---
9
+ # Socks
10
+
11
+ Standard Socks protocol implementation, compatible with [Socks 4](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol), [Socks 4a](https://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4A.protocol), Socks 5, and **HTTP**.
12
+
13
+ ::: danger
14
+ **The Socks protocol does not encrypt transmission and is not suitable for transmission over the public internet.**
15
+ :::
16
+
17
+ A more meaningful usage of `Socks` inbound is to listen within a LAN or on the local machine to provide local services for other programs.
18
+
19
+ ## InboundConfigurationObject
20
+
21
+ ```json
22
+ {
23
+ "auth": "noauth",
24
+ "accounts": [
25
+ {
26
+ "user": "my-username",
27
+ "pass": "my-password"
28
+ }
29
+ ],
30
+ "udp": false,
31
+ "ip": "127.0.0.1",
32
+ "userLevel": 0
33
+ }
34
+ ```
35
+
36
+ > `auth`: "noauth" | "password"
37
+
38
+ Authentication method for the Socks protocol. Supports `"noauth"` (anonymous) and `"password"` (user/password).
39
+
40
+ When using password, HTTP requests sent to this inbound will also require the same account and password.
41
+
42
+ Default value is `"noauth"`.
43
+
44
+ > `accounts`: \[ [AccountObject](#accountobject) \]
45
+
46
+ An array where each element is a user account.
47
+
48
+ This option is only valid when `auth` is set to `password`.
49
+
50
+ Default value is empty.
51
+
52
+ > `udp`: true | false
53
+
54
+ Whether to enable UDP protocol support.
55
+
56
+ Default value is `false`.
57
+
58
+ > `ip`: address
59
+
60
+ When UDP is enabled, Xray needs to know the IP address of the local machine.
61
+
62
+ "The IP address of the local machine" means the IP that the client can use to find the server when initiating a UDP connection. By default, it is the local IP address when the server accepts the TCP connection. It should work normally in most cases, but when passing through systems behind NAT, it may cause malfunctions, requiring this parameter to be modified to the correct public IP.
63
+
64
+ Warning: If your machine has multiple IP addresses, you will be affected by the issue regarding UDP listening on 0.0.0.0 mentioned in [Inbound Listening](../inbound.md#inboundobject).
65
+
66
+ > `userLevel`: number
67
+
68
+ User level. Connections will use the [Local Policy](../policy.md#levelpolicyobject) corresponding to this user level.
69
+
70
+ The value of `userLevel` corresponds to the value of `level` in [policy](../policy.md#policyobject). If not specified, the default is 0.
71
+
72
+ ### AccountObject
73
+
74
+ ```json
75
+ {
76
+ "user": "my-username",
77
+ "pass": "my-password"
78
+ }
79
+ ```
80
+
81
+ > `user`: string
82
+
83
+ Username, string type. Required.
84
+
85
+ > `pass`: string
86
+
87
+ Password, string type. Required.
@@ -0,0 +1,78 @@
1
+ ---
2
+ url: https://xtls.github.io/en/config/inbounds/trojan.html
3
+ source_url: https://raw.githubusercontent.com/XTLS/Xray-docs-next/main/docs/en/config/inbounds/trojan.md
4
+ title: Trojan
5
+ category: inbounds
6
+ slug: inbounds/trojan
7
+ fetched_at: 2026-05-04T18:42:51.217Z
8
+ ---
9
+ # Trojan
10
+
11
+ [Trojan](https://trojan-gfw.github.io/trojan/protocol) protocol.
12
+
13
+ ::: danger
14
+ Trojan is designed to work over correctly configured encrypted TLS tunnels.
15
+ :::
16
+
17
+ ## InboundConfigurationObject
18
+
19
+ ```json
20
+ {
21
+ "clients": [
22
+ {
23
+ "password": "password",
24
+ "email": "love@xray.com",
25
+ "level": 0
26
+ }
27
+ ],
28
+ "fallbacks": [
29
+ {
30
+ "dest": 80
31
+ }
32
+ ]
33
+ }
34
+ ```
35
+
36
+ > `clients`: \[ [ClientObject](#clientobject) \]
37
+
38
+ An array representing a group of users accepted by the server.
39
+
40
+ Each item is a [ClientObject](#clientobject).
41
+
42
+ > `fallbacks`: \[ [FallbackObject](../features/fallback.md) \]
43
+
44
+ An array containing a series of powerful fallback configurations (optional).
45
+ For specific configuration of fallbacks, please click [FallbackObject](../features/fallback.md#fallbackobject).
46
+
47
+ ::: tip
48
+ Xray's Trojan has complete support for fallbacks, and the configuration method is exactly the same as VLESS.
49
+ The conditions for triggering fallback are also similar to VLESS: the length of the first packet < 58, OR the 57th byte is not `\r` (because Trojan has no protocol version), OR authentication fails.
50
+ :::
51
+
52
+ ### ClientObject
53
+
54
+ ```json
55
+ {
56
+ "password": "password",
57
+ "email": "love@xray.com",
58
+ "level": 0
59
+ }
60
+ ```
61
+
62
+ > `password`: string
63
+
64
+ Required, any string.
65
+
66
+ > `email`: string
67
+
68
+ Email address, optional, used to identify the user.
69
+
70
+ ::: danger
71
+ If there are multiple ClientObjects, please note that emails must not be duplicated.
72
+ :::
73
+
74
+ > `level`: number
75
+
76
+ User level. Connections will use the [Local Policy](../policy.md#levelpolicyobject) corresponding to this user level.
77
+
78
+ The value of `userLevel` corresponds to the value of `level` in [policy](../policy.md#policyobject). If not specified, it defaults to 0.
@@ -0,0 +1,47 @@
1
+ ---
2
+ url: https://xtls.github.io/en/config/inbounds/tun.html
3
+ source_url: https://raw.githubusercontent.com/XTLS/Xray-docs-next/main/docs/en/config/inbounds/tun.md
4
+ title: TUN
5
+ category: inbounds
6
+ slug: inbounds/tun
7
+ fetched_at: 2026-05-04T18:42:53.756Z
8
+ ---
9
+ # TUN
10
+
11
+ Creates a TUN interface; traffic sent to this interface will be processed by Xray. Currently, only Windows and Linux are supported.
12
+
13
+ ## InboundConfigurationObject
14
+
15
+ ```json
16
+ {
17
+ "name": "xray0",
18
+ "MTU": 1500,
19
+ "UserLevel": 0
20
+ }
21
+ ```
22
+
23
+ > `name`: string
24
+
25
+ The name of the created TUN interface. Default is `"xray0"`.
26
+
27
+ > `MTU`: number
28
+
29
+ The MTU of the interface. Default is `1500`.
30
+
31
+ > `userLevel`: number
32
+
33
+ User level. The connection will use the [local policy](../policy.md#levelpolicyobject) corresponding to this user level.
34
+
35
+ The value of `userLevel` corresponds to the `level` value in [policy](../policy.md#policyobject). If not specified, the default is 0.
36
+
37
+ ## Usage Tips
38
+
39
+ Currently, Xray does not automatically modify the system routing table. You need to manually configure routes to direct data to the created TUN interface; otherwise, it remains just an interface.
40
+
41
+ If you only want to proxy specific process(es), the process name routing in the Xray routing system will be very useful.
42
+
43
+ ::: warning
44
+ Be aware of potential traffic loop issues. After setting routes, requests initiated by Xray might be sent back to Xray, causing a loop!
45
+ Use `interface` in `sockopt` to bind to the actual physical network interface to avoid this problem. `ipconfig` (Windows) or `ip a` (Linux) will help you find the interface name you need.
46
+ Alternatively, use the outbound `sendThrough` setting. It is available directly in `OutboundObject` without the deep nesting level of `sockOpt.interface`. Here you need to use the IP address on the network card, such as 192.168.1.2 (As you can see, its disadvantage is that it cannot automatically support dual-stack; please choose according to the IP actually used for your outbound connection).
47
+ :::
@@ -0,0 +1,86 @@
1
+ ---
2
+ url: https://xtls.github.io/en/config/inbounds/tunnel.html
3
+ source_url: https://raw.githubusercontent.com/XTLS/Xray-docs-next/main/docs/en/config/inbounds/tunnel.md
4
+ title: Tunnel (dokodemo-door)
5
+ category: inbounds
6
+ slug: inbounds/tunnel
7
+ fetched_at: 2026-05-04T18:42:49.225Z
8
+ ---
9
+ # Tunnel (dokodemo-door)
10
+
11
+ Tunnel, formerly known as dokodemo-door (Arbitrary Door), can listen on multiple local ports and send all received data to a specific port on a specified server via an outbound, thereby achieving the effect of port mapping.
12
+
13
+ ## InboundConfigurationObject
14
+
15
+ ```json
16
+ {
17
+ "address": "8.8.8.8",
18
+ "port": 53,
19
+ "portMap": {
20
+ "5555": "1.1.1.1:7777",
21
+ "5556": ":8888", // overrides port only
22
+ "5557": "example.com:" // overrides address only
23
+ },
24
+ "network": "tcp",
25
+ "followRedirect": false,
26
+ "userLevel": 0
27
+ }
28
+ ```
29
+
30
+ > `address`: address
31
+
32
+ Forward traffic to this address. It can be an IP address, like `"1.2.3.4"`, or a domain name, like `"xray.com"`. String type, defaults to `"localhost"`.
33
+
34
+ > `port`: number
35
+
36
+ Forward traffic to the specified port of the target address. Range \[0, 65535\], numeric type. If omitted or 0, it defaults to the listening port.
37
+
38
+ > `portMap`: map[string]string
39
+
40
+ A map mapping local ports to required remote addresses/ports (if the inbound listens on multiple ports). If the local port is not included in this map, it is handled according to the `address`/`port` settings.
41
+
42
+ > `network`: "tcp" | "udp" | "tcp,udp"
43
+
44
+ Accepted network protocol types. For example, when specified as `"tcp"`, only TCP traffic will be received. Default value is `"tcp"`.
45
+
46
+ > `followRedirect`: true | false
47
+
48
+ When set to `true`, dokodemo-door will recognize data forwarded by iptables and forward it to the corresponding target address.
49
+
50
+ Please refer to the `tproxy` setting in [Transport Configuration](../transport.md#sockoptobject).
51
+
52
+ > `userLevel`: number
53
+
54
+ User level. Connections will use the [Local Policy](../policy.md#levelpolicyobject) corresponding to this user level.
55
+
56
+ The value of `userLevel` corresponds to the value of `level` in [policy](../policy.md#policyobject). If not specified, it defaults to 0.
57
+
58
+ ## Usage
59
+
60
+ The "Arbitrary Door" has two main uses: one is for transparent proxy (see below), and the other is for mapping a port.
61
+
62
+ Sometimes some services do not support forward proxies like Socks5, and using Tun or Tproxy is overkill. If these services only communicate with a single IP and port (e.g., iperf, Minecraft server, Wireguard endpoint), you can use dokodemo-door.
63
+
64
+ For example, the following Config (assuming the default outbound is a valid proxy):
65
+
66
+ ```json
67
+ {
68
+ "listen": "127.0.0.1",
69
+ "port": 25565,
70
+ "protocol": "tunnel",
71
+ "settings": {
72
+ "address": "mc.hypixel.net",
73
+ "port": 25565,
74
+ "network": "tcp",
75
+ "followRedirect": false,
76
+ "userLevel": 0
77
+ },
78
+ "tag": "mc"
79
+ }
80
+ ```
81
+
82
+ In this case, the core will listen on 127.0.0.1:25565 and forward it to mc.hypixel.net:25565 (a MC server) via the default outbound. Connecting the Minecraft client to 127.0.0.1:25565 is equivalent to connecting to the Hypixel server via a proxy.
83
+
84
+ ## Transparent Proxy Configuration Example
85
+
86
+ For this section, please refer to [Transparent Proxy (TProxy) Configuration Tutorial](../../document/level-2/tproxy).
@@ -0,0 +1,135 @@
1
+ ---
2
+ url: https://xtls.github.io/en/config/inbounds/vless.html
3
+ source_url: https://raw.githubusercontent.com/XTLS/Xray-docs-next/main/docs/en/config/inbounds/vless.md
4
+ title: VLESS (XTLS Vision Seed)
5
+ category: inbounds
6
+ slug: inbounds/vless
7
+ fetched_at: 2026-05-04T18:42:51.696Z
8
+ ---
9
+ # VLESS (XTLS Vision Seed)
10
+
11
+ VLESS is a stateless, lightweight transport protocol. It is divided into inbound and outbound parts and can serve as a bridge between Xray clients and servers.
12
+
13
+ Unlike [VMess](./vmess.md), VLESS does not depend on system time. The authentication method is also UUID.
14
+
15
+ ## InboundConfigurationObject
16
+
17
+ ```json
18
+ {
19
+ "clients": [
20
+ {
21
+ "id": "5783a3e7-e373-51cd-8642-c83782b807c5",
22
+ "level": 0,
23
+ "email": "love@xray.com",
24
+ "flow": "xtls-rprx-vision",
25
+ "reverse": {}
26
+ }
27
+ ],
28
+ "decryption": "none",
29
+ "fallbacks": [
30
+ {
31
+ "dest": 80
32
+ }
33
+ ]
34
+ }
35
+ ```
36
+
37
+ > `clients`: \[ [ClientObject](#clientobject) \]
38
+
39
+ An array representing a group of users approved by the server.
40
+
41
+ Each item is a user [ClientObject](#clientobject).
42
+
43
+ > `decryption`: "none"
44
+
45
+ [VLESS Encryption](https://github.com/XTLS/Xray-core/pull/5067) settings. Cannot be left empty; to disable, explicitly set it to `"none"`.
46
+
47
+ It is recommended for most users to use `./xray vlessenc` to automatically generate this field to ensure no errors in writing. The detailed configuration below is recommended for advanced users only.
48
+
49
+ Its format is a string of detailed configuration fields connected by `.`. For example: `mlkem768x25519plus.native.600s.100-111-1111.75-0-111.50-0-3333.ptjHQxBQxTJ9MWr2cd5qWIflBSACHOevTauCQwa_71U`. This document refers to the individual parts separated by dots as blocks.
50
+
51
+ - The 1st block is the handshake method. Currently, there is only `mlkem768x25519plus`. Requires the server and client to match.
52
+ - The 2nd block is the encryption method. Options are `native`/`xorpub`/`random`, corresponding to: raw format packets / raw format + obfuscated public key part / full random numbers (similar to VMess/Shadowsocks). Requires the server and client to match.
53
+ - The 3rd block is the session resumption ticket validity time. Format is `600s` or `100-500s`. The former will pick a random time between that duration and half of that duration (e.g., `600s` = `300-600s`); the latter manually specifies a random range.
54
+
55
+ Following this is padding. After the connection is established, the server sends some garbage data to obfuscate length characteristics. This does not need to be the same as the client (the same part in the outbound is the padding sent from the client to the server). It is a variable-length part, formatted as `padding.delay.padding`+`(.delay.padding)`\*n (multiple paddings can be inserted, requiring a delay block between two padding blocks). For example, you can write an ultra-long `padding.delay.padding.delay.padding.delay.padding.delay.padding.delay.padding`.
56
+
57
+ - The `padding` format is `probability-min-max`, e.g., `100-111-1111` means 100% probability of sending a padding with a length of 111~1111.
58
+ - The `delay` format is also `probability-min-max`, e.g., `75-0-111` means 75% probability of waiting for 0~111 milliseconds.
59
+
60
+ The first padding block has special requirements: it requires 100% probability and a minimum length greater than 0. If no padding exists, the core automatically uses `100-111-1111.75-0-111.50-0-3333` as the padding setting.
61
+
62
+ The last block is identified by the core as the parameter used to authenticate the client. It can be generated using `./xray x25519` (using the PrivateKey part) or `./xray mlkem768` (using the Seed part). It must correspond to the client. `mlkem768` is a post-quantum algorithm that prevents the private key from being cracked by quantum computers (in the future) to impersonate the server if client parameters are leaked. This parameter is only used for verification; the handshake process is post-quantum secure regardless, and existing encrypted data cannot be cracked by future quantum computers.
63
+
64
+ > `fallbacks`: \[ [FallbackObject](../features/fallback.md) \]
65
+
66
+ An array containing a series of powerful fallback distribution configurations (optional).
67
+ For specific fallback configurations, please click [FallbackObject](../features/fallback.md#fallbacks-configuration).
68
+
69
+ ### ClientObject
70
+
71
+ ```json
72
+ {
73
+ "id": "5783a3e7-e373-51cd-8642-c83782b807c5",
74
+ "level": 0,
75
+ "email": "love@xray.com",
76
+ "flow": "xtls-rprx-vision",
77
+ "reverse" {}
78
+ }
79
+ ```
80
+
81
+ > `id`: string
82
+
83
+ The user ID for VLESS. It can be any string less than 30 bytes or a valid UUID.
84
+ A custom string and its mapped UUID are equivalent, which means you can write the id in the configuration file to identify the same user like this:
85
+
86
+ - Write `"id": "我爱🍉老师1314"`,
87
+ - Or write `"id": "5783a3e7-e373-51cd-8642-c83782b807c5"` (This UUID is the UUID mapping of `我爱🍉老师1314`).
88
+
89
+ The mapping standard is described in [VLESS UUID Mapping Standard: Mapping Custom Strings to a UUIDv5](https://github.com/XTLS/Xray-core/issues/158).
90
+
91
+ You can use the command `xray uuid -i "custom string"` to generate the UUID mapped from the custom string.
92
+
93
+ > You can also use the command `xray uuid` to generate a random UUID.
94
+
95
+ > `level`: number
96
+
97
+ User level. The connection will use the [local policy](../policy.md#levelpolicyobject) corresponding to this user level.
98
+
99
+ The value of `level` corresponds to the `level` value in [policy](../policy.md#policyobject). If not specified, the default is 0.
100
+
101
+ > `email`: string
102
+
103
+ User email, used to distinguish traffic from different users (reflected in logs and statistics).
104
+
105
+ > `flow`: string
106
+
107
+ Flow control mode, used to select the XTLS algorithm.
108
+
109
+ Currently, the following flow control modes are available in the inbound protocol:
110
+
111
+ - No `flow` or empty string: Use standard TLS proxy.
112
+ - `xtls-rprx-vision`: Use the new XTLS mode, including inner handshake random padding.
113
+
114
+ XTLS is only available under the following combinations:
115
+
116
+ - TCP+TLS/Reality: In this case, encrypted data is directly copied at the underlying layer (if transmitting TLS 1.3).
117
+ - VLESS Encryption: No underlying transport restrictions. If the underlying layer does not support direct copying (see above), it only penetrates Encryption.
118
+
119
+ > `reverse`: struct
120
+
121
+ VLESS simplified reverse proxy configuration. It functions the same as the core's internal general reverse proxy but with simpler configuration.
122
+
123
+ The presence of this item indicates that connections from this user can be used to establish a reverse proxy tunnel.
124
+
125
+ Current syntax:
126
+
127
+ ```json
128
+ "reverse": {
129
+ "tag": "r-outbound"
130
+ }
131
+ ```
132
+
133
+ `tag` is the outbound proxy tag for this reverse proxy. Routing traffic to this outbound using routing rules will forward it through the reverse proxy to the connected client's routing system (see VLESS Outbound for client configuration details).
134
+
135
+ When multiple different connections (potentially from different devices) are connected, the core will randomly select one to dispatch reverse proxy data for each request.
@@ -0,0 +1,95 @@
1
+ ---
2
+ url: https://xtls.github.io/en/config/inbounds/vmess.html
3
+ source_url: https://raw.githubusercontent.com/XTLS/Xray-docs-next/main/docs/en/config/inbounds/vmess.md
4
+ title: VMess
5
+ category: inbounds
6
+ slug: inbounds/vmess
7
+ fetched_at: 2026-05-04T18:42:52.214Z
8
+ ---
9
+ # VMess
10
+
11
+ [VMess](../../development/protocols/vmess.md) is an encrypted transport protocol, commonly acting as a bridge between the Xray client and server.
12
+
13
+ ::: danger
14
+ VMess depends on system time. Please ensure that the system UTC time of the device running Xray is within 120 seconds of the actual time, regardless of the time zone. On Linux systems, you can install the `ntp` service to automatically synchronize system time.
15
+ :::
16
+
17
+ ## InboundConfigurationObject
18
+
19
+ ```json
20
+ {
21
+ "clients": [
22
+ {
23
+ "id": "5783a3e7-e373-51cd-8642-c83782b807c5",
24
+ "level": 0,
25
+ "email": "love@xray.com"
26
+ }
27
+ ],
28
+ "default": {
29
+ "level": 0
30
+ }
31
+ }
32
+ ```
33
+
34
+ > `clients`: \[ [ClientObject](#clientobject) \]
35
+
36
+ An array representing a group of users accepted by the server.
37
+
38
+ Each item is a [ClientObject](#clientobject).
39
+
40
+ When this configuration is used for dynamic ports, Xray will automatically create users.
41
+
42
+ > `default`: [DefaultObject](#defaultobject)
43
+
44
+ Optional. Default configuration for clients. Only valid when used in conjunction with `detour`.
45
+
46
+ ### ClientObject
47
+
48
+ ```json
49
+ {
50
+ "id": "5783a3e7-e373-51cd-8642-c83782b807c5",
51
+ "level": 0,
52
+ "email": "love@xray.com"
53
+ }
54
+ ```
55
+
56
+ > `id`: string
57
+
58
+ User ID for VMess. It can be any string less than 30 bytes, or a valid UUID.
59
+
60
+ ::: tip
61
+ A custom string and its mapped UUID are equivalent. This means you can identify the same user in the configuration file by writing the ID in either way:
62
+
63
+ - Write `"id": "我爱🍉老师1314"`,
64
+ - Or write `"id": "5783a3e7-e373-51cd-8642-c83782b807c5"` (This UUID is the UUID mapping of `我爱🍉老师1314`)
65
+ :::
66
+
67
+ The mapping standard is described in [VLESS UUID Mapping Standard: Mapping Custom Strings to UUIDv5](https://github.com/XTLS/Xray-core/issues/158).
68
+
69
+ You can use the command `xray uuid -i "custom string"` to generate the UUID mapped from a custom string.
70
+
71
+ > You can also use the command `xray uuid` to generate a random UUID.
72
+
73
+ > `level`: number
74
+
75
+ User level. The connection will use the [Local Policy](../policy.md#levelpolicyobject) corresponding to this user level.
76
+
77
+ The value of `level` corresponds to the value of `level` in [policy](../policy.md#policyobject). If not specified, it defaults to 0.
78
+
79
+ > `email`: string
80
+
81
+ User email address, used to distinguish traffic from different users.
82
+
83
+ ### DefaultObject
84
+
85
+ ```json
86
+ {
87
+ "level": 0
88
+ }
89
+ ```
90
+
91
+ > `level`: number
92
+
93
+ User level. The connection will use the [Local Policy](../policy.md#levelpolicyobject) corresponding to this user level.
94
+
95
+ The value of `level` corresponds to the value of `level` in [policy](../policy.md#policyobject). If not specified, it defaults to 0.