Skip to main content

chatclash

ChatArch single-machine proxy toolkit for Mihomo runtime management, subscription-backed config generation, and ChatEnv-backed proxy validation.

Quick start

pip install -e ".[dev]"
chatclash init
chatclash sub set -i
# If the subscription source blocks direct server fetches, use:
chatclash mihomo install --daemon
chatclash sub update
chatclash mihomo start
chatclash status
chatclash --tree
chatclash --tree-brief
chatenv test -t chatclash

CLI tree

Runtime readback comes from ChatStyle: chatclash --tree includes signatures and chatclash --tree-brief keeps the same registered nodes without signatures.

chatclash
├── --help  # Show this message and exit.
├── --version  # Show the version and exit.
├── --tree  # Print the registered CLI tree and exit.
├── --tree-brief  # Print the registered CLI tree without parameter signatures and exit.
├── --interactive  # Auto prompt on missing args, -i forces interactive, -I disables it.
├── init [--home HOME] [--dry-run] [--local-only] [--url-env URL-ENV] [--subscription-url SUBSCRIPTION-URL] [--proxy-auth-env PROXY-AUTH-ENV] [--proxy-auth PROXY-AUTH] [--subconverter-url SUBCONVERTER-URL] [--yes] [--interactive]  # Initialize this machine and collect required ChatEnv config.
├── mihomo [--interactive]  # Install and manage the local runtime.
│   ├── install [--repo REPO] [--version VERSION] [--dry-run] [--force] [--daemon] [--interactive]  # Install the local Mihomo binary.
│   ├── logs [--tail TAIL] [--dry-run] [--interactive]  # Show local Mihomo runtime logs.
│   ├── reload [--dry-run] [--interactive]  # Hot-reload the current active config through Mihomo's controller.
│   ├── restart [--dry-run] [--interactive]  # Restart the local Mihomo runtime.
│   ├── start [--dry-run] [--interactive]  # Start the local Mihomo runtime.
│   ├── status [--interactive]  # Show local Mihomo runtime status.
│   ├── stop [--dry-run] [--interactive]  # Stop the local Mihomo runtime.
│   ├── uninstall [--dry-run] [--daemon] [--interactive]  # Uninstall the local Mihomo binary.
│   └── update [--repo REPO] [--version VERSION] [--dry-run] [--interactive]  # Update the local Mihomo binary.
├── proxy [--interactive]  # Show and update local proxy endpoint settings.
│   ├── env [--no-mask] [--interactive]  # Print shell proxy environment exports.
│   ├── set [--http-port HTTP-PORT-VALUE] [--socks-port SOCKS-PORT-VALUE] [--controller-port CONTROLLER-PORT-VALUE] [--bind-host BIND-HOST] [--proxy-host PROXY-HOST-VALUE] [--dry-run] [--yes] [--interactive]  # Update local proxy listener settings and re-render active config.
│   ├── show [--no-mask] [--interactive]  # Show proxy endpoints for this machine.
│   └── validate [--dry-run] [--interactive]  # Validate the current active Mihomo config.
├── status [--interactive]  # Show this machine's ChatClash status.
└── sub [--interactive]  # Manage subscription-backed runtime config.
    ├── converter [--interactive]  # Install and manage the local subscription converter service.
    │   ├── install [--source SOURCE] [--repo REPO] [--version VERSION] [--force] [--dry-run] [--interactive]  # Install the local subscription converter binary.
    │   ├── logs [--tail TAIL] [--dry-run] [--interactive]  # Show local subscription converter logs.
    │   ├── start [--host HOST] [--port PORT] [--dry-run] [--interactive]  # Start the local subscription converter service.
    │   ├── status [--host HOST] [--port PORT] [--interactive]  # Show the local subscription converter service status.
    │   └── stop [--dry-run] [--interactive]  # Stop the local subscription converter service.
    ├── generate [SUBSCRIPTION-URL] [--subconverter-url SUBCONVERTER-URL] [--output OUTPUT] [--dry-run] [--yes] [--interactive]  # Generate a Clash-compatible config through subscription conversion.
    ├── set [--url-env URL-ENV] [--subconverter-url-env SUBCONVERTER-URL-ENV] [--subscription-url SUBSCRIPTION-URL] [--subconverter-url SUBCONVERTER-URL] [--interactive]  # Store subscription operator config through ChatEnv.
    ├── status [--interactive]  # Show redacted subscription config state.
    ├── update [--dry-run] [--no-validate] [--fetch-proxy FETCH-PROXY] [--interactive]  # Refresh the runtime config from the configured subscription.
    └── url [SUBSCRIPTION-URL] [--subconverter-url SUBCONVERTER-URL] [--show] [--interactive]  # Build a subconverter URL for the configured subscription.

