MurphyA/hacker-news huggingface dataset:
Show HN: Station – SSH-based runtime for operational AI agents with MCP support
by epuerta99 | 2025-08-12 21:34:22+00:00
Hey HN! We've been working on Station, an open-source runtime for what we call "operational agents" - simpler AI agents focused on ops tasks rather than full application embedding.

The key insight was that agent management shouldn't be confined to your IDE. We built Station with an SSH-first approach using wish + bubbletea for a rich terminal experience that feels natural for ops workflows.

What makes Station different:

- MCP-native: Station itself is an MCP server supporting both STDIO and SSE, working seamlessly with Claude Desktop and other MCP clients

- Tool restrictions: Assign specific tools to agents to prevent model degradation from tool overload

- GitOps-friendly: MCP configs as template bundles with proper secrets management

- Single binary: Deploy anywhere with SQLite + optional Litestream replication

- Export flexibility: Generate dotprompt files to manually tweak agent behavior

- API access for programmatic control alongside the SSH interface

We're in early beta and would love feedback from the community. The vision is to make operational agents as easy to deploy and manage as any other ops tool.

GitHub: https://github.com/cloudshipai/station

Happy to answer questions about our architecture choices, MCP implementation, or anything else!
by canucker2016 | 2025-08-12 21:35:25+00:00
The first article I read about the techniques used in the spell program was the 1985 May issue of Communications of the ACM (CACM for those who know), https://dl.acm.org/toc/cacm/1985/28/5, in Jon Bentley's Programming Pearls column.

Not as much detail as the blog.codingconfessions.com article mentioned above, maybe some of the other/later techniques were added later on?

Link to the online version of the 1985 May Programming Pearls column: https://dl.acm.org/doi/10.1145/3532.315102

The PDF version of that article: https://dl.acm.org/doi/pdf/10.1145/3532.315102
by bevr1337 | 2025-08-12 21:35:45+00:00
> Fully understandable by a single person

Riddle me this, Batman.

What's the scope of "fully understandable?" How much of this home PC could be reasonably audited by individuals or small teams?

I've got no exceptional opsec needs as an individual, but I spend some time wondering the minimum required resources to audit a PC. Looking through the docs I see cases where there are multiple suppliers for a recommended part -- that's very cool!

As a "fake programmer" and web jockey, this looks like the right balance of complexity to learn with.
by churchill | 2025-08-12 21:35:54+00:00
If the Chinese want to dilute the wealth of their people and use it to subsidize stuff for Western consumers, the smart thing to do would be to buy it!

Anti-trade activists always agitate about how they'll jerk up prices after capturing markets, but Uber hasn't managed to pull it off, despite >$50 billion burned. The moment a company's margins hike significantly, they attract competitors chasing those same dollars and they have to lower prices or lose market share.
by poly2it | 2025-08-12 21:36:15+00:00
Very cool project!

Just out of interest, I sent a query I've had difficulties getting good results for with major engines: "what are some good options for high-resolution ultrawide monitors?".

The response in this engine for this query at this point seems to have the same fallacy as I've seen in other engines. Meta-pages "specialising" in broad rankings are preferred above specialist data about the specific sought-after item. It seems that the desire for a ranking weighs the most.

If I were to manually try to answer this query, I would start by looking at hardware forums and geeky blogs, pick N candidates, then try to find the specifications and quirks for all products.

Of course, it is difficult to generically answer if a given website has performed this analysis. It can be favourable to rank sites citing specific data higher in these circumstances.

As a user, I would prefer to be presented with the initial sources used for assembling this analysis. Of course, this doesn't happen because engines don't perform this kind of bottom-to-top evaluation.
by SlowTao | 2025-08-12 21:36:35+00:00
I love how Haiku feels like it has its feet in two places at once. That it is both in the year 2000 and 2040 at the same time.

