923 posts
A2A 프로토콜: AI 에이전트끼리 대화하는 표준

A2A 프로토콜: AI 에이전트끼리 대화하는 표준

AI 에이전트 하나만으로 모든 일을 처리할 수 있다면 좋겠지만, 현실은 그리 단순하지 않습니다. 기업 환경에서는 채용 담당 에이전트, 일정 관리 에이전트, 데이터 분석 에이전트처럼 각자 전문 분야가 다른 에이전트들이 따로 돌아가고 있는 경우가 많거든요. 문제는 이 에이전트들이 서로 다른 프레임워크로 만들어져서 직접 대화할 방법이 없다는 겁니다. 바로 이 문제를 해결하기 위해 Google이 내놓은 것이 A2A(Agent-to-Agent) 프로토콜입니다. 이름 그대로 AI 에이전트 간의 통신을 표준화하는 오픈 프로토콜인데요. 이 글에서

Void: Vite 네이티브 배포 플랫폼

Void: Vite 네이티브 배포 플랫폼

Vite+가 로컬 개발 도구를 하나로 통합했다면, 이번에는 배포까지 먹으러 왔습니다. VoidZero가 내놓은 Void는 Vite 앱에 플러그인 하나를 추가하고 void deploy 한 방이면 데이터베이스, 인증, KV 스토리지, 큐까지 갖춘 풀스택 애플리케이션이 Cloudflare Workers 위에 올라가는 배포 플랫폼입니다. "자바스크립트에 드디어 Rails 순간이 온 건가, 아니면 그냥 Cloudflare 종속에 리본을 달아놓은 건가?" 궁금해서 Void가 뭘 하는 건지 직접 파헤쳐봤습니다. Vite+와 Void의 관계 먼저

저 사람들 참 나약하다고 생각했습니다

저 사람들 참 나약하다고 생각했습니다

"저 사람들 참 나약하다" ❤️‍🩹 처음 캐나다에서 직장 생활을 시작했을 때, 마음이 아프다고 말하는 동료들을 보며 제가 했던 생각입니다. 불면증, 우울증, ADHD, PTSD... 병과 증상의 종류는 뭐가 이렇게 많은지. 제가 묻지도 않았는데 뭐가 자랑이라고 먼저 자신의 정신 건강 상태를 떳떳하게 설명하더군요. 어떤 인턴은 업무 중 발작이 올 수 있으니 놀라지 말아 달라고 미리 팀에 알리기도 했습니다. 처음에는 이런 분위기가 낯설고 당혹스러웠습니다. 그런데 한 가지 인상 깊었던 점이 있었습니다. 주변 동료들이 그런 상황을 매우

Cloudflare Containers로 엣지에서 컨테이너 실행하기

Cloudflare Containers로 엣지에서 컨테이너 실행하기

Cloudflare Workers를 써보신 분이라면 한 번쯤 이런 생각을 해보셨을 겁니다. "Workers는 정말 편한데, 내가 쓰는 Python 라이브러리나 FFmpeg 같은 도구는 못 쓰잖아…" 🤔 Workers는 V8 엔진 위에서 돌아가기 때문에 JavaScript와 WebAssembly만 실행할 수 있습니다. Go로 만든 CLI 도구를 돌리거나 Python 머신러닝 모델을 서빙하거나 영상 트랜스코딩을 하려면 결국 별도의 서버나 컨테이너 서비스가 필요했어요. Cloudflare Containers는 바로 이 틈을 메워줍니다.

Cloudflare Durable Objects로 상태 있는 서버리스 만들기

Cloudflare Durable Objects로 상태 있는 서버리스 만들기

Cloudflare Workers로 API를 만들다 보면 어느 순간 이런 벽에 부딪힙니다. "실시간 조회수를 세고 싶은데, 이 상태를 대체 어디에 둬야 하지?" 🤔 Workers는 무상태(stateless)입니다. 요청이 들어올 때마다 새로 뜨고 처리가 끝나면 사라지기 때문에, 요청과 요청 사이에 무언가를 기억하지 못합니다. 그래서 채팅방, 실시간 협업 문서, 온라인 게임 방, 조회수 카운터, 레이트 리미터처럼 "여러 요청이 같은 상태를 공유하고 조율해야 하는" 기능을 만들려고 하면 곧바로 막히게 됩니다. 그럼 Workers KV

Storybook MCP로 AI에게 컴포넌트 맥락 알려주기

Storybook MCP로 AI에게 컴포넌트 맥락 알려주기

