Mihonator/DocumentationIn development

For providers

Connect your service

Serve a Mihomo profile from your subscription endpoint and include the metadata your users need.
On this page

New to response headers? Follow one setting from your panel to the app in the interactive walkthrough.

Serve a subscription response

Use an HTTPS endpoint that returns a complete Mihomo YAML configuration with 200 OK. The current client requests this URL directly when a user adds or refreshes a profile.

Example response headers
HTTP/1.1 200 OK
Content-Type: text/yaml; charset=utf-8
profile-update-interval: 6
subscription-userinfo: upload=1073741824; download=9663676416; total=107374182400; expire=1811462400

The YAML body follows the headers. Use Mihomo’s configuration reference for the profile itself.

Identify the client and device

The current client sends User-Agent: clash-meta. It also sends the following device headers when their values are available:

HeaderPurpose
x-hwidDevice identifier for a provider’s device accounting.
x-device-osOperating system name.
x-ver-osOperating system version.
x-device-modelDevice model information.

The user agent identifies a compatible configuration format; it is not a unique Mihonator identifier. Avoid assuming that every clash-meta request comes from this application.

Quota, expiry, and refresh

subscription-userinfo

A semicolon-separated list. upload, download, and total are byte counts. expire is a Unix timestamp in seconds. The client uses this data for the profile’s quota and expiry rows.

Without a positive total, the UI cannot derive a remaining-traffic percentage. Omitted expiry data does not define an expiry date.

profile-update-interval

A positive integer in hours. For example, 6 requests a refresh interval of six hours. The profile screen checks elapsed intervals periodically while active. This header does not create an operating-system background job.

Report device-limit problems

The client records x-hwid-active, x-hwid-limit, and x-hwid-not-supported from the subscription response. Values are case-insensitive booleans.

When x-hwid-active: true and x-hwid-limit: true are both present, the current client reports a device-limit problem instead of attempting to use a stripped profile. The not-supported flag is retained as diagnostic metadata.

Next: your service’s appearance. The customization contract describes palette, identity, home layout, and purchase links using the mihonator-* headers.