It does feel a lot more user ready than a lot of alternatives. Although I did find it funny that on their last release a big milestone is that it can now compile code a little faster than half the speed of Linux. So performance is still lacking but gaining. Considering their team size compared with Linux, that is a big achievement.
by krapp | 2025-08-12 21:36:46+00:00
The pretense is that the discourse on HN has always been held to a much higher standard than Reddit, primarily by comparing the worst of Reddit with the best of HN, which is specious. If you compare the average comment of HN to the average comment of any programming subreddit, the only real difference is that humor tends to be verboten on HN. But that comes at a cost of increased performative cynicism and rancor.
by exe34 | 2025-08-12 21:36:59+00:00
> I’m not usually so confident in my own infallibility

I'll concede that point, but let me put it differently: when I write the "obviously correct" version, what I mean is that I can explain what every line of code is supposed to be doing. I can say what the expected result would be, at each step and test it.

When the LLM writes an inscrutable version for me, I might be able to test the final result, but I'll never know if there are corner cases (or not even that) in between where it will go spectacularly wrong. If I have to untangle what it's written to get that kind of confidence, then it's going to take me much longer. Reading code, especially somebody else's, nevermind an alien's code, is just so much harder for me.
by habitue | 2025-08-12 21:37:14+00:00
> Symbols, by definition, only represent a thing.

This is missing the lesson of the Yoneda Lemma: symbols are uniquely identified by their relationships with other symbols. If those relationships are represented in text, then in principle they can be inferred and navigated by an LLM.

Some relationships are not represented well in text: tacit knowledge like how hard to twist a bottle cap to get it to come off, etc. We aren't capturing those relationships between all your individual muscles and your brain well in language, so an LLM will miss them or have very approximate versions of them, but... that's always been the problem with tacit knowledge: it's the exact kind of knowledge that's hard to communicate!
by joe_the_user | 2025-08-12 21:37:47+00:00
The thing is, US manufacturing jobs started as fewer and declined more than, say, Italy and Germany [1]. US policies weren't particularly opposed to the decline.

That said, the conception that manufacturing jobs are "good" compared to other jobs is simplistic if not outright false.

The US once had quiet a few relatively high paid, unionized manufacturing jobs. Some of those went to China and some of those went to the South/South-West where wages were also lower and union protections less.

The fuzziness of US political rhetoric creates a real distorting lens. Manufacturing jobs can be substituted for safe, well-paying skilled jobs. The existence of jobs can be sold as a goal rather than (employment, wage and safety) protections for workers, etc. And then what politicians actually do winds-up with little relation to the rhetoric anyway.

https://ourworldindata.org/data-insights/manufacturing-accou...
by ACow_Adonis | 2025-08-12 21:38:17+00:00
Well yes, but that's not actually empathy. Empathy has to be felt by an actual person. Indeed its literally the contrary/opposite case. They have to emphasise it specifically because they are reacting to the observation that they, as a giant congregate artificial profit-seeking legally-defined entity as opposed to a real one, are incapable of feeling such.

Do you also think that family values are ever present at startups that say we're like a family? It's specifically a psychological and social conditioning response to try to compensate for the things they're recognised as lacking...
by godelski | 2025-08-12 21:38:38+00:00
I think you have this oversimplified. Stringing together inferences can take us in either direction. It really depends on how things are being done and this isn't always so obvious or simple. But just to show both directions I'll give two simple examples (real world holds many more complexities)

It is all about what is being modeled and how the inferences string together. If these are being multiplied, then yes, this is going to decreases as xy < x and xy < y for every x,y < 1.

