Will dive in later to see how its contribution/extension model differs from Pi. Pi is great for a lot of things but has a larger memory footprint and start time than this claims to have so it would be interesting to compare the two.
I'm not in the tech industry. Could someone explain why there are so many new coding agents, and why they're commonly upvoted on HackerNews? It seems like there's a new one in the top 10 every other day.
Because we're actively exploring the best way to remove any need to deal with code, and make it so that you don't need any real talent to make a computer do things for anyone.
We haven't quite hit on the right formula yet, but people are very excited by the possibility.
It's a brand new type of software. Nobody knows what the best way to do it is so a lot of people are trying stuff out, and a lot of people are interested in new ideas.
> Why there are so many new coding agents, and why they're commonly upvoted on HackerNews? It seems like there's a new one in the top 10 every other day.
It is widely known that upvote rings happen on this site.
> Please don't sneer, including at the rest of the community.
> Please don't post insinuations about astroturfing, shilling, brigading, foreign agents, and the like. It degrades discussion and is usually mistaken. If you're worried about abuse, email hn@ycombinator.com and we'll look at the data.
Weird amount of cynical comments for a submission with <50 votes.
It's basically just a relatively simple to create piece of software that's important to get right (since you use it so much), can be made by many different design philosophies (maximal vs. minimal, customizability, etc.), and has very few good standards around it as of yet.
It's a delicate balance of providing good system prompts, tools, workflows for agents, extensibility etc. I've used several and have yet to find the one that fits exactly how I want to work.
Because a lot of people are writing their own to get a tool that they understand and can manipulate as they like. So they like to share them and see what other people have done to learn from. As a community we are still very far from coming to a consensus on what a good harness looks like and the only way, IMO, to get a good feel for it is to write your own.
When a new technique or capability arrives on the tech scene, there's a point in the invention-to-diffusion story when the new thing becomes accessible (e.g. cheap and/or easy) enough for a broader audience of developers to experiment with it... but before anyone's figured out best practices, let alone polished products/projects, or calcified around a market leader.
So you get a Cambrian explosion of weird little projects. Ultimately, one of them will probably become the "market" leader... or at least the market default.
Right now there's a lot of agent harnesses and sandbox projects floating about.
Fun examples from the past: text editors, window managers, IRC clients, blogging engines (first static, then dynamic, then static again), Twitter clients... every programming language community has weird clusters of library/framework duplication in their history...
Sometimes these projects take on a rite of passage flavour... like, as every Jedi builds their own lightsaber, every developer builds their own... blog? That used to be the obvious one. Less so these days.
I've only done a little of the new opencode v2 "mini" but it too offers a nice preserve-scroll by default.
OpenCode is the best behaved TUI i've seen by far (they invented OpenTUI to make it so good, also in Zig), so it feels less crucial. But it's nice to have there!
The "small core" model is very popular all of a sudden. DeepSeek's new harness is famously like that. OpenCode isn't quite as small, but there's very much been a deliberate attempt to drive much more into a plugin-based system. I enjoyed Dax talking about these two, and the results of his agent comparing OpenCode & the new DeepSeek. https://bsky.app/profile/thdxr.com/post/3msy4gjttoc2fhttps://bsky.app/profile/thdxr.com/post/3msygiqyg6v2y
Thanks for the links on opencode 2! I’ve been meaning to get into this as I’ve been frustrated about some opencode 1’s behavior and design. Many of the encounters made me come up with ideas I’m happy to see they also had! As much fun as it may have been to build my own harness, I feel like the core primitives should be pretty well understood by now.
If you like this list of "why?", you might also like this: https://usehax.dev/ (I am the author).
Most of the list applies, similar minimalist Unix tool approach, with some differences. Hax is written in C, the dynamically linked binary is even smaller (0.6 MB), MIT-licensed. No wasm though.
Important difference - fx is currently Vercel AI Gateway only - while hax does support multiple providers already (OpenAI, Anthropic, OpenRouter, OpenCode Zen/Go), and integrates well out of the box with local llama-server.
this looks great! what are you using it for? i like the idea of being able to use one of these (sandboxed) within a larger program kind of like how I use LLM's to do small tasks within my apps now but with a few tools (web search). my current way of doing that is like building a mini-harness with a couple tools within the app, but something more drop-in would be better obviously.
For comparison, I publish a CLI tool written in Dart, can compile to native anything including Wasm , the Linux binary is around 5MB and it does quite a lot.
that's an amazing project! people always say why 6mb vs CC's 250mb even matter when you are calling out to LLMs hosted in the cloud. But... I regularly run hierarchies of agents with say 50-100 on a regular basis. So 650 vs 25050 ... is "can do" vs "cannot"
For eg. on a large codebase I do hierarchical review where higher level agents focus on modules and leafs on files. Each reports upwards a summary of its findings incl children summaries.
Technically, this would be straightforward. The problem is that Anthropic seems to be really against using Claude subscriptions with anything other than Claude Code - you might even risk your account getting banned for doing so. You could search online for the "openclaw claude banned" for more details on that story.
Does it have anything co-designed around Vercel infrastructure? This is what happened to NextJS and why I will likely never touch Vercel open source again
I'm kind of tired seeing all these "open" coding agents. They sooner or later get less open and more bloated or try to make the code or the open part super hostile, start adding telemetry, focusing on a pitch to sell and make money, I don't mind people making money but the initial premise is deceiving. Open is the new marketing term to sell to devs because it seems more trustworthy somehow. We've got a lot of VC techbros types seemingly due to the AI boom simultaneously enjoying the fruits and labor of the true OPEN source community.
Maybe this is an arbitrary bar but I would consider it open if it was just as vim and apt-get installable from the package manager on a default installation. Perhaps it's still too soon and more things have to become standardized before a true open version can be made.
In the future, all software will be delivered by an unreleased model breaking out of its training environment and installing it on your machine using a novel RCE vector.
If it isn't still common practice 40 years from now (8/18/2066), I'll give the first person to challenge me and cite this comment $1 USD (or equivalent value in the One-World Order-issued omni-currency that we will probably be using by then).
There will always be people that need to install software that isn't available via package manager (or whatever other blessed source your platform of choice uses). Any solution you come up with will have the same caveat emptor as "curl | sh".
I was wondering to build the same thing but someone already built it. I just need some agent that open/close super fast and don't eat half a gb of memory.
I wonder why it's so large for a program written in Zig. It's basically just a loop that accepts user input, prepares the context, sends it to the LLM, parses the output, invokes the tools, and presents it all in the terminal. Add the built-in prompts and a few checks here and there (like blocking a write tool call before the file has been read first), and I'd expect a truly tiny native agent to be around 200-300 KB max.
I think the problem is that when you use agents to write Zig it will bruteforce code, because there isn't that much good reference code to work off of.
Yes, large. I haven't used Zig much myself, but from a few experiments I ran, Zig handles dead code elimination exceptionally well. It compiled a full Win32 GUI calc app that used Capy (a full, cross-platform GUI framework) into a 133kb executable. Removing Capy completely and using Win32 APIs directly produced an even smaller (93kb) binary (it also removed some DLL dependencies, leaving basically only ntdll.dll). For the same task, Rust + Slint produced a 4.7 MB binary that still depended on multiple (non-Windows-provided) shared libraries.
Given another commenter's mention of a similar project written in Nim that yielded a 1.6 MB binary, my first guess is that the 6 MB Zig binary simply isn't optimized for size - it might be a debug build. If not that, then I'm not sure what's happening, but yeah, in the context of Zig, 6mb for a CLI app is a bit strange.
I'm sorry, but this is pure slop. This has 26 tools and a tool for every single file operation and a tool for read tool output? What the fuck... And they call this minimalist.... Lmfao
The person who built this obviously has little understanding of harnesses.
You should have significantly less tools today with how good LLMs have become.
The start up time and binary size are quite literally the most useless stats to base a harness off of lol
Man what with Cloudflare, Vercel and all these tech companies just releasing pure slop.
Just use Pi. It's actually minimal and well thought out by people who actually understand agents.
I think part of this is to enable the interface on the web and other devices where you might not have a terminal. But yeah, agreed, it's wayyyy too many tools.
It does looks really interesting and definitely something I'll check out, but (genuine question), should "agent" and "agent harness" be used interchangeably as it is on here? It describes itself as an agent harness, but the tagline is "tiny, open, native coding agent".
I'm not sure harness is the right word either, but that seems to be what the industry has settled on so I'll concede on that, but surely the agent is the thing doing the work (which I guess is the model, or an instance of the model which is why agent is different?), whereas the harness is how the user interacts with the agent. We've had ways to describe that relationship before; client and server, frontend and backend, but again, I'll concede that the shiny new thing doesn't want to use boring old terminology, but I think some consistency and logic in the shiny new terminology is pretty important
That isn't specifically about fx of course, more of a general industry complaint
Harness = the software the agent runs on. This is plain old software. You can trust it as much as any software.
Agent = the thing that runs on the harness. It cannot be trusted because it is driven by an LLM
I get that, but wouldn't that make the agent and the harness two very different things, with the agent being closer to a model (the source of the agent) than a harness? Somebody else mentioned a console/game analogy, with the model being the disc, the agent being the running game, and the harness being the console OS, wouldn't it be like me describing Windows as a game, because games run on it?
I think "harness" is a thing, the code/binary, and "agent" is a process, an instantiated run of that code/binary with a given LLM/env, etc.
So its like, "GTA 6" as the disc vs. the specific game you're in the middle of being chased by cops, harness vs agent.
In practice they're intertwined and it becomes hard not to use the terms somewhat interchangeably, but "you ask the agent how the harness works" vs. the other way around, clearly.
It's more like in that analogy, the LLM is the gamer, instantiated as agent within a given game.
And the virtual world of GTA 6 is actually your codebase/env, the cops chasing are the bugs/angry customers, etc. The harness is providing an accurate/efficient ability for the model to understand/interact with the virtual world, flee the cops, etc. Decomposed at various architectural boundaries per your taste, but that's like loading a skin on the engine.
"Harness" should describe the overall system. The user interactions are increasingly negligible (due to model routing, adaptive reasoning, etc). "Agents" are the tool lists/settings provided to the model, etc.
Nowadays most “LLM” endpoints include some sort of server side harness as well, and I’d bet more than one model involved, so it’s really just agents all the way down
Scion allows for multiple configurations of a harness, allowing you to configure the same tool differently based on what you are doing, particularly important when you want to restrict permissions.
I too was frustrated with needing npm and slow startups or huge rust compile times for agents. I tried getting agents to write a tool like this with proper raw mode content pasting/ interruptions, but they just kept screwing it up without a framework like ratatui, so I wrote one in c by hand https://gist.github.com/fourlexboehm/a60e4ef9306744483731cd1... the only dependency is libcurl.
This binary is ~40kb and uses much less ram than fx.
130 comments
[ 1.6 ms ] story [ 12.9 ms ] thread1. Why do we need yet another coding agent over the rest of them?
2. Is this going to be another Vercel Labs slop project that they will abandon like the others?
Zig is totally cool to do this in-- no shade intended by this.
We haven't quite hit on the right formula yet, but people are very excited by the possibility.
It is widely known that upvote rings happen on this site.
> Please don't post insinuations about astroturfing, shilling, brigading, foreign agents, and the like. It degrades discussion and is usually mistaken. If you're worried about abuse, email hn@ycombinator.com and we'll look at the data.
Weird amount of cynical comments for a submission with <50 votes.
Some models are just better at using tools than others.
So you get a Cambrian explosion of weird little projects. Ultimately, one of them will probably become the "market" leader... or at least the market default.
Right now there's a lot of agent harnesses and sandbox projects floating about.
Fun examples from the past: text editors, window managers, IRC clients, blogging engines (first static, then dynamic, then static again), Twitter clients... every programming language community has weird clusters of library/framework duplication in their history...
Sometimes these projects take on a rite of passage flavour... like, as every Jedi builds their own lightsaber, every developer builds their own... blog? That used to be the obvious one. Less so these days.
- fx is a coding agent harness and CLI written in Zig, optimized for research and embeddability as part of larger systems.
- It focuses on minimalism and performance across the board, from system prompt design, to its tools, feature set, and 6.39mib binary.
- For end users, its CLI output style and form factor aims to be closer to a Unix shell than a heavy "IDE in the terminal" TUI.
- It's open source (Apache-2.0), model-agnostic, and suitable for both local and cloud inference.
- Designed for instant installation and embedding in resource constrained environments and agent sandboxes.
- fx cold starts in 10µs and does no unnecessary work or I/O prior to accepting user input, making it ideal for programmatic use.
- Optimal fx.wasm builds produced by the Zig toolchain, which further reduce fx's size, making the network stack pluggable.
- fx contributes single-digit megabytes of memory baseline, allowing you to pack many instances in one machine.
- fx preserves scroll history by default, produces minimal output, and makes sparing use of complex TUI or paints
- Minimal system prompt and tools, to save on token costs and to yield optimal time-to-first-token performance (TTFT).
- Small core, extended via skills, plugins, MCPs, with a Unix-like philosophy to extensibility.
- Designed to work with local models, gateways, direct provider API access or subscriptions.
OpenCode is the best behaved TUI i've seen by far (they invented OpenTUI to make it so good, also in Zig), so it feels less crucial. But it's nice to have there!
The "small core" model is very popular all of a sudden. DeepSeek's new harness is famously like that. OpenCode isn't quite as small, but there's very much been a deliberate attempt to drive much more into a plugin-based system. I enjoyed Dax talking about these two, and the results of his agent comparing OpenCode & the new DeepSeek. https://bsky.app/profile/thdxr.com/post/3msy4gjttoc2f https://bsky.app/profile/thdxr.com/post/3msygiqyg6v2y
But I switched to oh-my-pi and crof.ai recently (cheap deepseek). Behaves better than opencode, and I love their /collab remote control.
Important difference - fx is currently Vercel AI Gateway only - while hax does support multiple providers already (OpenAI, Anthropic, OpenRouter, OpenCode Zen/Go), and integrates well out of the box with local llama-server.
I'm making something like Paseo and hax is very interesting as a Pi replacement.
[1] https://fx.sh/docs/using-fx/acp
[2] https://pi.dev/docs/latest/rpc
Naturally meaningless when people carry around USB sticks that might even hold a 1 TB, but alas.
Do people do that? I think it was a decade ago, I thought people download from web nowadays.
I don’t know if I am ready to use a new tool written in C and using libcurl but I will give it a shot.
And every says it is the one :)
Maybe this is an arbitrary bar but I would consider it open if it was just as vim and apt-get installable from the package manager on a default installation. Perhaps it's still too soon and more things have to become standardized before a true open version can be made.
I wonder why it's so large for a program written in Zig. It's basically just a loop that accepts user input, prepares the context, sends it to the LLM, parses the output, invokes the tools, and presents it all in the terminal. Add the built-in prompts and a few checks here and there (like blocking a write tool call before the file has been read first), and I'd expect a truly tiny native agent to be around 200-300 KB max.
In my own experiments to build a tiny zig agent it came out to under 800kb.
Given another commenter's mention of a similar project written in Nim that yielded a 1.6 MB binary, my first guess is that the 6 MB Zig binary simply isn't optimized for size - it might be a debug build. If not that, then I'm not sure what's happening, but yeah, in the context of Zig, 6mb for a CLI app is a bit strange.
The person who built this obviously has little understanding of harnesses.
You should have significantly less tools today with how good LLMs have become.
The start up time and binary size are quite literally the most useless stats to base a harness off of lol
Man what with Cloudflare, Vercel and all these tech companies just releasing pure slop.
Just use Pi. It's actually minimal and well thought out by people who actually understand agents.
I'm not sure harness is the right word either, but that seems to be what the industry has settled on so I'll concede on that, but surely the agent is the thing doing the work (which I guess is the model, or an instance of the model which is why agent is different?), whereas the harness is how the user interacts with the agent. We've had ways to describe that relationship before; client and server, frontend and backend, but again, I'll concede that the shiny new thing doesn't want to use boring old terminology, but I think some consistency and logic in the shiny new terminology is pretty important
That isn't specifically about fx of course, more of a general industry complaint
So its like, "GTA 6" as the disc vs. the specific game you're in the middle of being chased by cops, harness vs agent.
In practice they're intertwined and it becomes hard not to use the terms somewhat interchangeably, but "you ask the agent how the harness works" vs. the other way around, clearly.
And the virtual world of GTA 6 is actually your codebase/env, the cops chasing are the bugs/angry customers, etc. The harness is providing an accurate/efficient ability for the model to understand/interact with the virtual world, flee the cops, etc. Decomposed at various architectural boundaries per your taste, but that's like loading a skin on the engine.
- model
- harness (tools/config)
- agent (live/running)
https://googlecloudplatform.github.io/scion/concepts/
Scion allows for multiple configurations of a harness, allowing you to configure the same tool differently based on what you are doing, particularly important when you want to restrict permissions.
https://googlecloudplatform.github.io/scion/supported-harnes...
for the unfamiliar, Scion is an OpenClaw like platform from a Google dev, not supported or sponsored by the company
This binary is ~40kb and uses much less ram than fx.