/clash2sing-box

Convert clash client outbounds to sing-box format

Primary LanguageRustGNU General Public License v3.0GPL-3.0

中文(zh-cn) | English

Outbound converting Supports

  • Shadowsocks
  • http
  • socks
  • VMess
  • Trojan
  • Hysteria
  • ShadowsocksR
  • VLESS VLESS had been abandoned. Consider use Trojan instead. See detail
  • TUIC sing-box not support tuic yet
  • ShadowTLS Clash.Meta not support Shadow-tls yet

Generate minimal sing-box profile from clash profile (local path or url)

./ctos -s "http://<...>" gen > config.json

# or
./ctos -s "./config.yaml" gen > config.json

This will generate minimal avaliable sing-box format profile from exist clash config.


Parse clash config

./ctos -s "./config.yaml" show  

# show proxies name list by adding `-t`
./ctos -s "./config.yaml" show -t 

This will get converted proxies list from clash profile, and tag names (if --tags added).
You could manualy append it into sing-box config.


Append to existed config

./ctos -s "./config.yaml" append --dst ./config.json  

web app

demo: https://ctos.magicb.uk

pic

self host

git clone https://github.com/oluceps/clash2sing-box.git
cd clash2sing-box/web
trunk serve --open

Commands

> ./ctos --help
Usage: ctos [OPTIONS] <COMMAND>

Commands:
  show    Show sing-box proxies info from clash profile
  gen     Generate sing-box profile from clash format
  append  Append new clash proxies to existed sing-box profile [WIP]
  help    Print this message or the help of the given subcommand(s)

Options:
  -s, --source <SOURCE>  clash config path (url)
  -h, --help             Print help
  -V, --version          Print version

Nix flake support

Try run application directly on machine with nix installed:

nix run github:oluceps/clash2sing-box -- -s "<subscribe link>" show --tags
# or any other actions

TODO

  • Clash rule converting

  • Subcommand append, to extend new content into config

  • Simple and easy-to-use web app

  • Auto update with systemd service, with NixOS module

Credits