But a good counter example is the classic Bayesian Inference example[0]. Suppose you have a test that detects vampirism with 95% accuracy (Pr(+|vampire) = 0.95) and has a false positive rate of 1% (Pr(+|mortal) = 0.01). But vampirism is rare, affecting only 0.1% of the population. This ends up meaning a positive test only gives us a 8.7% likelihood of a subject being a vampire (Pr(vampire|+). The solution here is that we repeat the testing. On our second test Pr(vampire) changes from 0.001 to 0.087 and Pr(vampire|+) goes to 89% and a third getting us to about 99%.

[0] Our equation is

Pr(+|vampire)Pr(vampire) Pr(vampire|+) = ------------------------ Pr(+)

And the crux is Pr(+) = Pr(+|vampire)Pr(vampire) + Pr(+|mortal)(1-Pr(vampire))
by frumplestlatz | 2025-08-12 21:38:47+00:00
There is no end of examples. The first that comes to mind is the “Dear Colleague” letter around Title IX that drove colleges to replace evidence-based adjudication with deference to subjective claims and gutted due process on college campuses for over a decade.

Another is the push to eliminate standardized testing from admissions.

Or the “de-incarceration” efforts that reduce or remove jail time for extremely serious crimes.
by o11c | 2025-08-12 21:38:49+00:00
Well, prior to this release I would have said "there is no point", but it looks like Hurd has finally gotten rid of some of the major warts I remember when I first took at look at it over a decade ago.

A lot of software fails to build on Hurd because it makes (often dangerously) false assumptions that the software really needs to think about properly. `PATH_MAX` is the most visible one, but others exist as well.

(By contrast, I have found that software that fails on one of the BSDs is often failing because the particular OS completely lacks some essential feature, or at least lacks a stable API/ABI thereto.)
by mapontosevenths | 2025-08-12 21:39:13+00:00
> If you think people can't arrive to a tangible and useful approximation of truth, then you are simply delusional

Logic is only a map, not the territory. It is a new toy, still bright and shining from the box in terms of human history. Before logic there were other ways of thinking, and new ones will come after. Yet, Voltaire's bastards are always certain they're right, despite being right far less often than they believe.

Can people arrive at tangible and useful conclusions? Certainly, but they can only ever find capital "T" Truth in a very limited sense. Logic, like many other models of the universe, is only useful until you change your frame of reference or the scale at which you think. Then those laws suddenly become only approximations, or even irrelevant.
by tialaramex | 2025-08-12 21:39:57+00:00
Certainly compiler developers are only human, and many of them write C++ so they're humans working with a terrible programming language, I wouldn't sign up for that either (I have written small contributions to compilers, but not in C++). I still don't see "any excuses". I see more usual human laziness and incompetence, LLVM for example IMNSHO doesn't work hard enough to ensure their IR has coherent semantics and to deliver on those semantics.

The compiler bug I'm most closely following, and which I suspect you have your eye on too is: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119472 aka https://github.com/rust-lang/rust/issues/107975 https://github.com/llvm/llvm-project/issues/45725

But it seems like it's just that everybody fucked this up in similar ways, that's two different major compiler backends! I wouldn't be surprised if Microsoft (whose code we can't see) find that they don't get this quite right either.
by urbandw311er | 2025-08-12 21:40:19+00:00
Why not just cleanly separated code in a single execution environment? No need to actually run the services in separate execution environments just for the sake of an LLM being able to parse it, that’s crazy! You can just give it the files or folders it needs for the particular services within the project.

Obviously there’s still other reasons to create micro services if you wish, but this does not need to be another reason.
by evanjrowley | 2025-08-12 21:40:23+00:00
Good luck on your project! Btw, a lot of these racks come with plastic feet. You could cut shorter lengths from the bottom using an angle grinder or saw rated for metal, then hide the rough ends with the feet.

