woop/lulu-cli

GitHub: woop/lulu-cli

LuLu macOS 防火墙的命令行管理工具,专为 AI 智能体和自动化脚本设计,实现程序化的出站连接规则控制。

Stars: 0 | Forks: 0

lulu-cli mascot

# lulu-cli 通过命令行管理 [LuLu](https://objective-see.org/products/lulu.html) 防火墙规则。 [LuLu](https://objective-see.org/products/lulu.html) 是一款免费、开源的 macOS 防火墙,用于阻止未知的传出连接。它拥有 GUI 界面,但无法通过编程方式管理规则。此 CLI 正是为了填补这一空白——适用于需要管理自身网络访问的自动化任务、脚本和 AI 智能体。 ## 系统要求 - macOS 13+ - 已安装 [LuLu](https://objective-see.org/products/lulu.html) - 写入操作需要 `sudo` 权限 ## 安装 ``` # Homebrew (推荐,预编译 binary) brew install woop/tap/lulu-cli # 从源码构建 (需要 Swift) git clone https://github.com/woop/lulu-cli cd lulu-cli make install # builds and copies to ~/.local/bin/ ``` ## 快速开始 ``` # 拦截了什么? lulu-cli recent 5 ``` ``` 2026-03-15 09:12 | api.example.com:443 | passive key=com.apple.curl uuid=A1B2C3D4-... 2026-03-15 09:10 | cdn.example.com:443 | passive key=org.nodejs.node uuid=E5F6G7H8-... 2 total block rules, showing 2 most recent ``` ``` # 允许 sudo lulu-cli add --key '*' --path '*' --action allow --addr api.example.com --port 443 sudo lulu-cli reload ``` 这就是核心循环:检查拦截、添加允许、重新加载。 ## 命令 所有写入操作都需要 `sudo` 权限。更改后务必运行 `reload`。 ### `list [filter]` 列出所有防火墙规则。可选择按关键字筛选(匹配 key 或二进制路径)。 ``` lulu-cli list # all rules lulu-cli list curl # rules for curl lulu-cli list '*' # global/wildcard rules only ``` ### `recent [N]` 显示最近 N 条拦截规则,按最新排序。默认值:20。 ``` lulu-cli recent # last 20 blocks lulu-cli recent 5 # last 5 ``` ### `add` 添加一条新的防火墙规则。 | 标志 | 描述 | 默认值 | |------|-------------|---------| | `--key KEY` | 签名身份或 `*`(表示全局) | 必需 | | `--path PATH` | 二进制路径或 `*`(表示全局) | 必需 | | `--action allow\|block` | 规则动作 | 必需 | | `--addr ADDR` | 域名、IP 或正则表达式 | `*` | | `--port PORT` | 端口号或 `*` | `*` | | `--regex` | 将 addr 视为正则表达式 | 关闭 | ``` # 全局允许域名 sudo lulu-cli add --key '*' --path '*' --action allow --addr example.com --port 443 # 允许域名 + 所有子域名 (regex) sudo lulu-cli add --key '*' --path '*' --action allow \ --addr '^(.+\.)?example\.com$' --port '*' --regex # 仅允许特定 app sudo lulu-cli add --key "/usr/bin/curl" --path /usr/bin/curl \ --action allow --addr example.com --port 443 ``` ### `delete` 通过 key 和可选的 UUID 删除规则。如果不指定 `--uuid`,则删除该 key 的所有规则。 ``` sudo lulu-cli delete --key "com.apple.curl" --uuid "UUID-HERE" sudo lulu-cli delete --key "com.apple.curl" # deletes ALL rules for this key ``` ### `delete-match` 删除匹配特定条件的规则。 ``` sudo lulu-cli delete-match --key "com.apple.curl" --action block --port 53 ``` ### `enable` / `disable` 切换规则的启用状态。 ``` sudo lulu-cli enable --key '*' --uuid UUID-HERE sudo lulu-cli disable --key '*' --uuid UUID-HERE ``` ### `reload` 重启 LuLu 系统扩展以应用更改。macOS 会在约 8 秒内自动重启它。 ``` sudo lulu-cli reload ``` ### `help` ``` lulu-cli help ``` ## 工作原理 LuLu 将规则存储在 `/Library/Objective-See/LuLu/rules.plist` 中,使用 NSKeyedArchiver 二进制格式。此 CLI 直接读取和写入该文件,并使用与 LuLu 的 Objective-C 代码库相同的序列化格式。 LuLu 系统扩展仅在启动时加载规则。更改后,`reload` 会终止扩展进程,macOS 会自动重启它(耗时约 8 秒)。重启期间会有短暂的过滤间隙。 ## 配合 AI 智能体使用 此 CLI 专为需要管理自身网络访问的 AI 智能体(如 [OpenClaw](https://openclaw.ai) 或 [Claude Code](https://docs.anthropic.com/en/docs/claude-code))设计。一种常见的设置是将 LuLu 置于被动模式,并将新连接默认为拦截,这样智能体就不会意外泄露数据。智能体随后使用 lulu-cli 来允许其需要的特定域名。 ### AI 智能体技能 本仓库在 [`skills/lulu-cli/`](skills/lulu-cli/SKILL.md) 中附带了一个 [AgentSkills](https://agentskills.io)-兼容的技能。 **OpenClaw:** 通过 [ClawHub](https://clawhub.com) 安装或复制技能目录。 **Claude Code:** `.claude-plugin/` 清单使其可从市场安装。 ## 许可证 MIT
标签:Awesome, CLI, Homebrew, LuLu, macOS安全, Objective-See, Swift, WiFi技术, 出站连接, 开源, 文档结构分析, 系统管理, 网络信息收集, 网络安全, 网络调试, 脚本, 自动化, 规则管理, 进程控制, 防火墙, 隐私保护