Common commands

chatclash sub status
chatclash sub converter status
chatclash sub update
chatclash proxy set --http-port 7890 --socks-port 7891 --controller-port 9090 -I -y
chatclash proxy validate
chatclash mihomo update
chatclash mihomo restart
chatclash mihomo logs
chatclash proxy show
eval "$(chatclash proxy env)"
python -m pytest -q

ChatArch conventions

  • CLI interaction and registered full/brief tree rendering use ChatStyle, including the shared -i/-I pattern where applicable.
  • Operator config and CHATCLASH_HOME are stored through ChatEnv; local config stores only derived runtime facts.
  • Major CLI capabilities have reusable Python APIs under src/chatclash/ modules.
  • Sensitive values must not be printed in CLI output, logs, docs, or tests.

ChatEnv fields

Field Notes
CHATCLASH_HOME Machine-local ChatClash runtime directory
CHATCLASH_SUBSCRIPTION_URL Subscription URL, sensitive
CHATCLASH_PROXY_AUTH Proxy authentication, sensitive
CHATCLASH_SUBCONVERTER_URL Optional subconverter service base URL

Machine-local ports, hosts, runtime paths, PID files, and log files live in ChatClash local config rather than ChatEnv. CHATCLASH_HOME is the ChatEnv-managed root used to locate that local config.

Local subscription converter service

chatclash sub converter manages the local subscription converter service used by CHATCLASH_SUBCONVERTER_URL. Host and port are service runtime parameters, not ChatEnv fields.

chatclash sub converter install
chatclash sub converter start              # default http://127.0.0.1:25500
chatclash sub converter start --host 0.0.0.0 --port 26666
chatclash sub converter status
chatclash sub converter logs --tail 200
chatclash sub converter stop

After starting a local converter, store its base URL through ChatEnv when this machine should use it for subscription conversion:

chatenv set CHATCLASH_SUBCONVERTER_URL='http://127.0.0.1:25500'
chatclash sub url --show -I
chatclash sub update

When CHATCLASH_SUBCONVERTER_URL is configured, chatclash sub generate and chatclash sub update use the converter endpoint to regenerate the local Mihomo config. The generated config.yaml is a machine-local artifact: do not copy it between machines. To refresh another host, configure that host's subscription/converter settings and run generation there.

The converter request follows the original ACL4SSR/SubConverter contract (target=clash, insert=false, new_name=true, and related compatibility flags). Some providers return node-only YAML; ChatClash composes the local listener header, authentication, default groups, and rules around those generated nodes.

Authentication and ChatEnv

All public commands expose the shared ChatStyle -i/-I interactive option. For first-time machine setup, run chatclash init interactively, or pass values explicitly for automation:

chatclash init --url-env CHATCLASH_SUBSCRIPTION_URL --proxy-auth-env CHATCLASH_PROXY_AUTH -I
chatclash proxy show              # masked
chatclash proxy show --no-mask    # shows authenticated proxy URLs
chatclash proxy env --no-mask     # usable authenticated http_proxy/https_proxy/all_proxy exports

ChatEnv remains the system of record:

chatenv cat -t chatclash
chatenv cat -t chatclash --no-mask
chatenv test -t chatclash

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chatclash-0.1.8.tar.gz (42.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chatclash-0.1.8-py3-none-any.whl (28.3 kB view details)

Uploaded Python 3

File details

Details for the file chatclash-0.1.8.tar.gz.

File metadata

  • Download URL: chatclash-0.1.8.tar.gz
  • Upload date:
  • Size: 42.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for chatclash-0.1.8.tar.gz
Algorithm Hash digest
SHA256 a75095ce34d8db87c198cb0e59d88bfa0b50664bca8c2e1649f02e688db037e2
MD5 28dd8382417b6faa6bda083b87516ffe
BLAKE2b-256 b4a8d6f3ebefbdb802b345f236ce123d64b687fb3e9d17d1bac0ecaa282bbe75

See more details on using hashes here.

Provenance

The following attestation bundles were made for chatclash-0.1.8.tar.gz:

Publisher: publish.yml on ChatArch/ChatClash

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chatclash-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: chatclash-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 28.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for chatclash-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 64eb901e5093a5ea280e64c3314eb25dc82514ad459f8a0fae32e2e3d4a951cc
MD5 9e25af9e88d500aa180b32d25513f9e5
BLAKE2b-256 8fe42bda1152b6c967f53707d5dcc919a83c68d5f83d238dc9bc1e93638d59a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for chatclash-0.1.8-py3-none-any.whl:

Publisher: publish.yml on ChatArch/ChatClash

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.8 This release

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page