Actually, I don't know if those are really plastic feet, or if they're just added to prevent metal from poking holes in the cardboard box during shipping.
by soganess | 2025-08-12 21:40:24+00:00
I ask this not as a gotcha (I don't know the first thing about this), but rather because I'm interested: How do you know not "ever"?

Like, trivially, it's an ASIC, so I can use it to simulate a von Neumann[*] machine, hence I can use it to run whatever algorithm I want. Would that be more efficient than using a modern OoO superscalar? Almost surely not, but that doesn't mean it can't be done, just that it shouldn't be done that way.

*: I realize that the ASICs used in Bitcoin miners don't have dram access, but that isn't a general limitation of ASICs, just those ASIC 'chips' (and maybe not even those chips, just their implementations in bitcoin miners)

EDIT: Thanks to everyone who answered! For some reason, I had it in my head that the way we implement fixed function stuff in an ASIC was basically the same as a "burn once" FPGA. Brains gonna brain.
by NoMoreNicksLeft | 2025-08-12 21:40:44+00:00
Yeh, probably.

Imagine that you're living in a big scary world, and there's someone there telling you that being scared isn't particularly useful, that if you slow down and think about the things happening to you, most of your worries will become tractable and some will even disappear. It probably works at first. Then they sic Roko's Basilisk on you, and you're a gibbering lunatic 2 weeks later...
by ilaksh | 2025-08-12 21:41:17+00:00
I don't think it's really a fair claim in an educational context. There are at least two completely modern computers (which I assume means fairly complex) including the Raspberry PI and another one he is using the the bus or something.

I just don't think modern CPUs really quite fit the claim of "fully understandable by a single person". I mean maybe technically but that is misleading in an educational context where there are much simpler computers that are definitely fully understandable.

Maybe all of the stuff he wraps around the main CPU is understandable though. And the expansion cards are cool.
by jsmith45 | 2025-08-12 21:41:54+00:00
The European Commission's proposed interim solution for age verification (ageverification.dev) is actually pretty good vs the shitshow of the US and UK.

It works like this:

1. You contact an age verification provider (e.g., national eID schemes, banks, or mobile operators) and provide proof of identity, which they will verify possibly against government databases or whatever, etc. Once they confirm your age they will issue you with a bunch of Age attestations. At this point you don't even know where you will use these, so that info literally cannot be sent to the provider. The attestations are a JWT-like envelope with a payload conceptually equivalent to `{"nonce": "LARGE_RANDOM_HEX_STRING", "age_over_18":true}`, signed with the provider's public key. (The actual implementation is more complex).

2. This is stored in a local app, which will guarantee each attestation only gets used once (to avoid linking user across relying sites). There is no special authentication of the app in the protocol with the replying site, so you can write your own. The Commission provides an open source reference app. There is a standard protocol for communicating with verification providers, however it is not mandatory, so using the reference app might not support all verification providers, but should support a variety.

3. When you want to visit some site needing age verification, and you already have a verified account, you just sign in, otherwise, that site will use a standardized protocol to request proof from the app. The app will provide just the attestation token. The relying site does not get any info about your identity, other than the attestation token. Plus of course, the relying party must accept any age verification provider approved by the commission, not just its preferred one. The EC's solution also supports the app providing the relying site a Zero-Knowledge Proof of having such a token, which makes it possible for the relying site to learn the user's identity even if colluding with the age verification provider.
by mnky9800n | 2025-08-12 21:41:55+00:00
Yea that’s right. It’s kind of annoying how useful it is for hobby projects and it is suddenly useless on anything at work. Haha. I love Claude code for some stuff (like generating a notebook to analyse some data). But it really just disconnects you from the problem you are solving without you going through everything it writes. And I’m really bullish on ai coding tools haha, for example:

https://open.substack.com/pub/mnky9800n/p/coding-agents-prov...
by bspammer | 2025-08-12 21:43:16+00:00
This is a pretty poor example for a few reasons, but the idea is that anyone get can a shell with the tool fully installed along with all its dependencies, with a single command:

nix shell 'git+https://tangled.sh/@oppi.li/journal'

It's massive overkill for a shell alias, but for a more complex project it can be very nice.
by ryeats | 2025-08-12 21:43:19+00:00
Would be more interesting if someone came at this debate from a game theory perspective with bad actors ignoring IP laws, manipulating currency values and implementing tariffs through policies that aren't directly taxing products but restricting who can play in markets. Yes tariffs are bad in a vacuum and I am not saying this article is false even when it's strawmanning some arguments to make it's case but it's seems a bit one sided and possibly nieve without including the context in which these policies are being made so I still remain on the fence as to whether tariffs can be used as leverage.
by jordandearsley | 2025-08-12 21:43:19+00:00
A while ago, Vapi.ai was at ~99.9% uptime which was around 8 hours of downtime a year.

We set a goal for 99.99% (<1 hour/year), and quickly learned that getting there meant 100 small changes, not one big one.

Some highlights from what we did to achieve this goal:

- When our primary database on Neon falters, traffic now shifts to Aurora in under five seconds, keeping calls alive.

- Every external dependency has a backup. LLM calls roll from OpenAI → Azure → Bedrock

- Deployments are rolled out gradually across clusters by an automated canary manager, which starts at 5% of traffic and rolls back instantly if error rates rise.

- When traffic spikes, Lambda burst workers come online in milliseconds and tunnel into our Kubernetes cluster over QUIC, handling overflow without dropping calls.

In total, these changes cut dropped calls by 97% and made provider outages invisible to users.

Full deep dive with architecture diagrams, failure scenarios, and code-level decisions here: https://vapi.ai/blog/how-we-achieved-99-99-reliability-at-va...
by username332211 | 2025-08-12 21:43:29+00:00
Nature abhors a vaccum. After the October revolution, the genuine study of humanities was extinguished in Russia and replaced with the mindless repetition of rather inane doctrines. But people with awakened and open minds would always ask questions and seek answers.

Those would, of course, be people with no formal training in history or philosophy (as the study of history where you aren't allowed to question Marxist doctrine would be self-evidently useless). Their training would be in the natural sciences or mathematics. And without knowing how to properly reason about history or philosophy, they may reach fairly kooky conclusions.

Hence why Rationalism can be though as the same class of phenomena as Fomenko's chronology (or if you want to be slightly more generous, Shafarevich's philosophical tracts).
by exe34 | 2025-08-12 21:43:50+00:00
> Language models aren't world models for the same reason languages aren't world models. > Symbols, by definition, only represent a thing. They are not the same as the thing. The map is not the territory, the description is not the described, you can't get wet in the word "water".

There is a lot of negatives in there, but I feel like it boils down to a model of a thing is not the thing. Well duh. It's a model. A map is a model.
by steveklabnik | 2025-08-12 21:44:11+00:00
> I do not see how it causes significant slow downs in C projects

It's that textual inclusion is just a terrible model. You end up reprocessing the same thing over and over again, everywhere it is used. If you #include<foo.h> 100 times, the compiler has to reparse those contents 100 times. Nested headers end up amplifying this effect. It's also at a file-level granularity, if you change a header, every single .c that imports it must be recompiled, even if it didn't use the thing that was changed. etc etc. These issues are widely known.

> I do not understand what you mean by your second point. What separation of interface and implementation allows you to do is updating the implementation without having to recompile other TUs.

Sure, but you don't need to have header files to do this. Due to issues like the above, they cause more things to be recompiled than necessary, not less.

> You can achieve this is also in different ways, but in C this works by in this way.

Right, my point is, those other ways are better.

> I am not sure how it works in Rust as you need to monomorphize a lot of things, which come from other crates. It seems this would inevitably entangle the compilations.

The fact that there are "other crates" is because Rust supports separate compilation: each crate is compiled independently, on its own.

The rlib contains the information that, when you link two crates together, the compiler can use for monomorphization. And it's true that monomorphization can cause a lot of rebuilding.

But to be clear, I am not arguing that Rust compilation is fast. I'm arguing that C could be even faster if it didn't have the preprocessor.
by aspenmayer | 2025-08-12 21:44:23+00:00
Downvoted for disagreement and for mentioning voting, but I'm telling you why because you think I ought to say something if I disagree, which I'm able to do in this case.

It's fine to downvote things that you believe are wrong or simply disagree with, and I have read mods on HN say that downvoting for disagreement is okay. Asking or insisting for more from an HN user is presumptuous, and discussion of voting is largely considered off-topic and therefore not really what the guidelines suggests we should do.

https://news.ycombinator.com/item?id=43560543

> Downvoting for disagreement has always been fine on HN. People sometimes assume otherwise because they're implicitly porting the rules from a larger site, but that's a mistake.

> https://news.ycombinator.com/item?id=16131314

More to the upthread point, generated comments are against guidelines:

https://news.ycombinator.com/item?id=33950747

> HN has never allowed bots or generated comments. If we have to, we'll add that explicitly to https://news.ycombinator.com/newsguidelines.html, but I'd say it already follows from the rules that are in there. We don't want canned responses from humans either!

These are quotes from dang, not my own. I'm just a HN user, which is why I found the quotes to help everyone make up their own mind what the guidelines say.