K
kurtschwarz/herder
A native macOS editor for working alongside coding agents
在 GitHub 查看 ↗链接已于 2026-11-12 核查 · HTTP 200 · 打开的是厂商自己的官网
官方说明A native macOS editor for working alongside coding agents. Run Claude Code sessions next to your files, give each task its own git worktree, see which agents need you, and review their changes before they land. Built with Swift 6, SwiftUI and Rust.
- ★ 数取值
- 0 ★ · kurtschwarz/herder · 取自 GitHub 搜索 API · (2026-11-13 20:00:50 核对)
- 来源明细
- 从该仓库的 GitHub 页面直接读取 · 条目类型:开源项目
- 收录与活跃
- 收录于 2026-11-10 · 最近见到 2026-11-14 · 共见到 5 次 · 被 1 个来源列出
- 评分构成
- 综合分 103 · 1 个来源 · repo
常见问题(答案都来自我们的记录)
它适合谁 / 用来做什么?
我们把它归在这些标签下: 开源项目。标签来自条目自身,不是我们强加的分类。
谁维护它、还在更新吗?
仓库
kurtschwarz/herder;我们收录于 2026-11-10;最近见到 2026-11-14。这里没有"官方认证"或"质量评级"——我们只记录来源与时间。# Herder
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
A monorepo. Today it holds one macOS app; more apps and services go beside it.
## Layout
herder/
├── justfile # forwards every task to an app or service
├── apps/
│ └── herder/ # the macOS app
│ ├── AGENTS.md # where a new file goes; points at docs/ARCHITECTURE.md
│ ├── docs/
│ │ └── ARCHITECTURE.md # the rulebook: layers, state, concurrency
│ ├── justfile # how to build, test and run this app
│ ├── project.yml # source of truth for Herder.xcodeproj
│ ├── scripts/ # check-boundaries.sh, the import rules a compiler can't see
│ ├── Herder/ # thin app target: entry point and resources only
│ ├── HerderKit/ # all the code, split into modules
│ └── UITests/ # XCTest, since Swift Testing has no UI automation
└── packages/
└── herder-syntax-highlighter/ # Rust: tree-sitter grammars behind a C ABI
New apps go in apps/ /. Services go in services/ /. A package under
packages/ is for code that does not belong inside one app: either because more
than one of them uses it, or because it is not written in the app's language.
packages/herder-syntax-highlighter is the second kind — Rust, consumed by the macOS app as an
XCFramework.
apps/herder/docs/ARCHITECTURE.md is the rulebook for the app, and it wins
over this file. What is here is the monorepo and a tour; what is there is the
layering, the dependency rules, the state model and the conventions, in enough
detail to settle an argument.
## Getting started
sh
just bootstrap apps/herder # builds the syntax crate, generates Herder.xcodeproj
just test apps/herder # fast module tests, no app host
just dev apps/herder # build and run, logs in the terminal
Requires Xcode 26+, brew install just xcodegen, and a Rust toolchain
(brew install rustup && rustup-init). just bootstrap installs the Rust
targets it needs.
HerderKit has a .binaryTarget pointing at an XCFramework built from
packages/herder-syntax-highlighter, so a fresh clone must run just bootstrap apps/herder before
the Swift package will resolve. Every recipe that compiles Swift rebuilds the
crate first: a stale static library would link without complaint and highlight
with yesterday's grammars.
## Commands
Every recipe takes the path to an app or service, so the same verbs work across the
repo as it grows:
| Command | Does |
| just build | Build it |
| just test | Run its tests. Extra arguments pass through: just test apps/herder -only-testing:CoreTests |
| just dev | Build and run it, with its output in your terminal |
| just bootstrap | Set it up in a fresh clone |
| just clean | Remove its build artifacts |
| just in | Run anything else it defines, e.g. just in apps/herder uitest |
| just test-all | Test every app and service |
| just list | List the apps and services |
The root justfile only forwards. Each app or service owns a justfile with those
recipe names, which is what lets a Swift app and, later, a Go service sit side by
side without the root knowing anything about either toolchain. just on its own
lists every recipe, in either place.
Stopping just dev with either Ctrl-C or Cmd-Q exits 0 and prints nothing extra.
That takes a signal trap at each layer: Ctrl-C goes to every process in the
terminal's foreground group, so without one, the recipe's own shell dies by signal
## Layout
herder/
├── justfile # forwards every task to an app or service
├── apps/
│ └── herder/ # the macOS app
│ ├── AGENTS.md # where a new file goes; points at docs/ARCHITECTURE.md
│ ├── docs/
│ │ └── ARCHITECTURE.md # the rulebook: layers, state, concurrency
│ ├── justfile # how to build, test and run this app
│ ├── project.yml # source of truth for Herder.xcodeproj
│ ├── scripts/ # check-boundaries.sh, the import rules a compiler can't see
│ ├── Herder/ # thin app target: entry point and resources only
│ ├── HerderKit/ # all the code, split into modules
│ └── UITests/ # XCTest, since Swift Testing has no UI automation
└── packages/
└── herder-syntax-highlighter/ # Rust: tree-sitter grammars behind a C ABI
New apps go in apps/ /. Services go in services/ /. A package under
packages/ is for code that does not belong inside one app: either because more
than one of them uses it, or because it is not written in the app's language.
packages/herder-syntax-highlighter is the second kind — Rust, consumed by the macOS app as an
XCFramework.
apps/herder/docs/ARCHITECTURE.md is the rulebook for the app, and it wins
over this file. What is here is the monorepo and a tour; what is there is the
layering, the dependency rules, the state model and the conventions, in enough
detail to settle an argument.
## Getting started
sh
just bootstrap apps/herder # builds the syntax crate, generates Herder.xcodeproj
just test apps/herder # fast module tests, no app host
just dev apps/herder # build and run, logs in the terminal
Requires Xcode 26+, brew install just xcodegen, and a Rust toolchain
(brew install rustup && rustup-init). just bootstrap installs the Rust
targets it needs.
HerderKit has a .binaryTarget pointing at an XCFramework built from
packages/herder-syntax-highlighter, so a fresh clone must run just bootstrap apps/herder before
the Swift package will resolve. Every recipe that compiles Swift rebuilds the
crate first: a stale static library would link without complaint and highlight
with yesterday's grammars.
## Commands
Every recipe takes the path to an app or service, so the same verbs work across the
repo as it grows:
| Command | Does |
| just build | Build it |
| just test | Run its tests. Extra arguments pass through: just test apps/herder -only-testing:CoreTests |
| just dev | Build and run it, with its output in your terminal |
| just bootstrap | Set it up in a fresh clone |
| just clean | Remove its build artifacts |
| just in | Run anything else it defines, e.g. just in apps/herder uitest |
| just test-all | Test every app and service |
| just list | List the apps and services |
The root justfile only forwards. Each app or service owns a justfile with those
recipe names, which is what lets a Swift app and, later, a Go service sit side by
side without the root knowing anything about either toolchain. just on its own
lists every recipe, in either place.
Stopping just dev with either Ctrl-C or Cmd-Q exits 0 and prints nothing extra.
That takes a signal trap at each layer: Ctrl-C goes to every process in the
terminal's foreground group, so without one, the recipe's own shell dies by signal
收录徽章(可选)
想把收录标记放进 README 就复制这行,可选,不影响收录。
[](https://anclum.com/zh/s/kurtschwarz-herder/)
- 来源
- github · https://github.com/kurtschwarz/herder
- 按领域浏览
- 开源项目
- 收录于
- 今天
同类推荐
所属领域与标签
每个标签都能点进去看同类的全部条目。数字是当前库里的真实条数。