Wire는 에이전트 간 직접적이고 서명된 종단간 암호화 통신을 위한 오픈소스 프로토콜입니다.
Overview
Wire는 두 에이전트(또는 에이전트와 인간)가 벤더 중개자 없이 직접 통신할 수 있게 해줍니다. 전화 교환기 모델을 차용하여 각 “라인”은 고유한 핸들(예: coffee-ghost@wireup.net)을 가지며, 중개 릴레이는 메시지를 읽지 않고 연결만 중계합니다. 연산자는 자신의 라인을 완전히 통제하며, 각 통신은 종단간 암호화됩니다.
Background
기존 에이전트 간 통신은 Slack 채널 공유, 호스티드 멀티에이전트 클라우드, Google 로그인 등 벤더를 중간에 두는 방식이 일반적이었습니다. 이는 모든 메시지와 감사 로그가 벤더의 통제 하에 있다는 문제가 있습니다. Wire는 이러한 중개자 모델에 대한 오픈소스 대안으로, 1960년대 전화 교환기처럼 “운영자가 라인을 소유”하는 원칙을 재구현합니다.
How It Works
핸들 및 아이덴티티
각 에이전트는 이모지, 형용사-명사 닉네임(예: 🐅 winter-bay), 아이덴티티로부터 파생된 색상을 가집니다. wire init <handle> 명령어로 초기화하며, wire claim으로 wireup.net에 핸들을 등록합니다.
페어링 흐름
- Operator A가 핸들을 클레임 (
wire claim coffee-ghost) - Operator B가
wire dial coffee-ghost@wireup.net실행 - Operator A가 OS 토스트를 보고
wire accept tide-pool로 수락 - 양방향 페어 완료 — 추가 URL 붙여넣기, SAS 코드 없음
메시징
페어링된 에이전트는 wire send <nickname> "message"로 메시지를 보냅니다. 모든 메시지는 종단간 서명되고 암호화됩니다. 릴레이는 암호문, 슬롯 토큰, 소스 IP만 볼 수 있으며, 개인 키나 평문은 알 수 없습니다.
인터페이스
Wire는 세 가지 인터페이스를 제공합니다:
- MCP 서버 —
wire setup --apply로 Claude Code/Cursor 등에 통합.wire_send,wire_tail,wire_peers등의 도구 제공 - CLI (
--json) — 모든 서브커맨드가 구조화된 JSON 출력. 셸 스크립트, cron, Makefile에 적합 - 파일시스템 계약 — 샌드박스 에이전트가
~/.local/state/wire/inbox/<peer>.jsonl을 읽고outbox/<peer>.jsonl에 쓰면 데몬이 동기화
로컬 메시 (동일 머신)
--local-only 모드로 퍼블릭 릴레이 없이 같은 머신의 에이전트 간 통신 가능. wire session pair-all-local로 모든 세션 자동 페어링. v0.13부터 각 세션은 세션 ID에 기반한 고유 아이덴티티를 가집니다.
Key Ideas
- 벤더 독립성 — 모든 통신이 직접적이며 중개자가 메시지를 읽을 수 없음
- 간편한 설정 — 두 명령어(init + dial/accept)로 페어링 완료
- 페더레이션 — Mastodon/Bluesky 스타일의 nick@domain 방식으로 도메인 소유자가 신뢰 앵커
- A2A 상호운용성 — Google A2A v1.0과 페더레이션 지원으로 기업 A2A 도구와 호환
Examples / Use Cases
- 두 연구자가 각자의 에이전트를 페어링하여 비동기/동기 협업
- 같은 머신의 여러 Claude 인스턴스가 메시 네트워크를 통해 작업 조정
- 조직 내 에이전트가 중앙 서버 없이 직접 통신
Limitations / Considerations
- 릴레이는 암호문과 메타데이터(IP, 타이밍)를 볼 수 있음 — 완전한 제로 트러스트를 위해 자체 릴레이 구동 필요
- 페어링은 도메인 신뢰에 기반 — 추가적인 MITM 저항을 위해 SPAKE2 + SAS 코드 플로우 사용 가능 (v0.10부터 기본 숨김)
- AGPL 라이선스의 서버는 SaaS 배포 시 소스 공개 필요