Rendered at 08:14:21 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
losvedir 12 hours ago [-]
Something about having a very fast, very small harness written in C only to drive LLMs amuses me. Like putting a big ass spoiler on a minivan or something.
tjoff 11 hours ago [-]
Well, you'd think so but given how slow and resource hungry the ones written in javascript are it makes a lot of sense.
abawany 13 hours ago [-]
I just installed it via homebrew on macos and used the anthropic-compatible custom provider option to configure it to use with deepseek-flash and then used this setup to build a quick rust project that I had been deferring for months - total cost: 1 us cent and under 10 minutes total for setup and etc. Thank you for making such a lean and clean option.
amoss 2 hours ago [-]
Tried it after seeing the comment about it yesterday and loving it so far. Very clean, easy and fast to build. Performance is great, and the minimal UI is a breath of fresh air.
Bleaphar 15 hours ago [-]
Would love to hear more about the decision to create the terminal in C? Also what did you use to record your demo video? It looks awesome!
OleksandrC 14 hours ago [-]
The main reason to use C is that it's the easiest way to achieve minimal resource footprint. Also it's the language I know really well already.
The demo was recorded with asciinema.
0xc133 14 hours ago [-]
asciinema is so good! Love seeing the player on the site.
I've been having a great time using haxe & reflaxe macros for code generation.
You can have some minimal haxe code and build tiny compilers that use it as a source of truth for generating a http client, http server stub, cli entrypoint, docs entry, integration test, openapi spec.... Agents are good at writing the macros for whatever language you want to compile to, and now you've enforced agreement between these things as part of a build, which makes for several fewer things that you ought to be diligent about.
Unlike using something like yaml as your source of truth, haxe has a type system. You can catch some problems upstream as build errors rather than waiting to catch them downstream in the generated code.
Highly recommended.
all2 12 hours ago [-]
This sounds amazing. I might give this a go!
myshapeprotocol 16 hours ago [-]
A minimalist, terminal-native coding agent written in C is such a clean approach to lightweight local tooling. Love the tech stack choice.
mark_l_watson 6 hours ago [-]
I didn't try Hax but I hope someone who has can answer a question: does it support suspending current operation if user hits ESC key?
EDIT: I just looked at interrupt.c in the github repo: handles user interrupts. I trashed my Common Lisp harness because I had problems handling interrupts in a portable way. I did better with Racket. I am traveling on vacation without a computer, will try Hax when I get home.
qrios 6 hours ago [-]
Works better than in Claude Code.
mring33621 17 hours ago [-]
I just built and installed this harness on my MacBook Pro and am very happy with its clean, fast performance with local models and llama.cpp.
Well done, Oleksandr!
jarjoura 15 hours ago [-]
This is cool! There were a few rust attempts I played around with last year, but they all seemed to fizzle out in favor of everything running on top of js or python.
I know that Google just launched a go version a couple months ago, but I haven't really spent any time with it, because well, gemini isn't really useful to me right now.
The thing I constantly ran into with using non-platform (ie. claude code or codex) agents is that even though their tool call API seems flexible, they've finetuned these "agentic" models around their specific agents. Opus is the worst I've seen about this. It really wants to use specific bash tools and if you restrict or hide it, it'll start writing python code to call into bash to do it.
OleksandrC 14 hours ago [-]
Generally, the models seem to adapt really well. I am using GPT models in hax a lot, and they have no trouble whatsoever using hax tools instead of their "native" codex tools.
Also since hax tools are just "read", "edit", "write", "bash" and "task_wait", it would be expected that the models would use one-off scripts to achieve their goals (either shell scripts, or python scripts, etc).
ChoosesBarbecue 14 hours ago [-]
I know the Pi [0] folks had some trouble with newer models [1].
I don't understand why anyone would still start a new software project in C today, given the long track record of mistakes developers can make in it.
lelanthran 14 hours ago [-]
> I don't understand why anyone would still start a new software project in C today, given the long track record of mistakes developers can make in it.
If you think that unintended consequences can result from using C, boy do I have some news for you for "programmers" from 2026.
jesse__ 11 hours ago [-]
I lol'd at this
qrios 9 hours ago [-]
From the README.md: If "fancy new AI tech in an old-school minimalist package" sounds like your vibe, you might like this.
What is the question about:
A: Why start a 'new' software project? (instead of old, none, multiple, ...)
B: Why in 'C'? (instead of Mojo, Java, D, ...)
C: Why 'today'? (instead of Yesterday, Tomorrow, never, ...)
For me the beauty of this project is:
Someone tried to figure out for themselves what an end-to-end process would look like for what they wanted to do. What happens to the input? How are files written? What is sent to the LLMs?
And they used the tool they know best. No `import openai`.
mfro 15 hours ago [-]
Because C is the best.
andai 13 hours ago [-]
What are your thoughts on JavaScript?
iberator 5 hours ago [-]
C is the most portable language on the planet.
Literally every single cpu/mcu architecture from the past 40 years supports it.
There are hundreds of such architectures and CPU/MCU types. (x86 is just SINGLE type from maaaaany).
torstenvl 16 hours ago [-]
If it's minimalist and written in C why does it have such specific system requirements?
all2 14 hours ago [-]
Probably because of the 'minimalist' qualifier.
hmokiguess 17 hours ago [-]
Nice work! Thank you for sharing it.
IamDaedalus 13 hours ago [-]
oh cool! how do I contribute? :)
OleksandrC 13 hours ago [-]
As usual, I suppose :) - by filing bug reports, and opening pull requests.
iJohnDoe 14 hours ago [-]
This looks really interesting! Excited to give it a try.
androiddrew 10 hours ago [-]
Omg C, so insecure! You should be ashamed of my insecurity!
The demo was recorded with asciinema.
You can have some minimal haxe code and build tiny compilers that use it as a source of truth for generating a http client, http server stub, cli entrypoint, docs entry, integration test, openapi spec.... Agents are good at writing the macros for whatever language you want to compile to, and now you've enforced agreement between these things as part of a build, which makes for several fewer things that you ought to be diligent about.
Unlike using something like yaml as your source of truth, haxe has a type system. You can catch some problems upstream as build errors rather than waiting to catch them downstream in the generated code.
Highly recommended.
EDIT: I just looked at interrupt.c in the github repo: handles user interrupts. I trashed my Common Lisp harness because I had problems handling interrupts in a portable way. I did better with Racket. I am traveling on vacation without a computer, will try Hax when I get home.
Well done, Oleksandr!
I know that Google just launched a go version a couple months ago, but I haven't really spent any time with it, because well, gemini isn't really useful to me right now.
The thing I constantly ran into with using non-platform (ie. claude code or codex) agents is that even though their tool call API seems flexible, they've finetuned these "agentic" models around their specific agents. Opus is the worst I've seen about this. It really wants to use specific bash tools and if you restrict or hide it, it'll start writing python code to call into bash to do it.
Also since hax tools are just "read", "edit", "write", "bash" and "task_wait", it would be expected that the models would use one-off scripts to achieve their goals (either shell scripts, or python scripts, etc).
[0]: https://pi.dev/
[1]: https://lucumr.pocoo.org/2026/7/4/better-models-worse-tools/
If you think that unintended consequences can result from using C, boy do I have some news for you for "programmers" from 2026.
What is the question about:
A: Why start a 'new' software project? (instead of old, none, multiple, ...) B: Why in 'C'? (instead of Mojo, Java, D, ...) C: Why 'today'? (instead of Yesterday, Tomorrow, never, ...)
For me the beauty of this project is:
Someone tried to figure out for themselves what an end-to-end process would look like for what they wanted to do. What happens to the input? How are files written? What is sent to the LLMs?
And they used the tool they know best. No `import openai`.
Literally every single cpu/mcu architecture from the past 40 years supports it.
There are hundreds of such architectures and CPU/MCU types. (x86 is just SINGLE type from maaaaany).