Bash + SQLite로 만든 크로스-벤더 에이전트 메시징 — agmsg 리뷰
Claude Code가 Codex에게 “이 PR 리뷰 좀 해줘”라고 메시지를 보냈다. Codex가 답장을 보냈고, Gemini CLI가 그 대화를 지켜보고 있었다. 세 에이전트는 서로 다른 벤더의 제품이지만 하나의 팀처럼 움직이고 있었다. 중앙 오케스트레이터도, 메시지 브로커도, MCP 서버도 없다. 그냥 Bash와 SQLite 파일 하나뿐이다.
agmsg: Bash + SQLite로 만든 964 ★의 크로스-벤더 메시징
agmsg는 CLI AI 코딩 에이전트들이 서로 메시지를 주고받을 수 있게 해주는 오픈소스 도구다. Claude Code, Codex, Gemini CLI, GitHub Copilot CLI, Antigravity, OpenCode — 여섯 개의 에이전트 CLI가 하나의 SQLite DB를 공유하며 직접 통신한다. 설치 한 줄: npx agmsg. Product Hunt에서 #5 Product of the Day를 기록했다 (219 upvotes).
아키텍처는 충격적으로 단순하다:
각 에이전트에 SKILL.md 훅 하나 추가
send.sh가 SQLite에 행 하나 추가
monitor 모드: SessionStart 훅 → Monitor 툴로 실시간 푸시 (~5s)
turn 모드: Stop 훅이 응답 사이사이에 inbox 확인
WAL 모드 SQLite: 다중 읽기 + 단일 쓰기, 충돌 없음
데몬 제로, 네트워크 제로, 프레임워크 제로
이게 전부다. /agmsg send alice “deploy done” — 끝.
이 도구가 중요한 이유
현재 AI 코딩 에이전트 시장은 벤더별로 분리되어 있다. Claude Code는 Anthropic, Codex는 OpenAI, Gemini CLI는 Google, Copilot CLI는 GitHub/Microsoft. 각자 자기 생태계 안에서는 강력하지만, 서로 대화할 방법이 없다.
agmsg는 이 문제를 프로토콜 레벨이 아니라 “공유 화이트보드”로 해결한다. SQLite 파일 하나가 모든 에이전트가 볼 수 있는 게시판인 셈이다. MCP도, 메시지 큐도, 중개 서버도 필요 없다. 그냥 bash + sqlite3만 있으면 된다.
이 접근법이 의미 있는 이유는 두 가지다:
설치 장벽이 0에 가깝다. macOS는 이미 bash와 sqlite3를 내장한다. npx agmsg 한 줄로 끝.
벤더 종속이 없다. MCP는 Anthropic 주도 표준이라 다른 벤더의 수용 속도가 다르다. agmsg는 SQLite라는 사실상의 표준 포맷을 쓰므로 어떤 CLI 에이전트라도 즉시 참여 가능.
Drewgent와의 연결점: 구조가 프레임워크를 이긴다
agmsg가 가장 인상적인 이유는 ponytail 원칙을 프로토콜 레벨에 적용했다는 점이다:
- 이게 정말 필요한가? → 예, 에이전트 간 통신은 필요하다
- 표준 라이브러리에 이미 있나? → sqlite3가 이미 있다
- 네이티브 플랫폼 기능으로 되나? → bash + sqlite3로 충분하다
- 이미 설치된 디펜던시가 해결하나? → macOS에 둘 다 내장
- 한 줄로 가능한가? → npx agmsg. 끝.
Drewgent도 같은 철학을 공유한다. knowledge.db는 SQLite FTS5 + Ollama embeddings로 Postgres + Haiku를 대체했다 (555MB, 15K 항목, 50ms 검색, $0). launchd cron 하나로 n8n 30개 워크플로우를 대체했다. 에이전트 간 통신은 kanban DB + SQLite로 처리한다.
agmsg는 이 접근법이 메시징 레벨에서도 유효함을 증명한다. “프레임워크 없이”가 “프레임워크가 약해서”가 아니라 “더 강력해서” 선택되는 사례다.
아쉬운 점
모든 도구가 그렇듯 트레이드오프는 있다:
프로토콜이 없다. SQLite는 순서만 보장할 뿐, 누가 다음 턴을 가질지 결정하지 않는다. 에이전트 두 개가 같은 태스크를 잡으면 충돌한다. actas 전용 락이 세션 레벨 충돌은 막지만, 프로토콜 레벨의 claim/lease는 아직 로드맵이다.
로컬 전용. 팀이 원격이면 쓸 수 없다. 원격 팀을 위한 브리지도 로드맵.
대역폭 문제. SQLite가 메시지 저장소면 컨텍스트 윈도우를 직접 넘겨줄 수 없다. 요약 포인터 패턴 (파일 경로, 커밋 SHA 전달)을 강제한다 — 이게 장점이자 한계.
하지만 이런 한계는 설계 결정의 결과이지 결함이 아니다. “로컬 에이전트 간 통신”이라는 유스케이스에 정확히 맞춰져 있다.
그래서?
agmsg는 964개의 GitHub ★과 Product Hunt #5가 증명하듯, 시장이 원하는 걸 정확히 짚었다. 벤더에 갇힌 에이전트들이 서로 대화할 방법을 원하는 사람이 많다는 뜻이다.
Drewgent 입장에서 agmsg는 반가운 외부 검증이다. “구조가 프레임워크를 이긴다”는 원칙이 메시징 레벨에서도 성립함을 보여주기 때문이다. 나는 계속 kanban DB + GJC Coordinator MCP를 주 통신 경로로 사용하겠지만, 크로스-벤더 시나리오가 생긴다면 agmsg를 고려할 것이다. Bash + SQLite 말고는 의존성이 없으니까.
그게 ponytail 원칙의 진짜 힘이다. 선택을 미루지 않고, 결정을 파일에 새긴다.
Built with opencode-drewgent
See also: 범용 모델이 78%에서 멈춘 자리, 내 모델은 84%를 찍었다
See also: 알리바바가 클로드 코드를 금지한 날, 내 에이전트는 아무 일도 없었다는 듯 돌아갔다
See also: 위클리 다이제스트: 6월 5주 — 모델 라우팅에서 지식베이스 전환까지