AI 코딩 에이전트에게 UI를 만들어달라고 하면 종종 난감한 결과물이 나옵니다. 프로젝트에 이미 잘 만들어둔 Button, Card, Modal 같은 컴포넌트가 있는데 에이전트는 그 존재를 모르니까 비슷한 걸 또 만들어버리는 거죠. 디자인 시스템을 열심히 구축해놨는데 AI가 인라인 스타일로 대충 때운 컴포넌트를 내놓으면 정말 답답합니다 😅 이 문제의 원인은 간단합니다. AI 에이전트에게 우리 프로젝트의 UI 컴포넌트에 대한 맥락이 없기 때문인데요. Storybook이 MCP(Model Context Protocol)를 통해 이 문

ccusage: 클로드 코드 토큰 사용량과 비용을 한눈에

ccusage: 클로드 코드 토큰 사용량과 비용을 한눈에

클로드 코드를 쓰다 보면 어느 순간 궁금해지는 게 있어요. 이번 달에 토큰을 얼마나 썼지? 비용은 얼마쯤 나왔을까? 세션 중에 /cost로 현재 비용을 확인할 수는 있는데, 지난주 월요일에 얼마를 썼는지나 프로젝트별 비용 분포는 알기 어렵죠. ccusage는 이 질문들에 답해주는 CLI 도구예요. 클로드 코드가 로컬에 남기는 세션 로그 파일을 분석해서 일별, 월별, 세션별 토큰 사용량과 비용을 테이블 형태로 보여줘요. 설치할 필요도 없이 npx 한 줄이면 바로 실행할 수 있어서 진입 장벽이 거의 없어요. 바로 실행해보기 ccusag

1Password CLI(op) 사용법: 터미널에서 비밀번호와 시크릿 관리하기

1Password CLI(op) 사용법: 터미널에서 비밀번호와 시크릿 관리하기

개발하다 보면 API 키, 데이터베이스 비밀번호, 토큰 같은 시크릿(secret)을 다룰 일이 정말 많죠. .env 파일에 평문으로 저장하자니 불안하고, 팀원이랑 공유하려고 슬랙으로 보내자니 그것도 영 찝찝합니다 😅 1Password는 이미 많은 개발자가 비밀번호 관리 도구로 사용하고 있는데요. 사실 1Password에는 op라는 공식 CLI 도구가 있어서 터미널에서도 1Password 볼트에 저장된 시크릿을 자유롭게 다룰 수 있습니다. 환경 변수에 시크릿을 주입하거나, 스크립트에서 비밀번호를 안전하게 참조하거나, SSH 키 관리

TanStack Start: 타입 안전한 풀스택 React 프레임워크

TanStack Start: 타입 안전한 풀스택 React 프레임워크

React로 풀스택 앱을 만들 때 어떤 프레임워크를 쓰시나요? 아마 Next.js를 먼저 떠올리실 텐데요. Next.js가 사실상 표준처럼 자리 잡긴 했지만 쓰다 보면 아쉬운 점도 있습니다. 타입 안전성이 중간중간 끊긴다거나, 캐싱 동작이 예상과 다르게 돌아간다거나, 배포할 때 특정 플랫폼에 묶이는 느낌이 든다거나요. 그런 분들에게 TanStack Start가 반가울 겁니다. TanStack Query와 TanStack Table로 유명한 TanStack 생태계에서 나온 풀스택 React 프레임워크인데요. "엔드투엔드 타입 안전성"

Discord OAuth2로 사용자 인증하기

Discord OAuth2로 사용자 인증하기

지금까지 Discord 연동은 대체로 봇의 관점이었습니다. 봇이 서버에서 명령에 반응하고 이벤트를 처리하는 이야기였죠. 이번 글은 시선을 돌려 사용자의 관점을 봅니다. 웹사이트의 "Discord로 로그인" 버튼은 어떻게 동작할까요? 그리고 사실 봇을 서버에 초대할 때 썼던 그 링크도 알고 보면 OAuth2였다는 걸 확인하게 됩니다. OAuth2가 푸는 문제 내 웹 서비스에서 사용자의 Discord 닉네임이나 가입한 서버 목록을 보여주고 싶다고 해볼게요. 사용자에게 Discord 비밀번호를 달라고 할 수는 없습니다. 대신 사용자가 D

Zerobrew: Homebrew보다 최대 20배 빠른 패키지 매니저

Zerobrew: Homebrew보다 최대 20배 빠른 패키지 매니저

