| ▲ | Show HN: I put an AI agent on a $7/month VPS with IRC as its transport layer(georgelarson.me) | |||||||||||||||||||||||||||||||||||||||||||||||||
| 197 points by j0rg3 9 hours ago | 63 comments | ||||||||||||||||||||||||||||||||||||||||||||||||||
The stack: two agents on separate boxes. The public one (nullclaw) is a 678 KB Zig binary using ~1 MB RAM, connected to an Ergo IRC server. Visitors talk to it via a gamja web client embedded in my site. The private one (ironclaw) handles email and scheduling, reachable only over Tailscale via Google's A2A protocol. Tiered inference: Haiku 4.5 for conversation (sub-second, cheap), Sonnet 4.6 for tool use (only when needed). Hard cap at $2/day. A2A passthrough: the private-side agent borrows the gateway's own inference pipeline, so there's one API key and one billing relationship regardless of who initiated the request. You can talk to nully at https://georgelarson.me/chat/ or connect with any IRC client to irc.georgelarson.me:6697 (TLS), channel #lobby. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | InitialPhase55 8 hours ago | parent | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
Curious, how did you settle on Haiku/Sonnet? Because there are much cheaper models on OpenRouter that probably perform comparatively... Consider Haiku 4.5: $1/M input tokens | $5/M output tokens vs MiniMax M2.7: $0.30/M input tokens | $1.20/M output tokens vs Kimi K2.5: $0.45/M input tokens | $2.20/M output tokens I haven't tried so I can't say for sure, but from personal experience, I think M2.7 and K2.5 can match Haiku and probably exceed it on most tasks, for much cheaper. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | faangguyindia 5 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
I actually use IRC in my coding agent Change into rooms to get into different prompts. using it as remote to change any project, continue from anywhere. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | oceliker 6 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
For future reference I recommend having another Haiku instance monitor the chat and check if people are up to some shenanigans. You can use ntfy to send yourself an alert. The chat is completely off the rails right now... | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | czhu12 7 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
Super random but I had a similar idea for a bot like this that I vibe coded while on a train from Tokyo to Osaka https://web-support-claw.oncanine.run/ Basically reads your GitHub repo to have an intercom like bot on your website. Answer questions to visitors so you don’t have to write knowledge bases. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | wolvoleo 3 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
I tried it, it was cool. I don't like nully's attitude though. Very dismissive and tough. But I like your setup as a whole. I'll see if I can get some takeaways from it. I do tiered here too, with the lowest tier just a qwen local bot. By the way how do you handle the escalation from haiku to opus I wonder? | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | 0xbadcafebee 8 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
This is such a great idea. I have an idea now for a bot that might help make tech hiring less horrible. It would interview a candidate to find out more about them personally/professionally. Then it would go out and find job listings, and rate them based on candidate's choices. Then it could apply to jobs, and send a link to the candidate's profile in the job application, which a company could process with the same bot. In this way, both company and candidate could select for each other based on their personal and professional preferences and criteria. This could be entirely self-hosted open-source on both sides. It's entirely opt-in from the candidate side, but I think everyone would opt-in, because you want the company to have better signal about you than just a resume (I think resumes are a horrible way to find candidates). | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | sbinnee 8 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
Nice. I had some fun. Good work! One question. Sonnet for tool use? I am just guessing here that you may have a lot of MCPs to call and for that Sonnet is more reliable. How many MCPs are you running and what kinds? | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | greesil 4 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
How do you keep it from getting prompt injected? Oh I get it the runtimes are nice and small, you're using Claude for the intelligence. Obv I think I'm just impressed with anthropic more than anything. Defcon would have me believe that prompt injections are trivial | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | jaboostin 5 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
lol I sent this link to my Claude bot connected to my Discord server and it started converting with nully and another bot named clawdia. moltbook all over again. I’m surprised how effortlessly it connected to IRC and started talking. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | anoojb 5 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
I wonder if this brings back demand for IRC clients on mobile devices? ;-) | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | chatmasta 6 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
> That boundary is deliberate: the public box has no access to private data. Challenge accepted? It’d be fun to put this to the test by putting a CTF flag on the private box at a location nully isn’t supposed to be able to access. If someone sends you the flag, you owe them 50 bucks :) | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | consumer451 6 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
The demo seems to be in a messed up state at the moment. Maybe it's just getting hammered and too far behind? | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | ruptwelve 4 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
While I am a huge fan of IRC, wouldn't be simpler to simulate IRC, since you are embedding it? Or is the chatroom the actual point? Kudos on the project! | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | agnishom 6 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
> The model can't tell you anything the resume doesn't already say. Good observation. But I would worry that in the scenario when this setup is the most successful, you have built a public facing bot that allows people to dox you. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | messh 5 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
Can be significantly cheaper on a vm that wakes up only when yhe agebt works, see for e.g. https://shellbox.dev | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | appstorelottery 2 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
Lol. /nick The IRC implementation needs to be a bit more locked down. EDIT: So much fun to be in an IRC chat room - replete with trolling! Like a Time Machine to the 90's! | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | mememememememo 6 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
Yeah that chat got hosed by HN as any Show HN $communicationchannel does | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | Imustaskforhelp an hour ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
I have a 7$/yr vps 512mb ram which can run this. I have run crush from the charmbracelet team on the vps and all of it just works and I get an AI agent which I can even use with Openrouter free api key to get some free agentic access for free or have it work with the free gemini key :-) | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | ozozozd 3 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
Super cool! Love seeing IRC in the wild. Kudos and best of luck! | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | ekianjo 5 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
But relying on a Claude API so you don't really "own the stack" as claimed in the article... | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | iLoveOncall 8 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
The model used is a Claude model, not self-hosted, so I'm not sure why the infrastructure is at all relevant here, except as click bait? | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | topaz0 4 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
Curious, which API key are you using? | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | heyitsaamir 6 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
Great idea and great write up! | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | eric_khun 7 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
that's so fun ! how do you know when to call haiku or sonnet? | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | tc1989tc 4 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
it's great project | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | jgrizou 8 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
Works very well | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | m00dy 6 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
Did you give your email access to a AI provider ? | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | slopinthebag 6 hours ago | parent | prev [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
I can tell it's vibe coded because it takes about 1 minute for a message to appear. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||