Herdr is joining Y Combinator. The runtime stays open

Herdr is joining Y Combinator. The runtime stays open

Herdr 加入 Y Combinator,运行时保持开源

Hey everyone, it’s Can, the only person behind Herdr. This post is about how I decided to change that. Four months ago I was looking for another job. Thinking about where to go career-wise. Thinking about software engineering and its future in general, my hobby projects, applications, whiteboard interviews (I still can’t believe we do those). And at some point it hit me: I am the bottleneck. 大家好,我是 Can,Herdr 背后的唯一开发者。这篇文章讲述了我如何决定改变现状。四个月前,我还在找工作,思考职业生涯的去向。我思考着软件工程及其未来、我的业余项目、应用程序以及白板面试(我至今无法相信我们还在进行这种面试)。就在那一刻,我意识到:我就是那个瓶颈。

This is a management and engineering problem. I don’t want to install an app or learn a new tool just to manage my agents and my development style. I want something that fits me. You know how every company releases their own agent these days? No, don’t do that. Let my agent integrate with your product, don’t offer me another agent. Same idea here. I didn’t like what I tried, so why not build it? So I built a runtime. 这是一个管理和工程问题。我不想为了管理我的智能体(Agent)和开发风格而去安装一个应用或学习一个新工具。我想要的是适合我的东西。你知道现在每家公司都在发布自己的智能体吗?别那样做。让我的智能体集成到你的产品中,而不是强塞给我另一个智能体。这里也是同样的道理。我尝试过现有的工具,但都不满意,所以为什么不自己做一个呢?于是,我构建了一个运行时(Runtime)。

But what is a runtime? Runtime CLI coding agents run in terminals, and terminals have always been our home: editing code (yes, nvim chads), running servers, navigating projects, maintaining CI, machines, configurations. It’s the root. It’s the connection. So agents need first class primitives there. A terminal pane belongs to an agent. A pane belongs to a tab. Tabs belong to a project. They need to be persistent. We have agents running for hours now, sometimes days. And once you have the runtime, where they run stops mattering. You should be able to run them anywhere and keep them running. That’s where Herdr was born. 那么,什么是运行时?CLI 编码智能体在终端中运行,而终端一直是我们的大本营:编辑代码(没错,nvim 大神们)、运行服务器、导航项目、维护 CI、机器和配置。它是根基,是连接点。因此,智能体需要在那里拥有“一等公民”的原始支持。一个终端窗格属于一个智能体,一个窗格属于一个标签页,标签页属于一个项目。它们需要持久化。我们现在的智能体运行时间长达数小时,有时甚至数天。一旦有了运行时,它们在哪里运行就不再重要了。你应该能够在任何地方运行它们并保持其持续运行。这就是 Herdr 诞生的初衷。

But a runtime without an interface is nothing, so: the TUI. The TUI is the UI I use every day, and it carried Herdr this far. Not because it’s a UI, but because it shows the concepts Herdr believes in: tracking agents at a glance, dividing work between projects instead of getting lost in a pile of agents, being alerted only when an agent actually needs you. It also has one big advantage, and it’s the reason it stays first class forever: it’s bundled. Install Herdr on your VPS, ssh in, and your UI is already there. Or run herdr --remote user@host and it installs itself. Depending on your network speed, you’re a couple of seconds away from an agent running. One command and you’re in. Nothing beats that. 但没有界面的运行时什么也不是,所以:TUI(终端用户界面)出现了。TUI 是我每天使用的界面,它支撑 Herdr 走到了今天。这不仅仅因为它是一个 UI,更因为它展示了 Herdr 所秉持的理念:一目了然地追踪智能体,将工作划分到不同项目中而不是迷失在智能体堆里,只在智能体真正需要你时才发出提醒。它还有一个巨大的优势,这也是它永远保持“一等公民”地位的原因:它是捆绑式的。在你的 VPS 上安装 Herdr,SSH 登录进去,你的 UI 就在那里。或者运行 herdr --remote user@host,它会自动安装。根据你的网速,几秒钟内智能体就能运行起来。一条命令,搞定。没有什么比这更高效了。