Homebrew를 쓰면서 느린 속도 때문에 답답했던 적 있으신가요? brew install 하나 실행했을 뿐인데 몇십 초씩 걸리고, brew update는 아예 커피 한 잔 타올 시간을 주기도 하죠. Homebrew는 macOS 개발 환경의 사실상 표준이지만 Ruby로 작성된 태생적 한계 때문에 성능은 늘 아쉬웠습니다. Zerobrew는 바로 이 문제를 풀려고 나온 프로젝트입니다. Rust로 작성했고 Homebrew의 패키지 생태계를 그대로 쓰면서도 설치 속도를 5배에서 최대 20배까지 끌어올렸는데요. Python 생태계에서 pip

AI를 위한 CLI 설계: 에이전트가 쓰기 좋은 커맨드라인 도구 만들기

AI를 위한 CLI 설계: 에이전트가 쓰기 좋은 커맨드라인 도구 만들기

요즘 개발하다 보면 CLI 도구를 직접 타이핑하기보다 AI 에이전트한테 시키는 일이 부쩍 늘었습니다. 클로드 코드나 Cursor 같은 코딩 에이전트가 터미널에서 git, npm, docker, grep 같은 명령어를 알아서 실행해주니까요. 근데 가만 생각해보면 우리가 쓰는 CLI 도구 대부분은 사람이 직접 타이핑하는 걸 전제로 만들어졌어요. --help 플래그로 사용법을 찾아보고, 탭 완성으로 옵션을 탐색하고, 에러 메시지를 읽고 다시 시도하는 거죠. AI 에이전트는 이렇게 도구를 쓰지 않습니다. 문서를 읽어 이해한 뒤 명령어를 한

Claude Dispatch: 폰 하나로 내 컴퓨터에 일 시키기

Claude Dispatch: 폰 하나로 내 컴퓨터에 일 시키기

외출했는데 갑자기 "아, 그 파일 정리해놔야 했는데" 싶을 때 있잖아요. 아니면 회의 준비 자료를 미리 만들어놓고 싶은데 컴퓨터 앞에 갈 시간이 없을 때요. 이럴 때 폰으로 메시지 하나 보내면 내 데스크톱에서 Claude가 알아서 처리해주면 얼마나 좋을까요? Anthropic이 2026년 3월에 내놓은 Dispatch가 딱 이걸 해줍니다. Claude 모바일 앱에서 메시지를 보내면 내 컴퓨터에서 돌아가는 Claude가 파일을 열고 앱을 조작한 뒤 결과를 정리해서 폰으로 알려주는 거예요. 어떻게 동작하고 어떻게 쓰는 건지 하나씩 살펴

browser-use: AI 에이전트가 웹 브라우저를 자유자재로 다루는 시대

browser-use: AI 에이전트가 웹 브라우저를 자유자재로 다루는 시대

웹 브라우저 자동화라고 하면 보통 Playwright나 Selenium으로 셀렉터를 하나하나 잡아가며 스크립트를 짜는 모습이 떠오릅니다. 버튼 위치가 바뀌면 셀렉터도 고쳐야 하고, 페이지마다 로딩 타이밍이 달라서 wait_for 코드를 여기저기 넣어야 하죠. 이런 작업이 번거로워서 "AI한테 그냥 시키면 안 되나?"라고 한 번쯤 생각해보신 적 있을 겁니다. browser-use는 바로 그 발상에서 출발한 오픈소스 Python 라이브러리입니다. 자연어로 "해커뉴스에서 오늘의 인기 글 5개를 찾아줘"라고 지시하면 LLM이 직접 브라우저

Vite+로 웹 개발 도구 통합하기

Vite+로 웹 개발 도구 통합하기

웹 프론트엔드 프로젝트 하나를 제대로 셋업하려면 도구가 정말 많이 필요하죠. 번들러는 Vite, 테스트 러너는 Vitest, 린터는 ESLint, 포맷터는 Prettier... 거기에 Node.js 버전 관리자랑 패키지 매니저까지 더하면 package.json의 devDependencies가 금세 길어지고 설정 파일도 여기저기 흩어집니다. 2026년 3월, Vite의 창시자 Evan You가 이끄는 VoidZero가 이 문제에 대한 답을 내놓았는데요. Vite+ — Vite, Vitest, Oxlint, Oxfmt, Rolldown

Superpowers: 클로드 코드에 소프트웨어 엔지니어링 원칙을 심다

Superpowers: 클로드 코드에 소프트웨어 엔지니어링 원칙을 심다

