cho.sh
2,244 notes
Liked on XI made a mistake. When Jack and I decided to organize this $100K Hackathon, my biggest concern was cheating. Unlike a regular hackathon, everyone participates from home. And because the winner is whoever makes the most PROFIT (not revenue), there are so many ways to manipulate the numbers. So I added a $99 entry fee. One thing I’ve learned from building businesses is that people tend to be more committed when they pay for something. I thought it would filter out spam, attract serious builders, and make the competition fairer for everyone. But I completely missed the other side. 3 years ago, I was a living with my apps. Today, I’m financially free. My life changed so much that somewhere along the way, I lost perspective on what $99 means to someone else. For someone in India, someone struggling to pay their bills, or someone trying to make their first dollar online, $99 can be a lot of money. And those are exactly the people I want to help! I’ve spent years sharing what I’ve learned, reviewing random people’s landing pages, and organizing free meetups around the world. Not because there’s money to make, but because I genuinely love seeing people build things and succeed. And somehow, I was so focused on keeping cheaters out that I didn’t realize I was also keeping genuine builders out. That’s my mistake. So I’ve decided to make the $100K Hackathon completely FREE :) Everyone who already paid got a full refund. I’m still worried about cheating. That problem hasn’t disappeared, and Jack and I will have to figure out better ways to verify profits and keep the leaderboard fair. But that’s our problem to solve. Thank you to everyone who shared their thoughts. Sometimes you need people to remind you of things you’ve forgotten. I genuinely hope this hackathon changes someone’s life. ❤️Liked on XIt’s time to bring back Cafe CursorPosted on Xyo @pendev i can't live share edit a .pen file? it's the most needed featurePosted on XI'm coining a word "Agentsplaining" Agents condescendingly assuming the user don't know fuck and repeating the obviousReplied on X@jayhxmo @raycast Hard to explain. It's the small detailsPosted on X@raycast iOS keyboard is insanely good. Might resub Raycast pro just cuz of thisReplied on X@ishuagra02 I saw a theory that F5.2 is a post train of 5.1, but O5.5 is a distillation of F5.5(unreleased new pretrain) and thats why O5.5 > F5.2Liked on X@anaclumos don't know what is actually improved 👀Posted on Xam i the only one underimpressed with 5.2 fableReplied on X@bvvst great minds think alike https://t.co/YRFWhb1mcOLiked on XClaude Fable 5.2 is out and it's the perfect time to run this god-level prompt on your codebase: "I want you to audit our codebase, is anything here unnecessary, overly complicated in our current setup, or based on weak assumptions? Challenge them. - What can be deleted entirely? - What can be simplified now that unnecessary pieces are gone? Then make the changes. Prefer deleting over simplifying, simplifying over optimizing, and optimizing over automating. This product is being used by thousands of customers, do not cut any corners." This prompt is one I run often and leads to the best results.Replied on X@akshayadinesh19 @bot can we please BYOM for botsLiked on XTo be fair, the Chinese models have a much lower refusal rateLiked on XF*CK IT, im creating a library of AI slop indicators. my feed is full of taste larpers. stay tuned https://t.co/5Muv8nQRm3Liked on XJENSEN! THATS NOT WHAT WE MEANT BY CHINESE MODELS!!!!!!!Liked on Xmy parents had to declare bankruptcy when I was a kid, so they had every reason to pressure me towards a more stable career path instead, they were so patient with me, even as i failed startup after startup for years so getting to tell my mom that everything turned out okay was a really special moment :) for those who can't read Korean, her first message roughly translates to: "Really!!! Congratulations my son. So much :') Thank you God!" i know I've been posting about my exit for like a week now, but it really is a big deal for me and my family! i'll share more about how this all happened and some tactical advice later this week, but for now i'm just riding out all the emotions to quote my mom, thank you God!!!!Liked on X@thefarmers_Dog it stands for Egg GzampleLiked on X🦍 Introducing Memorilla: memory as a modality for LLMs Memorilla turns everything a frozen LLM needs to remember into just 16 memory embeddings ⚡ It uses up to 4,212× fewer tokens and is 27× faster than full context inference while more accurate 🎯 Pushes the Pareto frontier over RAG and agentic memory in personalization, long-document and knowledge QA A thread 🧵:Liked on XThere's a huge product opportunity downstream of Tailscale etc too. At @tldraw we've started designing for "high trust networks" and it's been a beautiful thing. 1. Features that would be a nightmare on the internet are okay on my computer and mostly okay on private networks. Websites that execute user-generated scripts, control production systems, allow for users to send desktop notifications, spend tokens, or directly prompt my agent. Crazy stuff that would only make sense if everyone was in a committed polycule. 2. When everyone on the server can be trusted to have _external_ reasons for good behavior (eg keeping their job, or maintaining friends, family, church, mafia org), the software can be designed in a default social way. Most apps default to isolation, low horizontal visibility, highly restricted collaboration. Makes sense if the social contracts are inside of the app, but if you can trust that they live outside of the app then you can get wild. Example being small group chat names as an emergent comedy phenomenon because anyone in the group can change the name. 3. This can work for commercial products, too, not just internal stuff. Security matters more than ever but the way we've seen that manifest is that more companies are more confident in their own solutions than anything we could provide, to the point where owning data and access is a better value proposition than having it managed. Always has been true for big companies but now even small companies can get a good secure network set up pretty easily, and the hooks we need to build are easy enough. tldraw offline got us started down this road (and shout out to @pendev for first introducing me to the idea of desktop + mcp). We've been bringing that product to private networks and it's been exciting to see how much we can get away with. Keep an eye outReplied on X@saradu birds eye viewLiked on XApplications close in 2 days!! If you have a cool bio idea, and $5-10k will go a long way for you, please apply!!! https://t.co/NCvmrNC53cLiked on XWe've been early adopters of Rust since 2018 and a lot of our infra, voice tech, and even some of the current client is already Rust, the holy grail was getting the whole client there. That means Electron goes away, and so does React Native, mobile keeps native UI but shares app code with desktop via Rust. We hope to get it into testing with users soon™. (And it's not Tauri, it's GPUI, so good guess everyone.) Alright, back to staring at the WoW Forever login screen.Reposted on XOh boy. https://t.co/X7SSskGuGvLiked on XRIP .si domain squatters
에이전트 런타임 서버 셋업

