Respan이 Rust AI 게이트웨이의 기능 전부를 플러그인으로 분리한다

Hacker News11일 전

Respan이 공개한 것은 LLM 호출을 한 엔드포인트로 묶어주는 흔한 게이트웨이가 아니다. 코어를 최소한으로 남기고 프로바이더, 프로토콜, 모달리티, 보안 기능까지 전부 플러그인으로 떼어낸 Rust 기반 오픈소스 AI 게이트웨이다. YC W24 배치 소속인 이 팀은 2024년부터 LiteLLM 위에 자사 게이트웨이를 얹어 수천 개 조직에 서비스를 제공해 왔고, 그 운영 경험이 구조를 백지에서 다시 설계하게 만들었다.

설계의 출발점은 Nginx다. 코어는 들어온 이벤트를 알맞은 플러그인으로 넘기는 일만 하고, 나머지는 등록된 모듈이 처리한다. OpenAI·Anthropic·Gemini 같은 프로바이더, 채팅·실시간 음성·MCP 같은 프로토콜, 이미지·비디오 같은 모달리티, 폴백·스마트 라우팅·PII 마스킹 같은 신뢰성 및 보안 기능이 모두 같은 계층에서 플러그인으로 취급된다.

프로바이더 추가 비용이 낮다는 점을 강조한다. Mistral 어댑터는 22줄짜리 파일 하나이고, Groq가 토큰 사용량을 별도 필드에 넣는 식의 프로바이더별 예외도 각각 독립된 플러그인과 테스트로 관리된다. 게이트웨이 코어에는 손대지 않고도 자체 프로바이더나 기능을 붙일 수 있다는 것이 이 구조의 핵심 주장이다.

호환성도 플러그인 조합만으로 확장된다. OpenAI SDK로 Claude나 Gemini를 호출하는 수준을 넘어, 도구 호출과 이미지, 추론 프로토콜을 게이트웨이가 자동으로 처리한다. OpenAI Realtime API로 만든 앱이 Gemini Live를 상대할 수 있고, MCP를 직접 구현하지 않은 채팅 앱도 게이트웨이에 설정된 MCP 도구를 그대로 쓸 수 있다. 다만 모든 기능이 1대1로 옮겨지는 것은 아니라고 선을 긋는다.

요청 처리 흐름은 이렇다. 어댑터가 들어온 HTTP 또는 WebSocket 연결을 가장 먼저 인식한 클라이언트 포맷에 넘기고, 그 포맷이 요청을 타입이 붙은 입출력 이벤트의 양방향 스트림으로 노출한다. 코어는 플러그인을 등록 순서대로 실행하며, 각 플러그인은 프로바이더를 고르거나 스트림을 걸러내고 감싸거나, 추가 호출을 하거나, 응답을 반환하거나, 요청을 거부할 수 있다. 이후 프로바이더 포맷이 업스트림 연결을 연다.

같은 API를 쓰는 경우에는 원본 바이트가 그대로 통과한다. 클라이언트와 프로바이더가 같은 포맷을 쓰고 어떤 플러그인도 페이로드를 건드리지 않았다면 프로토콜 고유 필드까지 보존된다. 공유 구조체에 해당 필드가 없더라도 원래 형식으로 남겨뒀다가 되돌려 쓰는 방식이다. 포맷이 다를 때는 메시지, 도구 호출, 결과, 스트림, 사용량에 대한 공통 타입을 거쳐 변환한다. 이 스트림 모델 하나로 단발성 HTTP 요청과 오래 유지되는 양방향 세션을 함께 표현한다.

이런 재설계가 나온 배경에는 운영 부채가 있다. LiteLLM을 감싸는 래퍼 코드가 어느 시점 10만 줄을 넘겼고, 올해 1월에는 평범한 LiteLLM 업그레이드가 간헐적 연결 오류를 일으켜 롤백해야 했다. 원인은 아직 규명되지 않았고, 이후로는 업스트림 수정 사항을 직접 백포트하는 방식으로 버티고 있다. 패치를 계속 덧대는 접근이 장기적으로 지속 가능하지 않다고 판단한 지점이다.

코드는 GitHub에 MIT 또는 Apache-2.0 라이선스로 공개돼 있다. 호스팅 플랫폼을 쓰지 않고 로컬에서 직접 빌드해 프로바이더 키를 넣고, 기존 클라이언트의 base URL만 바꾸면 된다. 수익은 게이트웨이를 대신 운영하며 관측성과 평가, 통합 과금을 얹어주는 호스팅 서비스에서 낸다.

실무 관점에서 눈여겨볼 부분은 확장 지점이 코어 밖으로 밀려났다는 것이다. 라우팅, 도구, 필터링, 관측성, 에이전트 보안 같은 요구가 생길 때 게이트웨이 포크를 유지하는 대신 플러그인 하나를 추가하는 쪽으로 선택지가 생긴다. 저장소의 PLUGINS.md가 작성법을 안내하고, 생태계를 키우는 것이 사실상의 로드맵이다.

주의할 점도 분명하다. 현재는 pre-alpha 단계다. HN 댓글에서는 Rust 플러그인이 컴파일 타임에 묶이는지 인터프리트되는지에 대한 질문이 나왔고, 다른 댓글은 프로바이더를 기본 내장한 완성형 제품 대신 플러그인 체계를 택할 이유가 있느냐며 공급망 보안 리스크를 지적했다. 플러그인 생태계가 커질수록 누가 만든 모듈을 신뢰할 것인가는 도입하는 팀이 직접 판단해야 할 몫으로 남는다.