LangGraph의 한계를 느끼고 직접 만든 에이전트 런타임 — UI를 그래프 노드로, Postgres 기반 내구성, 오케스트레이션 비용 제로
Built my own agent runtime after hitting the ceiling with LangGraph — UI as graph nodes, Postgres durability, zero orchestration cost
핵심 요약
LangGraph의 복잡함과 비용 문제에 지쳐 직접 개발한, UI와 상태 관리가 통합된 경량 에이전트 런타임 'cascaide' 소개.
- UI 노드 통합 — UI와 인간 개입을 그래프의 핵심 요소로 직접 모델링함.
- 데이터 내구성 — 모든 단계가 Postgres에 체크포인트되어 장애 발생 시 즉시 복구 가능함.
- 오케스트레이션 비용 제로 — 별도의 호스팅 비용 없이 오직 컴퓨팅 자원 비용만 발생함.
- 개발자 경험 최적화 — 23kb의 가벼운 코어와 직관적인 API로 복잡한 추상화 없이 개발 가능함.
저는 약 2년 동안 에이전트 애플리케이션을 개발해 왔습니다. 처음에는 루프를 사용하다가 LangGraph와 Assistant UI로 넘어갔죠. Lang 생태계가 출시될 때부터 사용해 왔고 그 진화 과정을 지켜봐 왔습니다.
에이전트를 만들기는 쉽고 훌륭하지만, 더 세밀한 제어가 필요해지자 정말 답답해지기 시작했습니다. 특히 흥미로운 사용자 경험을 만드는 데 어려움이 많았죠. 에이전트를 그래프로 만드는 아이디어는 좋았지만, UI도 흐름 속의 노드로 모델링하고 싶었습니다. 항상 추상화와 싸우는 기분이었고, 배워야 할 게 너무 많았습니다.
배포도 또 다른 악몽이었습니다. 저는 좀 짠돌이라 노드 실행당 부과되는 세금이... 음, 별로 좋게 느껴지지 않았습니다. 하지만 뭐, 개발자들도 먹고살아야 하니까요.
약 10개월 전, 저는 참다못해 제가 가지고 있던 아이디어를 실행에 옮기기 시작했습니다. 바로 cascaide입니다.
cascaide는 TypeScript로 작성된 풀스택 에이전트 런타임이자 AI 오케스트레이션 프레임워크로, JS/TS가 실행되는 곳이라면 어디서든 작동하도록 설계되었습니다. 원래는 웹 애플리케이션용으로 만들어졌지만, JavaScript 런타임 내의 헤드리스/CLI AI 에이전트 및 워크플로우에서도 똑같이 잘 작동합니다.
이것의 본질은 분산형, 관측 가능형, 내구성 있는 그래프 실행기입니다. 첫 번째 분할이 클라이언트/서버로 이루어지기 때문에 풀스택이라고 부릅니다.
시도해 볼 만한 이유는 다음과 같습니다.
🧩 UI를 에이전트 그래프의 노드로 사용 — 접착제 코드나 별도의 라이브러리가 아닙니다. UI와 인간 개입(HITL)이 핵심 기본 요소입니다.
💾 몇 주 후든, 아니면 영원히든 워크플로우 재개 가능 — 모든 단계가 자신의 Postgres에 체크포인트됩니다. 새로운 인프라나 상태를 보관하는 제3자 서비스가 필요 없습니다.
🔍 관측 가능성 — 에이전트 실행을 되감고, 상태를 포크하고, 모든 전환을 검사하세요. 더 이상 printf나 console.log 지옥은 없습니다. Redux Devtools로 필요한 모든 것을 볼 수 있습니다.
💸 오케스트레이션 비용 제로 — 컴퓨팅 비용만 지불하면 됩니다. 노드당 세금도, 호스팅된 런타임 수수료도 없습니다.
🪶 23kb gzipped 코어 — 소스 코드를 직접 읽을 수 있을 만큼 작습니다. 또 다른 블랙박스가 아닙니다. 모든 헬퍼, 내구성 있는 데이터베이스, 프론트엔드 및 에이전트 빌더 헬퍼를 포함해도 46kb입니다. 코드를 읽고 논리적으로 이해할 수 있습니다.
🌍 다른 앱처럼 배포 — 현재 Next.js, Express, Hono, Fastify 어댑터를 지원합니다(네이티브 어댑터를 확장할 곳을 알려주세요!). 특별한 에이전트 호스팅이나 벤더 종속이 없습니다.
🏗️ 데이터와 규정 준수 — 모든 추적 데이터가 자신의 DB에 저장됩니다. 제3자에게 데이터를 보내지 않고도 HIPAA/SOC2 기반을 마련할 수 있습니다.
🛠️ 개발자 경험
지금 이런 주장을 믿기는 어렵고, 제가 제작자라 편향되었을 수도 있습니다. 하지만 API 표면은 정말 작습니다.
🪝 그래프 실행을 제어하고 관찰하기 위한 클라이언트용 훅 2개
⚙️ 노드의 prep/exec/post 라이프사이클 — 상태 업데이트와 새로운 노드 생성을 위한 두 가지 주요 유형
🎮 동시성을 위한 컨트롤러 기본 요소 — 서버 측 노드 내에서 그래프 실행을 제어하고 관찰
📐 그래프 정의
모두 타입이 지정되어 있습니다. 이게 거의 전부입니다. 일반적인 프로그래밍 제어만으로도 많은 것을 할 수 있습니다.
모두 타입이 지정되어 있습니다. 이게 거의 전부입니다. 일반적인 프로그래밍 제어만으로도 많은 것을 할 수 있습니다.
🗺️ 다음 계획
🔌 네이티브 어댑터 확장 — 현재 네이티브 어댑터는 다음과 같습니다:
⚛️ React
🐘 Postgres-js (내구성 있는 데이터베이스)
🖥️ 서버: Next.js, Fastify, Hono, Express

