Top
Best
New

Posted by bjin 4 hours ago

DeepSeek Harness developer preview(deepseek.com)
https://github.com/deepseek-ai/deepseek-harness

https://deepseek-harness.github.io/deepseek-harness/en/guide...

418 points | 197 comments
SwellJoe 1 hour ago|
"Every run is traceable

Everything the model sees is recorded in an append-only session log: system prompts, reasoning, tool calls and results, subagent scheduling, and every context injection. In the Trajectory view, you can inspect these records by source. Resume, fork, search, and replay all operate on the same event stream."

That's a killer feature, IMHO, and one that US models won't allow you to do, as their traces are encrypted, obfuscated, etc. and have to be extracted via various workarounds (that violate the terms of service).

If you want to be able to improve your tools that work with models, you have to be able to assess what the models think is happening, how they think about and interact with the data you give them. And, the US models won't let you see that.

mickeyp 25 minutes ago||
That is precisely how the dreamcoder [0] ai agent I built also works.

It has an event sourced architecture in SQLite and it resolves queries using recursive CTEs (and sneaky projections to speed things up) to deliver exactly that. Identical, stable message chains to AI and complete introspection.

Bonus points include a constraint-satisfaction solver for the tiling window manager so windows never shrink too small to read. And many other keyboard-friendly features.

[0] https://www.dreamcoder.ai/ [1] https://www.dreamcoder.ai/assets/graph.webp

alansaber 58 minutes ago|||
Agreed that it is a killer feature. US models obfuscate the COT (to A. make it look better and B. combat distillation) but > and the raw trace is fairly hard to reason about > but I still think this kind of feature is a big step in the right direction.
crthpl 32 minutes ago|||
For the US models, you can look at the rewritten CoTs or just ask them what they think is happening.
SwellJoe 26 minutes ago||
Asking them what they think is happening is actually not reliable, though? They don't always know how they came to a conclusion after the fact. It is probable that it's roughly similar to the path they took to get there, since it's the same weights, but it's not certain. And, if you make it standard practice to always collect that data (e.g. if you have an automated tool to ask the model to explain itself after every action to log it), it seems like you might find yourself being blocked for violating terms of service. It looks like "distilling".

In short, there are workarounds, but they're not guaranteed to work forever and they're likely to bump into terms of service.

miroljub 13 minutes ago||
How is that different from what Pi already does?
lxdlam 3 hours ago||
I have read the underlying paper, and found it may be useful, but not that useful.

For those who want to know what it achieves: it adds hot-reload and dynamic enable/dispose capabilities to a plugin system, like the one in Pi agents, though they push the boundaries further, to the UI components and so on.

For those who want to know what it does: if you have some PLT knowledge, ask your agent to explain the algebra to you better; for those who aren't familiar, the framework requires each plugin to provide how it initializes and how it destructs (like C++'s RAII, Rust's Drop trait and so on), and the runtime will then properly handle the lifecycle events and the common pitfalls. In addition, it provides a clean way to declare the dependencies between plugins, and the runtime will also properly process the lifecycle changes on a broader plane.

I think it's worth reading if you are not familiar with OSGi, iPOJO, React's useEffect and so on (which the paper itself mentions); for others, a skim is enough: it does point out the gotchas for some common problems, but the algebra may not help you further.

badlogic 15 minutes ago||
just read the paper, and there aee definitely some interesting ideas in it.

a plugin's registrations returning individual cleanup handlers is nice. in pi, you clean up all registrations in one go in the session-shutdown handler.

i also like the use of generator to to clean up partial registrations nicely.

the cross-plugin dependency injection and resolution i'm not so sure about. it comes with a lot of footguns and limitations as pointed out in the paper.

works ok within a single compilation unit, i.e. a plugin with many modules. does not help with typing of cross-plugin dependencies.

most plugins do not have dependencies on each other, so this more complex system doesn't win you much, e.g. with load order and conflicting registrations (i.e. two plugins registering the same tool).

being able to reload a single plugin on change while letting the others not in its dependents list jug along is neat. but that also only works if plugins actually declare dependencies (see last paragraph), and also has a lot of limitations. and the simple case, a plugin with no dependencies or dependents, which i'd say is the 90% case, does 't need that complexity either.