Still, the TUI was never meant to be the only client. A runtime means people can build on top of it, and people did! A Raycast extension, a Stream Deck with buttons for herdr, an iOS app that drives a whole session from a session from a phone. More than 500 plugins, one month after the marketplace released. I didn’t build any of these. The TUI has its limits too. Some of the ideas in my head are hard to build inside a terminal, and I trust terminals, but Herdr will need more clients. More on that later. 尽管如此,TUI 从未打算成为唯一的客户端。运行时意味着人们可以在其之上进行构建,事实也确实如此!Raycast 扩展、带有 Herdr 按钮的 Stream Deck、可以通过手机驱动整个会话的 iOS 应用。插件市场发布一个月后,就已经有了超过 500 个插件。这些都不是我做的。TUI 也有其局限性。我脑海中有些想法很难在终端内实现,虽然我信任终端,但 Herdr 将需要更多的客户端。稍后再详述。

Where we are now: So a solo project reached 25k stars and 340k downloads, and it became more than one person can carry. Herdr is joining Y Combinator, F26 batch. I’m excited to make Herdr a company that builds a developer tool for anyone juggling agents all day. I want to build a small team: people who keep the runtime healthy, robust, fast, running anywhere easily, and more extensible. Letting you do more while Herdr stays small. The runtime, what you use right now, stays free. Apache-2.0. That’s why I recently switched it from AGPL to Apache: I want everyone to use Herdr freely, without any problem. 现状:一个个人项目达到了 2.5 万颗星和 34 万次下载,它已经超出了一个人所能承载的范围。Herdr 即将加入 Y Combinator 的 F26 批次。我很兴奋能将 Herdr 打造为一家公司,为那些整天忙于处理各种智能体的开发者构建工具。我想组建一个小团队:成员们将负责保持运行时的健康、稳健、快速,确保其能在任何地方轻松运行,并具备更好的可扩展性。让你能做更多事,同时保持 Herdr 的轻量。你现在使用的运行时将保持免费,采用 Apache-2.0 协议。这就是为什么我最近将其从 AGPL 切换到 Apache 的原因:我希望每个人都能毫无顾虑地自由使用 Herdr。

Where we’re going: I want to build on top of the open Herdr runtime like everyone else. I’ll keep supporting the open source while building the features people really need. The demand is already visible: multiple clients, a laptop, a VPS for the six hour job, a sandbox for risky code and ephemeral agents. Herdr can run anywhere today, but those machines are disconnected. It should be connected. There are many more features in my head, but I don’t want to rush. People keep telling me they love that Herdr stays lean, and that’s what I want to protect. In an age where adding one more feature costs nothing, choosing what goes in the core is the most important decision, I believe. So the core stays small, and everything else stays possible through extensions: your style, your flows, your company’s setup, your themes, your crazy ideas. Thank you for getting Herdr this far. Thanks for the support, for sharing the love. You have no idea how grateful I am. Anyway, back to work. 未来方向:我想像其他人一样,在开源的 Herdr 运行时之上进行构建。我将继续支持开源,同时开发人们真正需要的功能。需求已经显而易见:多客户端支持、笔记本电脑、用于六小时任务的 VPS、用于运行风险代码和临时智能体的沙箱。Herdr 今天可以在任何地方运行,但这些机器之间是断开的。它们应该被连接起来。我脑海中还有很多功能,但我不想操之过急。人们一直告诉我,他们喜欢 Herdr 的精简,而这正是我想要保护的。在这个增加一个功能几乎零成本的时代,我认为选择什么进入核心代码库是最重要的决定。因此,核心保持精简,而其他一切都通过扩展来实现:你的风格、你的工作流、你公司的配置、你的主题、你疯狂的想法。感谢你们让 Herdr 走到今天。感谢你们的支持和分享。你们无法想象我有多感激。好了,回去工作了。