{"_id":"@aisymbiote/ifly","_rev":"9-2704c12d87e7a12622180bd83bb82ae3","name":"@aisymbiote/ifly","dist-tags":{"latest":"0.1.9"},"versions":{"0.1.0":{"name":"@aisymbiote/ifly","version":"0.1.0","keywords":["proxy","http","socks5","macos"],"license":"MIT","_id":"@aisymbiote/ifly@0.1.0","maintainers":[{"name":"aisymbiote","email":"kunxia0716@gmail.com"}],"homepage":"https://github.com/AISymbiote/ifly#readme","bugs":{"url":"https://github.com/AISymbiote/ifly/issues"},"os":["darwin"],"bin":{"ifly":"bin/ifly"},"cpu":["arm64"],"dist":{"shasum":"741f2c5ae9b9206112344a52cd15bbecb7c6044f","tarball":"https://registry.npmjs.org/@aisymbiote/ifly/-/ifly-0.1.0.tgz","fileCount":6,"integrity":"sha512-OZFlqrC0xZsP7OcxLCR0Cg7wJFcXU+3QykN9FZ3nk/3KX6HUIGnQbTRqnedz/EljNV9l+h33/AQOwjCxWWsPsQ==","signatures":[{"sig":"MEUCIQChlLvgFh/sqBPkFEGXmr77DWYZrY0+MWbkQewv6bAJEAIgJYXVyC4A4zQM8+OEVMxt91L4/jIWNCy3n5OpJttUwnc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9084281},"gitHead":"52ccb520d79796da7a8f6393389acca85703fe32","private":false,"scripts":{"prepack":"bash ./scripts/build-npm-binary.sh","postinstall":"node ./scripts/postinstall.cjs"},"_npmUser":{"name":"aisymbiote","email":"kunxia0716@gmail.com"},"repository":{"url":"git+https://github.com/AISymbiote/ifly.git","type":"git"},"_npmVersion":"11.8.0","description":"Dual inbound chain proxy CLI for macOS arm64","directories":{},"_nodeVersion":"25.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ifly_0.1.0_1778151108337_0.75938195351653","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aisymbiote/ifly","version":"0.1.2","keywords":["proxy","http","socks5","macos"],"license":"MIT","_id":"@aisymbiote/ifly@0.1.2","maintainers":[{"name":"aisymbiote","email":"kunxia0716@gmail.com"}],"homepage":"https://github.com/AISymbiote/ifly#readme","bugs":{"url":"https://github.com/AISymbiote/ifly/issues"},"os":["darwin"],"bin":{"ifly":"bin/ifly"},"cpu":["arm64"],"dist":{"shasum":"59632c04d111c036cc80178d2d0f6d036704de36","tarball":"https://registry.npmjs.org/@aisymbiote/ifly/-/ifly-0.1.2.tgz","fileCount":6,"integrity":"sha512-8AI8fYxTvhQqIaFAtIPKjfwiYQVXEnCgj4nM4h3RK2QIJ1am9jYuRixjiPeiammOcx2Tx+ucgQCmiihtRGCGKw==","signatures":[{"sig":"MEQCICNPXch9H7NHg/hQnJduuXw4KqD7ZFAax97Z+ddHFrqUAiAguLM+C2iq6EtscvvoYMkfKiXJBdy9+hAMXoQTNiCEEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8316489},"gitHead":"10fefb75997233b401d6e56a8361d087faf6fbfe","private":false,"scripts":{"prepack":"bash ./scripts/build-npm-binary.sh","postinstall":"node ./scripts/postinstall.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:94c469b3-2321-4dbe-a76a-37fe61a5235d"}},"repository":{"url":"git+https://github.com/AISymbiote/ifly.git","type":"git"},"_npmVersion":"11.11.0","description":"Dual inbound chain proxy CLI for macOS arm64","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ifly_0.1.2_1778152490910_0.1779494571123703","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@aisymbiote/ifly","version":"0.1.3","keywords":["proxy","http","socks5","macos"],"license":"MIT","_id":"@aisymbiote/ifly@0.1.3","maintainers":[{"name":"aisymbiote","email":"kunxia0716@gmail.com"}],"homepage":"https://github.com/AISymbiote/ifly#readme","bugs":{"url":"https://github.com/AISymbiote/ifly/issues"},"os":["darwin"],"bin":{"ifly":"bin/ifly"},"cpu":["arm64"],"dist":{"shasum":"22e302dc7af0cab63c2f90e897f2c91b6507812c","tarball":"https://registry.npmjs.org/@aisymbiote/ifly/-/ifly-0.1.3.tgz","fileCount":6,"integrity":"sha512-3JULUEEJPTpZiVizy1kRjXO5MVQ9B7dfkMdOls2s2FajGV6PIaeuM76LypePKWl/AvrDze1de+wILkgnNFaQxw==","signatures":[{"sig":"MEYCIQCOgqWy0nAKsfYE/fITcacn//7VIvIsnIIQ9B7DC+FUawIhAJta2G8JCfT5/2w2JGU9fMxjVoawUlaubOb1dQZm4H3b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8316489},"gitHead":"ec955d183921ef4dfc54e87a40ea07ca29c72e44","private":false,"scripts":{"prepack":"bash ./scripts/build-npm-binary.sh","postinstall":"node ./scripts/postinstall.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:94c469b3-2321-4dbe-a76a-37fe61a5235d"}},"repository":{"url":"git+https://github.com/AISymbiote/ifly.git","type":"git"},"_npmVersion":"11.11.0","description":"Dual inbound chain proxy CLI for macOS arm64","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ifly_0.1.3_1778152928953_0.5102008188932303","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@aisymbiote/ifly","version":"0.1.4","keywords":["proxy","http","socks5","macos"],"license":"MIT","_id":"@aisymbiote/ifly@0.1.4","maintainers":[{"name":"aisymbiote","email":"kunxia0716@gmail.com"}],"homepage":"https://github.com/AISymbiote/ifly#readme","bugs":{"url":"https://github.com/AISymbiote/ifly/issues"},"os":["darwin"],"bin":{"ifly":"bin/ifly"},"cpu":["arm64"],"dist":{"shasum":"cec54e9fa8e73fa40e685cbfa32263cef0f27cbb","tarball":"https://registry.npmjs.org/@aisymbiote/ifly/-/ifly-0.1.4.tgz","fileCount":6,"integrity":"sha512-mN+DhykGboKBpdtxwVK2FWjVtfG3k7Xphm/XQjn56spPWxeJB9YfZeS28aLrUR5RfHhW+aZ+lhqgEJxwMo6/dg==","signatures":[{"sig":"MEUCIQClWmShpuAowO+rqrguhQ9p2IfDsNsX3D8vzTkgBlTywAIgI9qFGH408xsE4OkVdmBvJrCtpTmsJmUV1Huh25d8bMA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8316489},"gitHead":"3640d5935839248fd2b08b886cc28ea62f963776","private":false,"scripts":{"prepack":"bash ./scripts/build-npm-binary.sh","postinstall":"node ./scripts/postinstall.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:94c469b3-2321-4dbe-a76a-37fe61a5235d"}},"repository":{"url":"git+https://github.com/AISymbiote/ifly.git","type":"git"},"_npmVersion":"11.11.0","description":"Dual inbound chain proxy CLI for macOS arm64","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ifly_0.1.4_1778154590797_0.27660402137302476","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@aisymbiote/ifly","version":"0.1.5","keywords":["proxy","http","socks5","macos"],"license":"MIT","_id":"@aisymbiote/ifly@0.1.5","maintainers":[{"name":"aisymbiote","email":"kunxia0716@gmail.com"}],"homepage":"https://github.com/AISymbiote/ifly#readme","bugs":{"url":"https://github.com/AISymbiote/ifly/issues"},"os":["darwin"],"bin":{"ifly":"bin/ifly"},"cpu":["arm64"],"dist":{"shasum":"1b4acb4fb9e4c68f092e1d55b30aacb0a0a31a7b","tarball":"https://registry.npmjs.org/@aisymbiote/ifly/-/ifly-0.1.5.tgz","fileCount":6,"integrity":"sha512-wEbB3dVQ+STWZlWpuJsl+18JhE34998zkZkrs/w2THzhNs9gRjPJ0919l4fkJuIGX29Jqpi0iLvOk2ZEiKfglg==","signatures":[{"sig":"MEUCIQD5IpCzAAwTAbTOKnSkO0eNZeUAWDp3IiUqwxLuEmY8gwIgYzSqXUKKlBjs4hf58I2lLVxJE65bsBZUyTV3eDGrJg8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8329621},"gitHead":"cb35e62f8e2111267460e6e6a09f58cf2140e91f","private":false,"scripts":{"prepack":"bash ./scripts/build-npm-binary.sh","postinstall":"node ./scripts/postinstall.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:94c469b3-2321-4dbe-a76a-37fe61a5235d"}},"repository":{"url":"git+https://github.com/AISymbiote/ifly.git","type":"git"},"_npmVersion":"11.11.0","description":"Dual inbound chain proxy CLI for macOS arm64","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ifly_0.1.5_1778169960846_0.720907305437362","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@aisymbiote/ifly","version":"0.1.6","keywords":["proxy","http","socks5","macos"],"license":"MIT","_id":"@aisymbiote/ifly@0.1.6","maintainers":[{"name":"aisymbiote","email":"kunxia0716@gmail.com"}],"homepage":"https://github.com/AISymbiote/ifly#readme","bugs":{"url":"https://github.com/AISymbiote/ifly/issues"},"os":["darwin"],"bin":{"ifly":"bin/ifly"},"cpu":["arm64"],"dist":{"shasum":"43f72190e64d342a77aaa3f56b070181a9a84356","tarball":"https://registry.npmjs.org/@aisymbiote/ifly/-/ifly-0.1.6.tgz","fileCount":6,"integrity":"sha512-OdDDeweeRb2AL23Qbrriw9nGJMBFy0xtKYfqZKKvl7uoPNA7+dnJPWlJFFmlUFseGInSybqcr8Hrww1attN78g==","signatures":[{"sig":"MEUCIQCYcHrnFsnKVX+INebFIZme4DXg9jNgw1ZW/colf7aO2AIgFohVrdei/3qLLeA7ZiXCfip2VD9jH98c4IBsCr9RwHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8330021},"gitHead":"f759e51fc7729ffa68f27cfae9abf5477ede92c7","private":false,"scripts":{"prepack":"bash ./scripts/build-npm-binary.sh","postinstall":"node ./scripts/postinstall.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:94c469b3-2321-4dbe-a76a-37fe61a5235d"}},"repository":{"url":"git+https://github.com/AISymbiote/ifly.git","type":"git"},"_npmVersion":"11.11.0","description":"Dual inbound chain proxy CLI for macOS arm64","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ifly_0.1.6_1778246169369_0.3969195203333422","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@aisymbiote/ifly","version":"0.1.7","keywords":["proxy","http","socks5","macos"],"license":"MIT","_id":"@aisymbiote/ifly@0.1.7","maintainers":[{"name":"aisymbiote","email":"kunxia0716@gmail.com"}],"homepage":"https://github.com/AISymbiote/ifly#readme","bugs":{"url":"https://github.com/AISymbiote/ifly/issues"},"os":["darwin"],"bin":{"ifly":"bin/ifly"},"cpu":["arm64"],"dist":{"shasum":"a0e579537dcbac941ea6e3e43199872bb719b91a","tarball":"https://registry.npmjs.org/@aisymbiote/ifly/-/ifly-0.1.7.tgz","fileCount":6,"integrity":"sha512-jilO+Vr5FV7larMsAhMCt5/RAT+mD6zFIkbmrDEg2udLLbCbmYm5UGi26aRSKB9cAfEWd0O8wt3ruTci+mW00Q==","signatures":[{"sig":"MEUCIQDSj50YtUKclTwpAJIhLEvO7flW04CO9JU8JV3juqKlNAIgW5Y3OEoyEs8i0IrV/k0gOdJduoH87kefsJEt5Vr9P5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8364425},"gitHead":"9d750d7148151d2386b32b80ebc15fa71293e4b6","private":false,"scripts":{"prepack":"bash ./scripts/build-npm-binary.sh","postinstall":"node ./scripts/postinstall.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:94c469b3-2321-4dbe-a76a-37fe61a5235d"}},"repository":{"url":"git+https://github.com/AISymbiote/ifly.git","type":"git"},"_npmVersion":"11.11.0","description":"Dual inbound chain proxy CLI for macOS arm64","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ifly_0.1.7_1778594773681_0.6381459541572785","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@aisymbiote/ifly","version":"0.1.8","keywords":["proxy","http","socks5","macos"],"license":"MIT","_id":"@aisymbiote/ifly@0.1.8","maintainers":[{"name":"aisymbiote","email":"kunxia0716@gmail.com"}],"homepage":"https://github.com/AISymbiote/ifly#readme","bugs":{"url":"https://github.com/AISymbiote/ifly/issues"},"os":["darwin"],"bin":{"ifly":"bin/ifly"},"cpu":["arm64"],"dist":{"shasum":"262095e58e8e6d203bbd68fea347f1318d812226","tarball":"https://registry.npmjs.org/@aisymbiote/ifly/-/ifly-0.1.8.tgz","fileCount":6,"integrity":"sha512-uDF2nRgPpBUijc7cPKUBtUNkBibVB3yiKoYik3RoL3Bvy7Na+gRE8cg0xa+EUG2mjTv9vW6alBndgxJtw1h+Rg==","signatures":[{"sig":"MEUCIQDMx36BtjHGn3aLy1FGbS0E4dn5yLOtJ4im6zaXFRX8XwIgIiu1JvJpow9HsiMqsjH8q+aBdLwjFsGZBDFkw/g7804=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8368097},"gitHead":"efd6e1cf72be6d2d0a31653c89015db1d625cd9e","private":false,"scripts":{"prepack":"bash ./scripts/build-npm-binary.sh","postinstall":"node ./scripts/postinstall.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:94c469b3-2321-4dbe-a76a-37fe61a5235d"}},"repository":{"url":"git+https://github.com/AISymbiote/ifly.git","type":"git"},"_npmVersion":"11.12.1","description":"Dual inbound chain proxy CLI for macOS arm64","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ifly_0.1.8_1779178567382_0.6811121784874763","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@aisymbiote/ifly","version":"0.1.9","description":"Dual inbound chain proxy CLI for macOS arm64","private":false,"license":"MIT","repository":{"type":"git","url":"git+https://github.com/AISymbiote/ifly.git"},"homepage":"https://github.com/AISymbiote/ifly#readme","bugs":{"url":"https://github.com/AISymbiote/ifly/issues"},"bin":{"ifly":"bin/ifly"},"os":["darwin"],"cpu":["arm64"],"scripts":{"prepack":"bash ./scripts/build-npm-binary.sh","postinstall":"node ./scripts/postinstall.cjs"},"publishConfig":{"access":"public"},"keywords":["proxy","http","socks5","macos"],"gitHead":"a1834f998f6e12570f545629098529d21ed5b5bd","_id":"@aisymbiote/ifly@0.1.9","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-Z0695TN/F3nGC73kNKuZPhkwOIpoddNXBCE7aogao0ksAsB1pKo2l1zSuIpK+NK/A+zaKwXG1RbOz+NDgyABkQ==","shasum":"c6086137606dda0497dd9f91280d7c4e9499e6df","tarball":"https://registry.npmjs.org/@aisymbiote/ifly/-/ifly-0.1.9.tgz","fileCount":6,"unpackedSize":8386255,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDhwvGpflissYvsrmITQ6Nrv+qVaEftTZHHBSnJCmRY+gIgYuXVBkWATnwkiFUBte9ylPSKSUL1LubiG6brEP1eXsw="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:94c469b3-2321-4dbe-a76a-37fe61a5235d"}},"directories":{},"maintainers":[{"name":"aisymbiote","email":"kunxia0716@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ifly_0.1.9_1779259286215_0.7664369831308848"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-07T10:51:48.212Z","modified":"2026-05-20T06:41:26.563Z","0.1.0":"2026-05-07T10:51:48.652Z","0.1.2":"2026-05-07T11:14:51.264Z","0.1.3":"2026-05-07T11:22:09.232Z","0.1.4":"2026-05-07T11:49:51.138Z","0.1.5":"2026-05-07T16:06:01.184Z","0.1.6":"2026-05-08T13:16:09.707Z","0.1.7":"2026-05-12T14:06:14.066Z","0.1.8":"2026-05-19T08:16:07.770Z","0.1.9":"2026-05-20T06:41:26.475Z"},"bugs":{"url":"https://github.com/AISymbiote/ifly/issues"},"license":"MIT","homepage":"https://github.com/AISymbiote/ifly#readme","keywords":["proxy","http","socks5","macos"],"repository":{"type":"git","url":"git+https://github.com/AISymbiote/ifly.git"},"description":"Dual inbound chain proxy CLI for macOS arm64","maintainers":[{"name":"aisymbiote","email":"kunxia0716@gmail.com"}],"readme":"# ifly\n\n`ifly` 是一个给本机程序提供**固定本地代理入口**的双入口链式代理。\n\n它默认提供两个本地入口：\n\n- HTTP：`127.0.0.1:8341`\n- SOCKS5：`127.0.0.1:8342`\n\n也支持把这两个入口配置成**同一个端口**，让一个端口同时接受 HTTP 和 SOCKS5。\n\n适合这类场景：\n\n- 你想让某个本机程序始终走一个**固定、可控、只影响它自身**的代理入口\n- 你平时会开 Surge / Clash / Stash / sing-box 等本地代理客户端，但不想把远端节点直接塞进客户端里\n- 你希望本地代理客户端可用时走完整链路，不可用时还能自动回退继续工作\n\n---\n\n## 安装\n\n```bash\nnpm install -g @aisymbiote/ifly\n```\n\n当前 npm 包首发支持：\n\n- macOS\n- Apple Silicon（`darwin-arm64`）\n\n安装后默认配置文件路径：\n\n```text\n~/ifly/config.yaml\n```\n\n如果安装脚本没有自动生成配置模板，可以手动执行：\n\n```bash\nifly init\n```\n\n---\n\n## 快速开始\n\n### 1）准备配置\n\n默认配置文件：\n\n```text\n~/ifly/config.yaml\n```\n\n你至少需要配置好 `local_proxies` 或 `remote_proxies` 中的至少一项。\n\n- 只配 `local_proxies`：`ifly` 会走 `inbounds -> local_proxies -> target`\n- 只配 `remote_proxies`：`ifly` 会走 `inbounds -> remote_proxies -> target`\n- 两者都配：优先走 `inbounds -> local_proxies -> remote_proxies -> target`\n\n如果上游代理不需要认证，把模板里的认证字段改成：\n\n```yaml\nusername: \"\"\npassword: \"\"\n```\n\n如果你平时会开 Surge / Clash / Stash / sing-box，也建议把它们的本地监听端口填进 `local_proxies`。\n\n如果你想只暴露一个本地入口，也可以把 `inbounds` 里的 `http-in.port` 和 `socks-in.port` 都设成同一个值，比如都设成 `8341`。\n\n模板示例见：\n\n```text\nexamples/config.example.yaml\n```\n\n最小配置可以参考这三种：\n\n1. 只用本地代理客户端：\n\n```yaml\ninbounds:\n  - name: http-in\n    protocol: http\n    host: 127.0.0.1\n    port: 8341\n\n  - name: socks-in\n    protocol: socks5\n    host: 127.0.0.1\n    port: 8342\n\nlocal_proxies:\n  - name: local-http\n    protocol: http\n    host: 127.0.0.1\n    port: 6152\n    priority: 0\n```\n\n2. 只用远端专用代理：\n\n```yaml\ninbounds:\n  - name: http-in\n    protocol: http\n    host: 127.0.0.1\n    port: 8341\n\nremote_proxies:\n  - name: remote-http\n    protocol: http\n    host: 1.2.3.4\n    port: 50100\n    username: \"\"\n    password: \"\"\n    priority: 0\n```\n\n3. 本地代理客户端 + 远端专用代理：\n\n```yaml\ninbounds:\n  - name: http-in\n    protocol: http\n    host: 127.0.0.1\n    port: 8341\n\nlocal_proxies:\n  - name: local-http\n    protocol: http\n    host: 127.0.0.1\n    port: 6152\n    priority: 0\n\nremote_proxies:\n  - name: remote-http\n    protocol: http\n    host: 1.2.3.4\n    port: 50100\n    username: \"\"\n    password: \"\"\n    priority: 0\n```\n\n### 2）前台运行\n\n```bash\nifly dev\n```\n\n如果你已经有一份配置文件，想导入为默认配置再运行：\n\n```bash\nifly dev \\\n  -config /path/to/config.yaml\n```\n\n### 3）验证是否可用\n\nHTTP：\n\n```bash\ncurl -x 'http://127.0.0.1:8341' \\\n  'https://checkip.amazonaws.com'\n```\n\nSOCKS5：\n\n```bash\ncurl -x 'socks5h://127.0.0.1:8342' \\\n  'https://checkip.amazonaws.com'\n```\n\n---\n\n## 常用命令\n\n初始化默认配置：\n\n```bash\nifly init\n```\n\n导入一份配置到默认位置：\n\n```bash\nifly init \\\n  -config /path/to/config.yaml\n```\n\n前台运行：\n\n```bash\nifly dev\n```\n\n安装成 macOS 用户级常驻服务：\n\n```bash\nifly install \\\n  -config /path/to/config.yaml\n```\n\n查看状态：\n\n```bash\nifly status\n```\n\n实时查看事件日志：\n\n```bash\nifly log\n```\n\n重启常驻服务：\n\n```bash\nifly restart\n```\n\n卸载常驻服务：\n\n```bash\nifly uninstall\n```\n\n---\n\n## 文件位置\n\n默认配置：\n\n```text\n~/ifly/config.yaml\n```\n\nLaunchAgent plist：\n\n```text\n~/Library/LaunchAgents/com.ifly.plist\n```\n\n日志：\n\n```text\n~/ifly/logs/ifly.log\n~/ifly/logs/ifly.err.log\n```\n\n运行状态与事件订阅：\n\n```text\n~/ifly/state/status.json\n~/ifly/state/events.sock\n```\n\n---\n\n## 常见提示\n\n- `init -config PATH` 和 `dev -config PATH` 都会把那份配置**导入到默认配置路径**，不是临时切换配置文件。\n- `ifly` 启动时只做配置语法/结构校验；像 `your-port` 这种不是合法端口号的值仍然会失败。\n- 测试 SOCKS5 时建议用 `socks5h://`，让域名通过 SOCKS5 传递，而不是由 `curl` 在本地先解析。\n- 对 `localhost`、`127.0.0.1` 和明确的私网/链路本地 IP 目标，`ifly` 会自动直连，不再送进远端代理链。\n\n---\n\n## 更多文档\n\n- 想看链路选择、健康检查、fallback 回切、状态语义等技术细节：\n  `TECHNICAL_SUMMARY.md`\n- 想看演进历史：\n  `DEVELOPMENT_HISTORY.md`\n- 想看原始设计/方案材料：\n  `双入口代理链自动选择方案.md`\n- 想看项目动机背景：\n  `ifly.md`\n","readmeFilename":"README.md"}