{"id":51623758,"url":"https://github.com/hiddify/hiddify_config_health","last_synced_at":"2026-07-12T22:01:42.414Z","repository":{"id":361685448,"uuid":"1254289303","full_name":"hiddify/hiddify_config_health","owner":"hiddify","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-28T19:44:01.000Z","size":91001,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-28T21:19:57.268Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hiddify.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-30T11:35:02.000Z","updated_at":"2026-06-28T19:44:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hiddify/hiddify_config_health","commit_stats":null,"previous_names":["hiddify/hiddify_config_health"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hiddify/hiddify_config_health","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiddify%2Fhiddify_config_health","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiddify%2Fhiddify_config_health/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiddify%2Fhiddify_config_health/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiddify%2Fhiddify_config_health/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hiddify","download_url":"https://codeload.github.com/hiddify/hiddify_config_health/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiddify%2Fhiddify_config_health/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35403795,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-12T02:00:06.386Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-12T22:01:41.544Z","updated_at":"2026-07-12T22:01:42.407Z","avatar_url":"https://github.com/hiddify.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hiddify-config-health\n\nAutomated testing tool for VPN/proxy configuration files.\nStarts real proxy core processes, runs connectivity checks through them, and reports results — locally or on remote servers via SSH.\n\n## Features\n\n- **Multi-core**: sing-box, xray, hiddify-core (add new cores with ~10 lines of Go)\n- **Template engine**: Pongo2/Jinja2 syntax + JSON5 (comments, trailing commas)\n- **Auto vars**: `\"auto\"` → random free port / UUID / password at runtime\n- **TLS auto-gen**: self-signed CA + leaf cert injected as `{{TLS_CERT}}` etc.\n- **SSH deploy**: run server on remote host, client locally — test real paths\n- **Multi-hop**: chain server → relay → client with `topology` in `run.json`\n- **Health checks**: DNS, TCP-DNS, HTTP, QUIC, ping, download, upload\n- **Protocol detection**: passive censor-view fingerprint (opaque / leaking / blocked)\n- **Web UI**: live log stream via SSE, per-check results, history sparkline\n- **History**: every run stored in SQLite (`~/.hiddify-health/results.db`)\n- **CI-friendly**: `run-all` exits 1 on any failure\n\n## Quickstart\n\n```bash\ngit clone https://github.com/hiddify/hiddify_config_health\ncd hiddify_config_health\ngo build -o hiddify-health ./cmd\n\n# Run one example (sing-box must be in PATH or SINGBOX_BIN set)\n./hiddify-health run examples/sing-box/shadowsocks\n\n# Run all examples\n./hiddify-health run-all examples/\n\n# Web UI\n./hiddify-health serve --addr :8080\n```\n\n## Example structure\n\n```\nexamples/\n├── sing-box/\n│   ├── shadowsocks/\n│   │   ├── server.json    ← JSON5 template with {{ PORT }}, {{ PASSWORD }}, …\n│   │   ├── client.json\n│   │   └── run.json       ← core, vars, checks, deploy, tls\n│   └── vless-xhttp/\n└── xray/\n    └── vless-xhttp/\n```\n\nTemplate syntax (JSON5 + Pongo2/Jinja2):\n\n```json5\n{\n  // comments supported\n  \"listen_port\": {{ PORT }},           # auto-assigned free port\n  \"password\":    \"{{ PASSWORD }}\",     # auto random hex\n  {% if TLS_CERT %}\n  \"tls\": {\n    \"certificate_path\": \"{{ TLS_CERT }}\",\n    \"key_path\":         \"{{ TLS_KEY }}\",\n  },\n  {% endif %}\n  \"trailing\": \"comma ok\",\n}\n```\n\n## CLI\n\n```\nhiddify-health run       \u003cdir\u003e        run one example\nhiddify-health run-all   [dir]        run all, exit 1 if any fail\nhiddify-health check     \u003cdir\u003e        validate config syntax only\nhiddify-health serve     [--addr]     start web UI (default :8080)\nhiddify-health history   [dir]        show run history\n\nGlobal: --examples \u003cdir\u003e  --db \u003cpath\u003e  --timeout \u003csec\u003e\n```\n\n## Environment\n\n| Var | Description |\n|---|---|\n| `SINGBOX_BIN` | Path to sing-box binary |\n| `XRAY_BIN` | Path to xray binary |\n| `HIDDIFY_BIN` | Path to hiddify-core binary |\n\n## Documentation\n\nSee [`docs/`](docs/) for full reference:\n[quickstart](docs/quickstart.md) · [run.json](docs/run-json.md) · [templates](docs/templates.md) · [placeholders](docs/placeholders.md) · [cores](docs/cores.md) · [health checks](docs/health-checks.md) · [TLS](docs/tls.md) · [SSH deploy](docs/ssh-deploy.md) · [topology](docs/topology.md) · [web UI](docs/web-ui.md) · [history](docs/history.md) · [detect](docs/detect.md) · [CLI](docs/cli.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhiddify%2Fhiddify_config_health","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhiddify%2Fhiddify_config_health","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhiddify%2Fhiddify_config_health/lists"}