Tailscale에서 재미있는 오픈소스를 하나 공개했습니다.
이름은 Tailcat.
한마디로 설명하면
“서로 다른 네트워크에 있는 두 컴퓨터를 계정이나 복잡한 VPN 설정 없이 잠깐 안전하게 연결하는 도구”
입니다.
Tailscale에서는 아예 이렇게 표현했습니다.
“Tailscale without Tailscale, by Tailscale”
Tailscale의 네트워크 기술은 사용하는데 Tailscale 계정도, Tailnet에 장비를 등록하는 과정도 필요 없습니다.
쉽게 말하면 이런 겁니다
집에 있는 Mac과 클라우드 서버가 있다고 해보겠습니다.
클라우드 서버에서 웹을 개발하고 있는데 브라우저는 로컬 Mac에서 보고 싶습니다.
서버에서는
localhost:3000
으로 개발 서버가 떠 있습니다.
보통은 서버의 3000 포트를 외부에 열거나 SSH 터널을 만들어
ssh -L 3000:localhost:3000 user@server
같은 식으로 연결합니다.
물론 저도 이런 상황이면 SSH 터널 하나 뚫으면 되긴 합니다.
그런데 Tailcat은 이런 “두 환경을 잠깐 연결하는 것” 자체를 훨씬 가볍게 만드는 도구입니다.
클라우드 서버에서 Tailcat을 실행하고 생성된 접속 정보를 로컬 Mac에 넘겨 연결하면,
클라우드 서버의 localhost 서비스를 로컬에서 접근하는 식으로 활용할 수 있습니다.
결국 느낌은
클라우드 서버
localhost:3000
↓
Tailcat
↓
로컬 Mac
localhost:3000
↓
브라우저
이런 구조입니다.
서버에서 개발하면서 브라우저는 내 Mac에서 localhost처럼 열어놓고 확인하는 식입니다.
바이브코딩하면서 원격 서버에서 Claude Code나 Codex를 돌리는 분들이라면 꽤 익숙한 상황일 것 같습니다.
그런데 Tailcat은 SSH 터널 대체품만은 아닙니다
단순히 저 용도라면 사실 SSH 터널만으로 충분합니다.
Tailcat이 재미있는 건 SSH 계정이나 고정 IP를 전제로 하지 않고 임시 환경끼리 연결하기 좋다는 점입니다.
IP 주소도 몰라도 되고,
Tailscale 로그인도 필요 없고,
Tailnet에 장비를 등록할 필요도 없습니다.
WireGuard로 암호화하고 NAT Traversal을 이용해서 가능하면 두 장비가 직접 P2P로 붙습니다.
직접 연결하기 어려운 환경이면 Tailscale의 DERP Relay를 이용할 수도 있습니다.
그리고 OS의 Routing Table이나 TUN Device를 건드리지 않고 userspace에서 동작합니다.
그래서 오래 관리할 서버보다 잠깐 만들었다 없애는 VM이나 Sandbox 같은 환경에서 특히 재미있어집니다.
실제로 어떻게 쓰나?
구조 자체는 단순합니다.
접속받을 환경에서 Tailcat 실행
→ 접속에 필요한 긴 주소 생성
→ 다른 환경에 전달
→ Tailcat으로 연결
끝입니다.
이 연결 위에서 데이터를 전달하거나 파일을 옮기고, SOCKS Proxy 등을 이용해 기존 프로그램의 트래픽을 전달하는 식으로 사용할 수 있습니다.
예를 들어 로컬 Mac에서 작업 중인데 AI Agent는 클라우드 VM에 띄워놓았다면,
Mac
↕
Tailcat
↕
Agent VM
이렇게 필요한 두 환경만 연결해놓을 수 있습니다.
그런데 이게 왜 갑자기 나왔을까?
여기서부터가 더 재미있습니다.
사실 Tailcat은 최근 만든 프로젝트가 아닙니다.
Tailscale의 Brad Fitzpatrick이 2023년 9월, 10시간짜리 비행기 안에서 영화를 보면서 재미 삼아 만들었다고 합니다 ㅋㅋ
내부에서 가끔 사용하다 거의 잊혀졌는데 최근 다시 쓰이기 시작했습니다.
이유가 AI Agent입니다.
AI에게 컴퓨터를 주기 시작했습니다
요즘 Claude Code나 Codex 같은 Agent를 사용하다 보면 결국 AI가 로컬 코드만 수정하는 데서 끝나지 않습니다.
서버에 들어갑니다.
VM을 만듭니다.
다른 장비에서 테스트합니다.
파일을 옮깁니다.
브라우저를 실행합니다.
문제가 생기면 다른 환경을 만들고 다시 테스트합니다.
그런데 Agent가 움직이는 범위가 넓어질수록 문제가 생깁니다.
AI에게 내 네트워크 전체를 열어주기는 무섭습니다.
그렇다고 Agent가 작업할 때마다 계정을 만들고 VPN에 장비를 등록하고 방화벽과 네트워크를 설정하는 것도 귀찮습니다.
Tailcat은 이 중간에 들어갑니다.
“내 네트워크에 들어와.”
가 아니라
“이번 작업 동안 이 컴퓨터하고만 연결해.”
에 가까운 겁니다.
실제로 Tailscale 개발자도 Agent에 이렇게 사용했습니다
공식 글에 나온 사례가 재미있습니다.
AI Agent에게 여러 세대의 Raspberry Pi를 연결해서 테스트하게 하고,
Sandbox EC2에서 다른 EC2를 계속 재부팅하면서 실험하게 하고,
Windows Host에서 Hyper-V VM을 계속 만들고 없애면서 Go Runtime 버그를 디버깅하게 했다고 합니다.
사람이 직접 환경을 만들고 네트워크를 연결하고 테스트했다면 상당히 귀찮았을 작업입니다.
Agent에게 필요한 컴퓨터와 Tailcat을 주고 직접 실험하게 만든 겁니다.
개인적으로는 Tailcat 자체보다 이 흐름이 더 재미있습니다
지금까지 개발도구는 대부분 사람이 사용하는 것을 전제로 만들어졌습니다.
사람이 로그인하고,
사람이 권한을 받고,
사람이 서버에 접속하고,
사람이 명령어를 실행합니다.
그런데 이제 개발도구의 사용자가 AI Agent가 되기 시작했습니다.
Agent에게는 화려한 관리자 화면보다
쉽게 생성할 수 있고,
CLI로 제어할 수 있고,
필요한 곳에만 접근할 수 있고,
자동화하기 쉽고,
작업이 끝나면 버릴 수 있는
도구가 훨씬 잘 맞습니다.
2023년에는 재미로 만든 작은 프로그램이었는데 AI Agent 시대가 오면서 갑자기 용도가 생긴 것도 그래서인 것 같습니다.
바이브코딩도 결국 여기까지 갈 것 같습니다
지금은 바이브코딩이라고 하면 대부분 AI에게 코드를 작성시키는 걸 먼저 떠올립니다.
그런데 실제로 하다 보면 점점 범위가 넓어집니다.
코드 작성
→ 테스트
→ 브라우저 확인
→ 서버 접근
→ 배포
→ VM 생성
→ 다른 장비 연결
→ 실험
→ 결과 확인
결국 Agent가 개발자의 컴퓨터 안에서만 일하는 게 아니라 실제 인프라를 돌아다니기 시작합니다.
그러면 다음 문제는 자연스럽게
“AI에게 어디까지 접근 권한을 줄 것인가?”
가 됩니다.
앞으로 Agent용 개발도구가 하나의 영역이 될지도 모르겠습니다
Agent용 Browser.
Agent용 Sandbox.
Agent용 Runtime.
Agent용 인증과 권한관리.
그리고 Tailcat 같은 Agent 친화적인 네트워크 도구.
기존에는
“개발자가 쓰기 편한가?”
가 중요했다면 이제는
“AI Agent가 쓰기 편한가?”
도 개발도구의 중요한 기준이 될 것 같습니다.
물론 Tailcat을 Tailscale 대신 쓰자는 이야기는 아닙니다
여러 사용자와 여러 서버를 장기간 연결하고 ACL, 계정, 정책, 감사 같은 관리가 필요하다면 기존 Tailscale 같은 관리형 네트워크가 맞습니다.
단순히 내 Mac과 서버를 연결하는 거라면 SSH 터널이 가장 익숙하고 간단할 수도 있습니다.
Tailcat이 재미있는 지점은
“계속 연결해서 관리할 네트워크”
보다는
“지금 이 작업을 위해 두 환경만 잠깐 연결하자”
에 있습니다.
특히 몇 분 쓰고 사라지는 VM이나 AI Agent Sandbox가 계속 만들어지는 시대에는 이런 방식이 꽤 잘 맞아 보입니다.
그리고 주의할 점도 있습니다
Tailcat이 만들어주는 접속 정보 자체가 사실상 접근 권한입니다.
비밀번호처럼 다뤄야 합니다.
GitHub에 올리거나 로그에 그대로 남기거나 공개된 곳에 공유하면 안 됩니다 ㅋㅋ
개인적으로 가장 재미있는 건 결국 이 부분입니다.
3년 전에 만들어놓고 거의 잊혀졌던 도구가 AI Agent 때문에 다시 살아났습니다.
AI가 기존 개발도구를 사용하는 수준을 넘어 개발도구 자체가 AI가 사용하기 좋은 형태로 다시 만들어지고 있습니다.
AI가 코드를 짜는 시대 다음에는
“AI에게 컴퓨터와 서버를 어떻게 안전하게 내어줄 것인가?”
가 꽤 중요한 문제가 될 것 같습니다.
Tailcat은 그 변화를 보여주는 작은 사례가 아닐까 싶네요 ㅎㅎ
원문:
https://tailscale.com/blog/tailcat