Protocol guides
One page per protocol: how to create it from the menu and the command line, its options, and how to export it for clients. Not sure which one to use? Start with Choosing a protocol.
| Protocol | Transport | Domain and certificate | Xray | sing-box | mihomo |
|---|---|---|---|---|---|
| VLESS REALITY | TCP | not needed | ✓ | ✓ | ✓ |
| VLESS Vision | TCP + TLS | needed | ✓ | ||
| VLESS XHTTP | HTTP / UDP | depends on the mode | ✓ | ||
| VLESS + TLS | TCP / WS / gRPC … | needed (self-signed works) | ✓ | ✓ | |
| Hysteria2 | UDP (QUIC) | needed (self-signed works) | ✓ | ✓ | ✓ |
| TUIC v5 | UDP (QUIC) | needed (self-signed works) | ✓ | ✓ | |
| AnyTLS | TCP + TLS | needed (self-signed works) | ✓ | ✓ | |
| Shadowsocks 2022 | TCP / UDP | not needed | ✓ | ✓ | ✓ |
| Trojan, VMess | TCP + TLS | needed | ✓ | ✓ | ✓ |
| Snell | TCP | not needed | ✓ | ✓ | |
| SOCKS5 | TCP | not needed | ✓ | ✓ | ✓ |
| WireGuard | UDP | not needed | ✓ |
There are also three standalone programs that do not depend on a core: main menu 5 (Snell) for the official snell-server, 6 (ss-rust) for Shadowsocks 2022, and 7 (Hysteria2) for the official Hysteria2 server.
Each core's node menu
Choose 4 (Nodes) in a core's menu to see every protocol it supports; pick one to create, view or delete nodes.
Xray (main menu 4 → 4):

sing-box (main menu 2 → 4):

mihomo (main menu 3 → 4):

The command line, for every protocol
Every protocol uses the same commands; all options are in the CLI reference:
psm node add CORE PROTO --tag NAME --port PORT [protocol options]
psm node show CORE PROTO NAME
psm node export CORE PROTO NAME [--server HOST] [--format uri|json|surge]
psm node delete CORE PROTO NAME --yes
psm node listSwitches that work across protocols:
--mount-443: put the node on shared port 443 next to other nodes. Available for Xray REALITY, Vision, XHTTP, Trojan and VMess, and for sing-box / mihomo REALITY, AnyTLS, Trojan, VMess and VLESS.--ech true: add ECH (Encrypted Client Hello) to sing-box / mihomo VLESS, Trojan, AnyTLS, Hysteria2 and TUIC; older clients without ECH still connect.--json: machine-readable output for scripts.
UUIDs, passwords and keys are generated when you leave them out. Queries hide credentials by default; export prints everything a client needs.