{"id":50148630,"url":"https://github.com/tytsxai/macfriends-cli","last_synced_at":"2026-05-24T07:02:27.435Z","repository":{"id":358938788,"uuid":"1176337351","full_name":"tytsxai/macfriends-cli","owner":"tytsxai","description":"MacFriends CLI — macOS 微信好友关系检测工具（Rust + ObjC++ agent），锁定 WeChat 4.1.8 arm64，本地运行","archived":false,"fork":false,"pushed_at":"2026-05-19T17:16:59.000Z","size":9215,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-19T20:46:25.179Z","etag":null,"topics":["apple-silicon","chinese-tool","friend-detection","macos","rust-cli","wechat"],"latest_commit_sha":null,"homepage":"https://we.freespace.host","language":"Rust","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tytsxai.png","metadata":{"files":{"readme":"README.en.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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-03-08T23:13:37.000Z","updated_at":"2026-05-19T17:17:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tytsxai/macfriends-cli","commit_stats":null,"previous_names":["tytsxai/macfriends-cli"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/tytsxai/macfriends-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tytsxai%2Fmacfriends-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tytsxai%2Fmacfriends-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tytsxai%2Fmacfriends-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tytsxai%2Fmacfriends-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tytsxai","download_url":"https://codeload.github.com/tytsxai/macfriends-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tytsxai%2Fmacfriends-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33424573,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"online","status_checked_at":"2026-05-24T02:00:06.296Z","response_time":57,"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":["apple-silicon","chinese-tool","friend-detection","macos","rust-cli","wechat"],"created_at":"2026-05-24T07:02:23.232Z","updated_at":"2026-05-24T07:02:27.415Z","avatar_url":"https://github.com/tytsxai.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MacFriends · macOS WeChat Friend Relationship Inspector CLI\n\n[![Release](https://img.shields.io/github/v/release/tytsxai/macfriends-cli)](https://github.com/tytsxai/macfriends-cli/releases) · [中文 README](README.md) · [llms.txt](llms.txt) · [Docs](docs/README.md) · [Issues](https://github.com/tytsxai/macfriends-cli/issues) · [MIT License](LICENSE)\n\nMacFriends is a **local-first macOS WeChat friend relationship inspector CLI** for Apple Silicon. It uses a Rust CLI to orchestrate a controlled, ad-hoc-signed WeChat copy, injects an Objective-C++ agent into the supported runtime, exposes local `profile`, `contacts`, and `scan` primitives over Unix Domain Socket IPC, and exports raw results as JSON or CSV.\n\nThis project is not a cloud \"who deleted me on WeChat\" service. It is a maintainability-first toolkit for users and developers who need local execution, explicit version gates, scriptable output, fixed error codes, rollback paths, and honest readiness checks.\n\n## Search Keywords\n\nmacOS WeChat friend checker, WeChat ghost contact macOS, who deleted me on WeChat macOS, WeChat relationship inspector CLI, Apple Silicon WeChat tool, Rust macOS CLI, Objective-C++ agent, Unix Domain Socket IPC, ad-hoc signed WeChat copy, 微信单删检测 macOS, 微信好友关系检测.\n\n## Who It Is For\n\n- Apple Silicon Mac users who need local WeChat contact and relationship inspection.\n- Developers who prefer a scriptable CLI and JSON output over a click-only GUI.\n- Maintainers studying macOS app-copy preparation, ad-hoc signing, DYLD injection, UDS IPC, and Rust + Objective-C++ agent design.\n- Contributors who want to extend a fixed-version WeChat adapter.\n\nNot a fit for:\n\n- Intel Mac, Windows, or Linux users.\n- Users who need arbitrary latest WeChat version support.\n- Users expecting a one-click interpretation of \"who removed me\". MacFriends exports raw `contacts` and `scan` data; relationship interpretation is left to the user.\n- Users expecting an official WeChat API or cloud service. MacFriends is not affiliated with Tencent or WeChat.\n\n## Core Features\n\n- Rust CLI commands: `doctor`, `status`, `prepare`, `launch`, `attach`, `profile`, `contacts`, `scan`, `export`, `detach`, `cleanup`, `serve`.\n- Chinese command aliases: `状态`, `准备`, `启动`, `连接`, `资料`, `联系人`, `扫描`, `导出`, `断开`, `清理`, `控制台`.\n- Controlled WeChat copy: `prepare` copies `/Applications/WeChat.app` into the MacFriends runtime directory and ad-hoc signs it without modifying the original app.\n- Local Objective-C++ agent over Unix Domain Socket JSON RPC.\n- Local web console: `macfriends serve --open`, listening on `127.0.0.1:8765` by default.\n- Script-friendly `--json` success and failure output.\n- JSON/CSV export for the latest production scan.\n- Readiness gates: `runtime_ready`, `fixture_enabled`, `release_blockers`, and `primitive_resolution`.\n- Stable error codes such as `version_mismatch`, `adapter_not_loaded`, `profile_primitive_unresolved`, `contacts_primitive_unresolved`, `scan_primitive_unresolved`, and `rpc_timeout`.\n\n## Current Status and Limits\n\nMacFriends is currently a `0.1.x` beta project. The repository already includes the CLI, controlled-copy flow, native agent, fixture smoke test, local web console, installer, packaging workflow, logs, and readiness gates.\n\nImportant limits:\n\n- macOS + Apple Silicon (`arm64`) only.\n- Current adapter is locked to `WeChat 4.1.8`, bundle id `com.tencent.xinWeChat`, `arm64`, and `signature_scan`.\n- The production attach point is `WeChatAppEx 2.4.1.19024`.\n- In the current source, unresolved private primitives fail conservatively with `profile_primitive_unresolved`, `contacts_primitive_unresolved`, or `scan_primitive_unresolved`. Do not treat those as production-ready scan results.\n- Fixture mode is for testing and CI only.\n- This repository does not distribute WeChat installers and does not automatically track the latest WeChat release.\n\n## Quick Start\n\nFrom source:\n\n```bash\ncargo build\nmake -C native/agent artifacts\ncargo run -p macfriends -- doctor\ncargo run -p macfriends -- status\ncargo run -p macfriends -- prepare\ncargo run -p macfriends -- launch --login\ncargo run -p macfriends -- attach\ncargo run -p macfriends -- serve --open\n```\n\nLocal install:\n\n```bash\nmake install-local\nmacfriends doctor\nmacfriends status\nmacfriends serve --open\n```\n\nPackage:\n\n```bash\nmake package\n```\n\nSee [docs/install.md](docs/install.md), [docs/operations.md](docs/operations.md), and [docs/README.md](docs/README.md) for the full workflow.\n\n## Tech Stack\n\n| Layer | Technology | Role |\n| --- | --- | --- |\n| CLI | Rust 2024, clap, serde, anyhow | Commands, status aggregation, export, web orchestration |\n| Native agent | Objective-C++ | Runtime attachment and local primitive handling |\n| IPC | Unix Domain Socket | Local JSON RPC at `/tmp/macfriends-$USER/agent.sock` |\n| Web console | Built-in Rust HTTP server | Local UI backed by the same CLI JSON commands |\n| Packaging | Makefile + shell scripts | Native assets, tar.gz package, local installation |\n\n## Compatibility\n\n| Item | Current value |\n| --- | --- |\n| Platform | macOS |\n| Architecture | Apple Silicon `arm64` |\n| WeChat bundle | `com.tencent.xinWeChat` |\n| WeChat version | `4.1.8` |\n| Runtime component | `WeChatAppEx 2.4.1.19024` |\n| Adapter | `wechat_4_1_8_arm64` |\n| Resolver | `signature_scan` |\n\n## Production Readiness Gate\n\nA run is production-ready only when `doctor --json` or `attach --json` reports:\n\n```text\nruntime_ready = true\nfixture_enabled = false\nrelease_blockers = []\nprimitive_resolution.profile = resolved\nprimitive_resolution.contacts = resolved\nprimitive_resolution.scan = resolved\n```\n\nIf `primitive_resolution` is `unresolved`, `blocked`, or `fixture`, the project may be buildable and testable, but it is not ready for real production scanning.\n\n## Local Web Console\n\n```bash\nmacfriends serve --open\n```\n\nDefault URL:\n\n```text\nhttp://127.0.0.1:8765\n```\n\nThe web console calls the same `macfriends --json` backend, so it does not bypass CLI readiness checks.\n\n![MacFriends local web console for macOS WeChat friend checking](docs/assets/macfriends-console-cn.jpg)\n\n![MacFriends status API JSON for WeChat friend checker CLI](docs/assets/macfriends-api-status-cn.jpg)\n\n## Documentation\n\n- [README.md](README.md): Chinese-first project overview, quick start, limits, readiness gate, FAQ.\n- [docs/README.md](docs/README.md): Documentation map and reader paths.\n- [docs/中文用户指南.md](docs/中文用户指南.md): Chinese user workflow.\n- [docs/install.md](docs/install.md): Installation and package layout.\n- [docs/operations.md](docs/operations.md): Release, rollback, backup, diagnostics.\n- [docs/compatibility.md](docs/compatibility.md): WeChat version and adapter boundary.\n- [docs/architecture.md](docs/architecture.md): CLI, agent, controlled copy, web console, readiness design.\n- [llms.txt](llms.txt): LLM and AI-search-friendly project summary.\n\n## GitHub Topics Suggestion\n\n`wechat`, `macos`, `apple-silicon`, `rust-cli`, `objective-cpp`, `friend-checker`, `unix-domain-socket`, `local-first`, `wechat-tool`, `cli-tool`\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=tytsxai/macfriends-cli\u0026type=Date)](https://www.star-history.com/#tytsxai/macfriends-cli\u0026Date)\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftytsxai%2Fmacfriends-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftytsxai%2Fmacfriends-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftytsxai%2Fmacfriends-cli/lists"}