definitely cool stuff tho! remains to be seen how well it works in a real plugin ecosystem.

> they push the boundaries further, to the UI components

can you elaborate on this? pi extensions support contributions to the UI. in pi v1, they are limited to in-process UI. v2 splits server and client, and with that UI.

lalitmaganti 2 hours ago|||
This is basically similar to what bb (https://getbb.app/) is also doing. It's interesting to see many different people exploring things in this space...
brabel 1 hour ago|||
> OSGi

Yep sounds just like the Eclipse IDE plugin system indeed. Nice example of things being rediscovered every generation I suppose.

grommz 2 hours ago|||
The paper mentions agent harness self improvement as one of the use cases. I don't know what's the advantage vs. iterating over a monolithic harness.
moonu 2 hours ago|||
This has been a pretty big topic of discussion recently with Prime Intellect's new harness making leaps on ARC 3's public dataset. This is probably a bit overstated considering that a big focus of the benchmark is to test the model without custom harnesses, but you can imagine how for some tasks, especially long running ones, this kind of on-the-fly context management + tool generation could be quite useful. It gets better over time, it can build shorthand and tools for token efficiency, like a loose approximation of continual learning.
scotty79 2 hours ago|||
It's modular by default so you can experiment freely, in-session. If you don't like some plugin you built, just disable it and move on. No need for tracking changes, reverting and so on if you keep your plugins focused.
scotty79 2 hours ago|||
> it adds hot-reload and dynamic enable/dispose capabilities to a plugin system, like the one in Pi agents, though they push the boundaries further, to the UI components and so on.

That actually sounds amazing.

esafak 3 hours ago|||
For all the high-powered theory it looked just like every other harness! I was expecting more.

If anybody has tried it, does it let you preview components in any frontend framework with perfect fidelity? That would be a big win.

slopinthebag 3 hours ago||
Uh, it’s big idea is a destructor? This is considered significant in 2026 and the era of vibe coding?
Game_Ender 3 hours ago||
Don’t sell it short, it’s big idea is also to support dependency injection style explicit linkage between dynamically added components.
tianyicui 2 hours ago||
Hi I'm one of the authors of DeepSeek Harness. It's just an early developer preview version we're presenting in MIT license currently. Expect lots of rough edges and compatibility-breaking changes. Any feedback and suggestions are more than welcome!
big_toast 56 minutes ago||
Sorry for the off topic question. You've been on hn a long time + work at deepseek which seems pretty uncommon. Anything you think hn doesn't know about deepseek that it should? Or any non-obvious ways hn/yc has influenced deepseek (or the broader ecosystem)?
vitorgrs 1 hour ago|||
I just started testing, but didn't figured out if it already support MCP/plugins? It seems it can already use Deepseek search if it uses official API, but what about custom providers? Can we use together with MCPs like tavily?
flakiness 1 hour ago|||
Tell me more about the ideas behind Cordis the plugin system. The paper is a bit too mathy to consume and I think it deserves a more accessible post or something.
culi 1 hour ago|||
You're making demands (like you would to an llm) instead of asking questions (like you would to a human). The GP didn't even offer to answer questions
derekdahmer 1 hour ago||
He explicitly asked for feedback
ziofill 57 minutes ago||
Exactly. “Tell me more about X” is an open ended question, not feedback.
KyleJune 28 minutes ago||
You're absolutely right — "tell me more about X" is phrased as an imperative, not a question. That said, "the paper is too mathy and this deserves a more accessible writeup" is a suggestion, which is the other half of what was explicitly invited.
bobleer 1 hour ago|||
[flagged]
vatsachak 2 hours ago|||
Do you use deepseek models to improve deepseek training and inference?
chriddyp 1 hour ago||
congrats! the paper that is published alongside this (Cordis) is super interesting. has anyone on the team given a talk or published a talk about this? would love to hear the authors break this down
invaliduser 3 hours ago||
«It uses an architecture where everything is a plugin» Ok, that's enough for me. I have developped over the year a plugin fatigue.

Every product relying on "community plugins" for their features implies it works fine the 6 first months, then it's a nightmare of incompatible, deprecated, incompatible plugins, with no consistency and no governance.

I understand how attractive it can be to companies to think, hey, let's make a very small product and rely on other people to make features, and I hope it works, but I'm personally staying away from that.

prettyblocks 2 hours ago||
This works pretty well for these coding harnesses though (see Pi). I like the model where the harness ships with minimal tools and you can spin up plugins for extra functionality. You can usually have the model/harness you're using just create the plugin that you need for you. The advantage of this is that these harnesses aren't optimized for their frontier models like claude/codex are so you can fine tune your environment and burn less tokens... having said all that, I haven't tried this one yet.
curreylabs 3 hours ago|||
Plugins are the right solution for software that needs to strictly isolate a stable core domain from an unpredictable long-tail of niche integrations.
NBJack 2 hours ago||
That can work great when the core plugin interface offered is actually stable.
pverheggen 1 hour ago|||
These types of projects can have a happy ending, but only if the product is popular enough and the plugins are essential to the core functionality. Plugins usually die off because the sole maintainer loses interest, but popularity and necessary can bring new maintainers to carry the torch.
orbital-decay 3 hours ago|||
Everything about harness design is still experimental and janky. Throw everything in a pit and let the fittest survive. Large opinionated software is unlikely to survive and more likely to give you a migration fatigue
bdcravens 2 hours ago|||
Most vendors that create a plugin-based system end up creating a large library of plugins to kickstart the ecosystem, which many users end up trusting those more because they're "official", so they essentially created an mono-vendor ecosystem with extra steps.
scotty79 2 hours ago|||
If everything is a plugin it means plugins can do everything.

AI can write custom plugins for you. So this means the tool is infinitely flexible for you, even without any community.

Compare this to Zed where I can't make a hexviewer for binary files or player for audio files for myself without recompiling Zed's source code.

__alexs 1 hour ago|||
For me the problem is not that it has a plugin based architecture. It's that it ONLY has that. If there are no batteries included what's the point?
wltr 3 hours ago||
Sounds like a Linux architecture, innit?
bdcravens 2 hours ago|||
Many of the libraries and executables in Linux are cross-compilable with other ecosystems. It's the difference between opening the door to an existing ecosystem and birthing one.
c-hendricks 2 hours ago|||
yep, it's a handy architecture. Tho I don't know many people who prefer to run without coreutils.
ef2k 1 hour ago||
What's buried under the lede: this harness is using Cordis v4 (the paper that dropped today). Cordis has already been used for four years in a different project called Koishi that uses v3. Cordis itself is a way of hot loading and unloading plugins without restarting a running process. The cool part is that when it unloads it can revert any state and side effects it created, cleaning up its connections, memory allocations, registered handlers, etc. and it can also deactivate any dependencies it relied on without disturbing other plugins.
ziofill 1 hour ago||
Sounds very cool! What do you mean by “revert side effects it created”?
ef2k 43 minutes ago||
Anythign that needs to be cleaned up or undone goes in ctx.effect. It returns the "inverse" (the cleanup function) when the plugin loads. Cordis then stores it and runs it when the plugin unloads. Take a look at 5.1.1 in the paper.
rco8786 4 hours ago||
But like, what is it? Odd that this reached #1 on HN. The README is pretty bare outside of installation instructions and a link to "Cordis", which is "A Meta-Framework of Spatiotemporal Composability." and "under active development. The API is not yet stable and may change without notice.".
kamranjon 3 hours ago||
New coding harness that seems to have some novel concepts and one of the pretty cool things on their landing page for it here: https://deepseek.com/harness/en/ is the Every Run is Traceable view:

"Everything the model sees is recorded in an append-only session log: system prompts, reasoning, tool calls and results, subagent scheduling, and every context injection. In the Trajectory view, you can inspect these records by source. Resume, fork, search, and replay all operate on the same event stream."

Seems pretty helpful - have sort of wanted something similar (I use Pi).

They also released this research paper that backs their whole plugin composability system that seems pretty cool: https://github.com/cordiverse/paper

mickeyp 23 minutes ago|||
I'm glad they're doing this also and that more people are adopting it. Event sourcing [0] is the right way to represent informaiton like tool calls, user interactions, etc. --- it makes it easy to fork conversations and maintain a cohesive conversation stream and stable message history that does not break the cache.

[0] https://www.dreamcoder.ai -> scroll down to the event graph.

rco8786 3 hours ago||||
I promise this isn't meant to be snarky, but is that not just...logs?
nottorp 2 hours ago|||
It's only logging if an obsolete human does it.

But the future is here and thus it's called "Agentic causality's reified temporal traceability."

cvs268 49 minutes ago||
"Temporally Reified Agentic Causality Traceability Report" - TRACTR.
alienbaby 27 minutes ago||||
It's logs of activity the US models hide from you in fear of them being used by competitors.
SwellJoe 1 hour ago||||
Which are unavailable with the leading American models. You can't look at the complete traces of OpenAI or Anthropic model agents, as they are encrypted (there's been discussion of a couple of different ways to expose those, but that violates terms of service, and well, you shouldn't have to find complicated ways unencrypt your own usage logs).
scotty79 2 hours ago||||
Logs that aren't missing anything out of the box. I'd say it's pretty underused concept in time of 8TB consumer SSD drives.
NewJazz 2 hours ago||
Don't those cost 1-2k?
kamranjon 2 hours ago|||
It's useful logs which i think is an important distinction.
marstall 3 hours ago||||
is it just for coding? the docs don't mention code, just "agents"
knowaveragejoe 3 hours ago|||
Seems like Agentsview, but built in and likely less features(at least, as of now): https://github.com/kenn-io/agentsview
francislavoie 3 hours ago|||
A "harness" is basically what you call Claude Code and such, i.e. a TUI to run the agent.
alienbaby 24 minutes ago|||
A harness is any wrapper around llm calls that manipulates llm interactions to achieve the process for which it is designed. Claude code et al are just one type of harness, focusing on writing code. The kind of UI used to interact with the harness and underlying models does not matter.
a3w 3 hours ago||||
TUI?

Aren't VS Code, Claude Code, Hermes Agent, Goose or Letta harnesses, but with UI, too?

francislavoie 3 hours ago|||
Can be a TUI, can be a GUI.
edgyquant 3 hours ago|||
VSCode at least is a GUI
kaicianflone 3 hours ago||
Which it’s kind of strange VSCode ghcp lacks basic attributes like context % used compared to some TUIs where it’s default.
u8080 3 hours ago||
There is a round icon at the right bottom, where white arc is how much context used - hover for extra info.
tokai 3 hours ago|||
I thought the harness was mainly a TAI (tangible AGENT interface). Its a harness for the agent, not a user interface. That is bolted on top of the harness.
dormento 3 hours ago|||
> A Meta-Framework of Spatiotemporal Composability

Good to know I was not the only one confused. Reads like word salad!

bpodgursky 3 hours ago||
Hacker News will mindlessly upvote anything they see as a threat to US AI labs. It's not more complicated than it having "DeepSeek" in the name.
JSR_FDED 2 hours ago|||
You don’t think it’s because titanic battles are interesting and here’s a company that (a) gives you the weights to a frontier model for free, (b) publishes great papers with LLM architecture innovations, (c) is insanely cheap?
nba456_ 2 hours ago||
No, I don't.
vhantz 2 hours ago|||
Unbelievable take considering announcements about US labs routinely top this website
vhantz 2 hours ago||
There is such a clear lack of innovation drive in this field. Every lab just copies what the other does. One of the most baffling things to me is how the once-upon-a-time good developer instinct to make everything reusable, testable, and deterministic is just getting lost into a sea of markdown begging a language model to please act a certain way. For example this repository has a "skill" definition that consists in instructing the LLM to run pre-commit checks. But we have solved this a long time ago, it's called git hooks. I do not understand why they don't simply wire those instructions as testable, reusable, deterministic code routines in the git tool call itself. It's like everybody is taking their brains out and putting it in a drawer.
smeeth 1 hour ago||
Every company gets a limited number of innovation tokens. Where they choose to spend them is up to them. Some companies spend them on the model harness, some, like DS, spend them on the model architecture etc.

https://mcfunley.com/choose-boring-technology

brabel 1 hour ago|||
This is exactly how almost every field evolves. We like to think we are so innovative. We aren’t. When someone finally does something slightly different that’s actually useful everyone comments how that was so obvious all along and they could easily have done that too . Hindsight and all. And for every new tech , people will always try to use it for everything, no matter how unsuitable, until the hype goes down and we have a clearer picture of where the tech should be used.
tovej 43 minutes ago||
Using git hooks vs an LLM to run pre-commit checks does not require hindsight.
__alexs 1 hour ago|||
Yes this whole focus on customisation and plugins etc is really just laziness and the absence of innovation. I don't want an infinitely programmable IDE. I already have that it's called my computer.

I want something that actually has an opinion and gives me productive value without having to spend days reconfiguring it first.

iambenm 1 hour ago|||
First, cloning a repo doesn't bring the hooks with it - so it's not just as simple as saying "use git hooks".

Second, if the repo had hooks and instructions for the LLM or user to blindly install/enable the hooks, we'd instead be complaining about security risks and what might happen if the repo is compromised at some point in the future.

Third, sometimes you don't want to mechanically enforce things via git hooks because it impacts your use when what you're really trying to codify and enforce are the LLM's actions. In that case you can enforce mechanically via hooks at the harness level.

And finally, git hooks are a great solution for upstream repositories to enforce quality and protect branches. But it means that the upstream is the one running the checks. It makes the upstream a potential bottleneck - better to have the leaf nodes run the checks locally and fix any issues before pushing it upstream rather than push upstream, wait for results, make changes, push upstream, wait for results, make changes.

vatsachak 1 hour ago|||
Yeah. LLMs have their place and they are definitely super human at short length tasks, but I feel like a large part of the "AI boom" is trying to get the computer to do something in a worse way then it already could.
_benj 1 hour ago||
But that "worse way" makes AI labs and investors a lot of money... If the perception that "worse" is accompanied with needing less human intervention, i.e. less labor, worse is better from a business perspective...
vatsachak 1 hour ago||
How does a git hook need more labor than an LLM?
canes123456 1 hour ago|||
I actually run into more issue with deterministic hooks. Ie one hook triggering before another and not letting the agent move forward. I agree that there is a place for deterministic hooks. But there also times when you need something closer to a recommendation that they agent can be reminded of but isn’t a hard block. Think of assigning something to a co worker. You can recommend a checklist of what to do before a commit but they will adjust if the situation requires it.
dawnerd 2 hours ago|||
Gotta burn the tokens somehow! There’s a lot of these solved problems that devs have forgotten exist all in the name of using an llm for sake of using it.
purav0788 1 hour ago|||
They built the whole thing in 2 months with 2 developers. They are not gonna think about every feature with any reasonable thought/effort behind it.
Oarch 1 hour ago|||
Product-wise... maybe. I'm also seeing a lot of genuine attempts to reinvent programming around some form of new agentic paradigms.

But at the core science/tech of AI it's probably the most amount of innovation I've ever witnessed in a field. The pace of new developments is staggering.

UpsideDownRide 1 hour ago||
Is it staggering? Given the amount of money being poured in it doesn't seem all that impressive at all. And the constant overhyping is not helping either.
fridder 1 hour ago|||
The part that really annoys me is the stark difference in cost between harness usage and api usage. I'd like to build my own harness and maybe I just will and focus on local model serving
dominotw 1 hour ago|||
I remember a popular hn thread few yrs ago where a dev replaced their whole deployment pipeline with a prompt.

it was widely ridculed at that point but now i am not so sure.

manphone 1 hour ago||
Well, that makes one of us. Replacing deterministic processes that work with lossy processes makes no sense. You’re literally reinventing the wheel every single time, what are you talking about?
bonoboTP 1 hour ago|||
It's because things change, things break, they are misconfigured etc. Yes, if you have perfect deterministic tools in an unchanging and perfect environment, sure. But the deterministic tools need constant maintenance, fixing, reconfiguring, adapting to external changes, dealing with unexpected failure types etc. Not saying you should use LLMs for everything, but LLMs equipped with tool calling can often fix things. And they can also fold it back to a robustified script. That's the strongest use case. LLM checking errors, fixing the scripts, and the routine runs are via those scripts. It just checks that everything ran to completion or what kind of hiccup happened. I know this sounds terrifying from a job security perspective, but it's going to be a wild ride for all of humanity.
dominotw 1 hour ago|||
> what are you talking about?

oh i mean 'now i am not sure if it would be ridiculed'

go_elmo 1 hour ago||
"just trust the llm bro, it will figure it out" - no brains used here, its staggering...
syntaxing 4 hours ago||
Is there a reason why so many of these agent harness are written in node.js?
Wowfunhappy 3 hours ago||
Because:

1. The first significant agentic harness was made by Anthropic.

2. One of the most senior developers of client-side software at Anthropic is Felix Rieseberg, one of the original creators of Electron. [1]

3. After Claude Code blew up, everyone else copied Anthropic.

---

1: https://daringfireball.net/2026/07/claudes_criminally_bad_ma...

m_ke 4 hours ago|||
1. it's built for async 2. runs everywhere 3. interpreted, making it fast to iterate on 4. decent performance 5. most popular language, llms are decent at writing it
kzsh 4 hours ago|||
An additional benefit of interpreted, I think, is to make plugins easier to distribute and incorporate. With a compiled language you’d need message passing or something.
nurumaik 3 hours ago||
dynamic linking was invented pretty long time ago
platinumrad 3 hours ago||
You know that dlopen does not compare.
gf000 3 hours ago||||
JVM has real and virtual threads and arguably just as good if not better on all these points.

(I actually have/am writing a harness in Java fwiw, but mostly as a hobby/experimentation)

cmrdporcupine 3 hours ago|||
JVM apparently has the disadvantage that nobody under the age of 40 wants to touch it anymore. I admit I haven't worked in it in 20 years, but I do think it's a marvel of engineering and unfairly maligned. It used to be my career but I wanted to be closer to the metal.

Having Oracle's tramp-stamp on it may have been the final kiss of death in terms of totally-superficial "coolness" factor.

rescbr 3 hours ago|||
The JVM has a fixed size heap which for me it is wasteful.

IMHO, Microsoft made the correct approach on .NET.

For LLMs, I prefer C# and C++ instead of TypeScript, JavaScript or Python as the static + compiled language factor keeps the coding agents on track. Plus, they have a true threading/async implementation.

cmrdporcupine 2 hours ago||
It's only appearing wasteful if you're not understanding how memory management works on modern operating systems. It's not wasting any RAM at all if you pay attention to RSS vs VSS.

The actual physical RAM is still entirely available to other applications. It's just made the OS know it might want that many pages. Until there's data in the pages, they will not count towards total RSS.

It's the kind of things some sysadmins used to gripe to me about and I would question whether they should be in charge of a machine at all.

To repeat: just because an application mmaps a large region doesn't mean the OS has actually given it all that physical RAM. It's merely made sure the pagetable knows about it.

jackbravo 2 hours ago|||
and you could say the same if not better from C#. But those are now becoming niche languages and ecosystems. One for people around microsoft, azure, etc. The other around oracle solutions. There are still pretty interesting projects around it any of them, but they seem to be losing mindshare against other languages.
cmrdporcupine 1 hour ago||
nah, C# is huge in game development and things adjacent to it. Lots of young people know it and love it for that reason.
SwellJoe 1 hour ago||||
I hate nodejs and the npm ecosystem more than most, but Java, really?
knowaveragejoe 3 hours ago|||
But have you considered that java is gross and nodejs is sexy?
skeledrew 2 hours ago||||
That actually don't like you're describing Python. I've been working on a couple JS/TS projects and it's like the models I use (Claude Sonnet and DeepSeek v4 Flash) continually struggle to do coherent work; I have to always keep close watch to reduce sloppiness. I go to Python and it's smooth sailing with minimal prompting (and reduced token burn) for acceptable outcomes.
altmanaltman 4 hours ago||||
aren't 3 and 4 a tradeoff though? Yes you have 3 but "decent performance" cannot be an extaled value as compared to "runs everywhere". If its used as a counter balance to 3 then it shouldn't be its own unique point basically saying 4 is true despite 3 in this case.
m_ke 3 hours ago||
when you're waiting for network or LLM inference the raw performance doesn't matter at all
eglintondust 3 hours ago|||
This line of thinking I feel like assumes it's the only program running on your computer. Using less of my CPU and memory means my computer can do more things in parallel, or even run more instances of the harness. My laptop is sweating when I got 5+ claude code sessions running.
jaapz 3 hours ago||
Is it actually claude using those CPU cycles though, or the agent running test suites and what not?

Honestly I would not be surprised when it actually IS claude using those resources... It is very clearly vibed

eglintondust 2 hours ago||
I haven't monitored CPU usage so closely, but seems to get heavy with basic tool calls and editing. Memory usage definitely is out of hand, have an idle session right now eating 500MB
kingstnap 3 hours ago||||
You would think raw performance wouldn't be a problem given most of whats happening is waiting for network calls and streaming tokens.

But modern bloat manages perfectly well to make apps that wait for network calls run poorly enough to give you a bad experience.

Jtarii 3 hours ago||||
This is so very, very incorrect.
altmanaltman 3 hours ago|||
yeah fair enough, my entire point is not about the application itself but the contradiction on using superlative terms for all points but a compromising/normal term for one. Like if performance is not revelant why include it in the list of benefits.
0xbadcafebee 2 hours ago|||
decent performance, lol! compared to what? a shell script? "i'll only take up 200MB of disk and 4GB of RAM to output flickering text on a terminal. boy this is high performance"

fast iteration is for POCs. once you have the app built and working, you need performance and stability much more than fast iteration

pohl 4 hours ago|||
Probably for the ease of coding extensions — which strikes me as outdated thinking: if it’s open source and you’re outsourcing the coding to LLMs, why not use a compiled, safe language?

There’s an interesting counter example for DeepSeek called CodeWhale, though:

https://github.com/Hmbown/CodeWhale

Wowfunhappy 3 hours ago||
Also isn't OpenAI's Codex written in Rust?
pohl 2 hours ago|||
I don’t think so. The ChatGPT app was, which is the “Classic” app now. The Codex app that they’re carrying forward is an Electron app and if you forget to quit it before you walk away it’ll make even your M5 Max unresponsive eventually. Sad days.
Wowfunhappy 2 hours ago||
Sorry, I meant the Codex CLI harness. I don't understand why OpenAI decided to start using the "Codex" name for everything.
hocuspocus 3 hours ago||||
Codex, Kiro, Grok Build. Pi has a clone in Rust too.
edgyquant 3 hours ago|||
I don’t think so it’s an npm package iirc
SwellJoe 1 hour ago|||
Reasonix (which has been seemingly the most recommended harness for using DeepSeek, as it is designed around maximizing caching in DeepSeek) is now a Go app, but still installed via npm. Which feels ugly, but I guess everyone has npm already, and it handles binaries, so I guess it's a reasonable choice.
ceehex 3 hours ago|||
you can install binaries with npm too, not just limited to js
Zambyte 4 hours ago|||
I'm not sure why specifically Javascript instead of something like Python or other options, but using an interpreted environment minimizes the friction for implementing extension systems, which are an important feature in AI harnesses.
hedora 3 hours ago|||
Python basically requires containers unless you are OK with it bit-rotting every six months or so. At least, this used to be the case for trivial python, and recently was the case for stuff that uses cuda.

I stopped paying attention the third time they redefined matrix arithmetic semantics. That happened to be around the 100th time I was sent a script and it only ran on the author’s machine. Maybe they will fix it some day. When they do, I will not believe it.

In contrast, TS has a much nicer type system and better async support. It runs well on web, mobile, desktop and server. Yes, sometimes you have to ship node.js or a whole web browser, but the tooling for that is slightly less insane than the analogous tooling for python.

Its language interoperability story is slightly nicer too (invoke native code, or use wasm). It’s UI story is much, much better since it reuses all the web stuff.

Pip practically invented the supply chain attack; npm perfected it. That’s probably a draw.

Of course, if you care about performance, then other choices make more sense. If you’re training a model then python probably still wins, but very few customers have a $1M+ machine.

ubercore 3 hours ago|||
`uv` helps but it's new, and I don't think it has the same mindshare yet on "I just globally want to install this thing that needs an interpreter/runtime", so Python probably just doesn't come first to mind.
svachalek 3 hours ago||
I'd put it on this. In my experience Python is fine for scripting your own machine but an obnoxious platform to distribute code on. It's very fragile to version changes, in both directions; I don't know how many things I've seen that only run on 3.10, not 3.9 or 3.11. Its packaging system is global by default which only compounds this because everything needs a specific version but they're all dumped in the same place. And it tends to have a lot of native code as dependencies, leading to all the issues of needing to either have the right build environment or a runtime environment that's already been built for.
tosh 2 hours ago|||
codex is written in rust fwiw

smol has implementations in Go, Python, Clojure, PHP

https://github.com/smol-env/smol

out of the box an agent only needs to be able to do http requests and call tools (which might again be just http requests or shelling out)

there is no inherent reason for why an agent has to be in JavaScript or Typescript

but they are popular languages and come with runtimes and libraries for http requests, steaming, TUI (terminal ui) and so on which can help

sroerick 1 hour ago||
I'm interested in this but why those four separate languages

Edit: okay I read the code, it's actually four separate implementations

tosh 1 hour ago||
Yes it's separate implementations of the same minimal idea

I'm currently working on more 'feature-full' but still minimal variants

e.g. a python variant with automatic compaction + truncation of sh output

https://x.com/__tosh/status/2087606344035479632

i also got quite a lot of requests to provide the code in non-golfed form to make the implementation more approachable and idiomatic in each language (will do!)

jesse_dot_id 3 hours ago|||
TypeScript is great and its ecosystem is easy to work within.
Shorel 2 hours ago|||
Because that hammer is their only tool!
nimsarajay 4 hours ago|||
I gotta same problem.
sarjann 4 hours ago|||
Might be easier to do cross platform.
game_the0ry 4 hours ago|||
npm as a distribution tool works well and typescript has types.

Any reason why it should not be written in nodejs?

LeBit 1 hour ago||
I always thought nodejs was a weird choice for CLI tools.

For web stuff, sure.

But for CLI, it never made sense to me. Especially when Python and Go exist.

game_the0ry 46 minutes ago||
> But for CLI, it never made sense to me. Especially when Python and Go exist.

But why? Not saying node is better, just want to know where you are coming from for my own knowledge.

Bc I would have picked typescript + node too. It has types (where python just has type hints) and a lot of developers know it already (where go is more niche).

LeBit 5 minutes ago||
I guess the reasons are that I feel (no data to back this up) that having a Python runtime available is much more probable than having a nodejs runtime around.

I was going to say you cannot easily distribute a nodejs based CLI app, but that’s of course not true. devcontainer-cli is a nodejs app and so are many of the coding agent harnesses.

Yeah, thanks for pushing back. I guess my view was irrational.

scotty79 2 hours ago|||
Nothing better for UI than React. Electron/tauri or node kinda falls from it.
2afTq 3 hours ago||
Skill issue. Their models don't work for serious programming so everyone just copies Electron apps from each other.
gagan2020 1 hour ago||
I was working on same idea but left in between and thank god they did it.

Why I left that idea is because as a developer I know that was needed but I have limited time so I need to build that is really next path forward.

I am working on whole dev space that can run on my Mac M4 or similar specs. I needed to revamp everything (LLM thinking) from ground up even models. My idea is mixing deterministic nature of existing tooling (non-LLM tooling) with non-deterministic nature of LLMs.

vinhnx 3 hours ago|
The Cordis plugin architecture is interesting

https://github.com/cordiverse/paper

OutOfHere 2 hours ago|
As I understood, Cordis is for architecting functionality as plugins that can be hot-loaded and hot-unloaded (without having to restart the parent app such as VSCode). Cordis looks to be a second-layer extension system within the parent system, e.g. VSCode. I understand that Cordis is not tied to VSCode.

Using memory to track inverses does not scale.

vinhnx 1 hour ago||
I think the paper is really worth reading for anyone working in software. As far as understand it is a software architecture paradigm where everything is a "plugin", and as plugin, I can plug-it-in and plug-it-out, if I understand it correctly. They called it "revertible effects", where software can strip out live code without a restart or system reboot. They give the example of VS Code, which requires system restarts whenever an extension or plugin needs to be updated. To help myself understand it, I created a quick video, using NotebookLM: https://www.youtube.com/shorts/LtR7DRlZJ0M.
More comments...