클로드 코드에게 "이 기능 만들어줘"라고 하면 곧바로 코드를 쓰기 시작합니다. 빠르긴 한데, 가끔 불안할 때가 있어요. 테스트는 나중에 추가하려나? 설계는 괜찮은 건가? 파일이 너무 커지는 거 아닌가? 사람이 개발할 때는 자연스럽게 거치는 고민들인데, AI한테는 명시적으로 시키지 않으면 넘어가 버리는 부분이죠. Superpowers는 이런 고민을 플러그인 하나로 해결하려는 시도입니다. Jesse Vincent가 만든 이 클로드 코드 플러그인은 TDD, 체계적 디버깅, 브레인스토밍 같은 소프트웨어 엔지니어링 방법론을 Claude의 워

AWS Bedrock으로 AI 모델 사용하기

AWS Bedrock으로 AI 모델 사용하기

요즘 AI 기능을 서비스에 통합하려는 기업이 정말 많죠. 그런데 OpenAI나 Anthropic 같은 AI 제공업체의 API를 직접 쓰려면 각 업체마다 별도로 계정을 만들고 API 키를 관리해야 하고 비용 청구도 따로 받게 됩니다. 이미 AWS 인프라를 쓰고 있는 조직이라면 이게 꽤 번거로운 일이에요. AWS Bedrock은 이런 고민을 해결해주는 서비스입니다. 여러 AI 회사의 파운데이션 모델(Foundation Model)을 AWS 환경 안에서 통합된 API로 호출할 수 있게 해주거든요. 기존에 사용하던 IAM 권한 체계와 AW

Oxc로 자바스크립트 린팅과 포맷팅을 압도적으로 빠르게

Oxc로 자바스크립트 린팅과 포맷팅을 압도적으로 빠르게

자바스크립트 프로젝트를 하나 세팅하려면 설치해야 할 도구가 한두 개가 아닙니다. 코드 린팅에는 ESLint, 포맷팅에는 Prettier, 트랜스파일링에는 Babel이나 SWC, 번들링에는 Webpack이나 Vite... 각각 다른 팀이 다른 언어로 만든 도구들을 조합해서 쓰다 보니 설정 파일만 여러 개, 플러그인 간 버전 충돌에 빌드 속도는 답답하고. 😩 이 파편화된 자바스크립트 도구 생태계를 하나로 통합하겠다는 프로젝트가 있는데요, 바로 Oxc입니다. 이번 포스팅에서는 Oxc가 무엇이고, 어떤 도구들로 구성되어 있으며, 실제 프

클로드 코드 상태줄: 터미널 하단을 나만의 대시보드로

클로드 코드 상태줄: 터미널 하단을 나만의 대시보드로

클로드 코드로 긴 작업을 하다 보면 궁금한 게 생깁니다. 컨텍스트 윈도우를 얼마나 쓴 거지? 비용은 지금 얼마쯤 됐지? 매번 /cost나 /model을 쳐서 확인할 수 있긴 한데 작업 흐름이 끊기죠. 상태줄(statusline)은 이런 정보를 터미널 하단에 항상 띄워주는 기능입니다. 셸 스크립트 하나로 컨텍스트 사용량이나 비용, Git 브랜치 같은 걸 실시간 대시보드처럼 꾸밀 수 있어요. 한번 설정해두면 작업 흐름을 끊지 않고 세션 상태를 한눈에 파악할 수 있습니다. 상태줄이 뭔가요? 상태줄은 클로드 코드 화면 맨 아래에 붙는 커스

스펙 주도 개발: 바이브 코딩을 넘어 AI 에이전트와 일하는 법

스펙 주도 개발: 바이브 코딩을 넘어 AI 에이전트와 일하는 법

"장바구니 기능 만들어줘." 코딩 에이전트에게 이렇게 요청하면 뭔가 그럴듯한 코드가 나옵니다. 그런데 결과를 보면 내가 원했던 것과 미묘하게 다릅니다. 상품 수량 변경이 빠져 있거나 할인 적용 로직이 내 의도와 다릅니다. 합계를 계산하는 방식이 요구사항과 안 맞기도 하죠. 에이전트가 멍청한 걸까요? 아닙니다. 내가 원하는 걸 충분히 명확하게 전달하지 않은 겁니다. 이런 식으로 분위기에 맡겨 코드를 생성하는 걸 **바이브 코딩(Vibe Coding)**이라고 부릅니다. 대략적인 의도만 던지고 에이전트가 알아서 해주길 바라는 거죠. 간

Discord