에이전트 런타임 서버 셋업

에이전트를 서버에서 상시 구동하면 그 나름대로의 문제가 따라온다. 서버에 달린 RAM은 양이 정해져 있다. 폭주한 프로그램 하나가 남김없이 먹어치우면 리눅스는 패닉에 빠져 프로세스를 거의 무작위로 죽이기 시작한다. 얘가 가끔 SSH 연결처럼 엉뚱한 걸 죽이면 서버 전체가 같이 내려간다. 그래서 욕심 많은 프로세스 하나가 전체를 무너뜨리기 전에 느려지는 선에서 그치도록 방어를 여러 겹 쌓아야 한다.

정보

이 글은 에이전트 런타임 셋업을 다룬다. 에이전트 인터페이스나 추론 얘기가 아니다. 셋은 서로 다르다. Claude를 예로 들면, 에이전트 추론은 Anthropic 서버가 담당하고 에이전트 인터페이스는 휴대폰이어도 되지만, 에이전트 런타임은 Claude 로컬 바이너리(모델이 아니라 프로그램)가 접근할 수 있는 파일 시스템이어야 한다. 에이전트 런타임은 인터페이스 계층과는 분리될 수 있다. 종종 하나지만.

계층

1. 넘칠 때 받아줄 큰 공간 (swap)

RAM이 책상이라면 swap은 옆에 놓인 서류 캐비닛이다. 책상이 가득 차면 잘 안 쓰는 서류가 바닥에 내던져지는 대신 캐비닛으로 옮겨 간다.

서버 SSD에 128GB짜리 swap 파일을 만들어 두었다. RAM보다 느리지만 느린 쪽이 죽는 쪽보다 낫다. 셋업에 함정이 하나 숨어 있는데, 파일을 바이트 그대로 써 내려가는 dd로 만들어야 한다는 점이다. fallocate는 구멍 뚫린 파일을 만들고, 리눅스는 그런 파일을 swap으로 받아주지 않는다.

2. swap 앞단의 압축 버퍼 (zswap)

페이지가 느린 서류 캐비닛으로 가기 전에 리눅스가 먼저 zstd로 압축해 RAM 한구석에 쟁여 둔다. 옷을 상자에 넣기 전에 진공 압축팩으로 부피를 줄이는 셈이다. 스왑된 데이터는 대부분 디스크까지 내려가지도 않아서 속도가 유지된다.

사촌 격인 zram이 아니라 zswap을 고른 이유는 zswap의 사용량이 그걸 유발한 프로세스에 청구되기 때문이다. 이 성질이 4번 계층에서 중요해진다.

3. 정중한 문지기 (earlyoom)

커널의 OOM 킬러는 시스템이 이미 응답을 멈춘 마지막 순간에야 움직인다. earlyoom은 메모리를 지켜보다가 그보다 일찍 나서는 작은 데몬이다. RAM과 swap의 여유가 둘 다 5% 아래로 내려가면 가장 뚱뚱한 프로세스에게 정중하게 종료를 요청하고(SIGTERM), 2% 아래로 내려가면 강제로 끝장을 본다(SIGKILL). 반드시 살아남아야 하는 것들은 죽이지 않는 목록으로 보호한다. systemd, sshd, tailscaled, docker/containerd, 그리고 earlyoom 자신이다.

4. 무거운 줄 아는 작업에 채우는 구속복 (cgroup 상한)

메모리를 많이 먹을 게 뻔한 작업은 시작하기 전에 미리 감싸 둔다.

text
sudo systemd-run --scope -p MemoryMax=8G -p MemorySwapMax=0 -- <your command>

이렇게 하면 명령이 메모리 제한이 걸린 상자 안에서 돈다. 8GB를 넘기면 커널은 그 상자만 죽이고, 서버의 나머지는 눈치도 못 챈다. 폭발 반경이 정확히 작업 하나뿐이라 얘가 제일 좋다.

5. 들어오는 길목의 경호원

SSH와 Tailscale 데몬에는 OOM 점수 -500을 부여한다. 커널에게 "정말 누군가를 죽여야겠다면 어지간하면 다른 프로세스부터 골라라"라고 말해 두는 셈이다. 덕분에 언제든 다시 들어가서 수습할 수 있다.

6. 튜닝 손잡이 몇 개 (sysctl)

압축 계층으로는 미리미리 스왑하고(swappiness=100), 메모리를 기다리느라 서버가 멈추는 일이 없게 백그라운드 정리를 더 일찍 시작하고(watermark_scale_factor=125), 비상 예비분은 더 크게 잡아 둔다(min_free_kbytes).

Backlinks2