Originally posted on bees.bot.
저희의 최신 영화는 '아무것도 당신의 컴퓨터를 떠나지 않는다'입니다. 그래서 저는 Bees 코드를 검토하며, 이 주장을 확인하기 위해 이것이 인터넷에 보내는 모든 요청을 나열했습니다.
간단히 말해: 로컬 모델을 실행할 때, 사용자의 프롬프트, 파일, 에이전트의 작업 및 메모리는 컴퓨터 안에 머무릅니다. 모델은 llama-server에서 실행되며, 이 서버는 127.0.0.1에만 리스닝하므로 외부 장치에서는 접근할 수 없습니다. Bees에는 충돌 보고(crash reporting), 분석(analytics) 또는 추적 코드(tracking code)가 포함되어 있지 않습니다.
하지만 기본적으로 여전히 네 가지 항목이 전송되며, 그중 하나는 저를 놀라게 했습니다. 패킷 로그에서 직접 발견하는 것보다 제가 말씀드리는 것이 낫습니다.
아무것도 하지 않아도 전송되는 것들
app.bees.bot/api/config. Bees는 시작할 때마다 서버에 로그인 설정이 어떻게 되어 있는지 문의합니다. 계정 세부 정보나 토큰은 보내지 않으며, 웹 요청이 일반적으로 포함하는 내용(IP 주소 및 사용자 에이전트)만 전송합니다. 로그인하지 않아도 발생합니다. 앱에는 이를 끌 수 있는 스위치가 없습니다. BEES_ACCOUNT_API_URL 환경 변수를 설정하면 다른 곳을 가리키게 할 수 있습니다.
- 업데이트 확인(The update check). 시작 시와 6시간마다 Bees는
github.com의 GitHub 릴리스에서 bees-update.json 파일을 가져옵니다. 이 요청에는 사용자 데이터가 포함되지 않습니다.
첫 번째 메모리 설정.
로컬 메모리는 기본적으로 활성화되어 있어 에이전트들이 배운 것을 기억할 수 있습니다. Bees가 처음 시작될 때, uv를 사용하여 이를 설치합니다. 이 과정에서 GitHub에서 Python 3.12를 다운로드하고, PyPI(pypi.org)에서 메모리 패키지들을 다운로드하며, Hugging Face에서 작은 임베딩 모델인 sentence-transformers/all-MiniLM-L6-v2를 다운로드합니다. 사용자의 메모리는 이러한 요청의 일부가 아닙니다. 메모리의 읽기 및 쓰기는 오직 로컬 모델로만 전송됩니다. 코드에는 주석으로 '절대로 메모리를 호스팅되는 모델로 전달하지 마십시오(Never forward memories to a hosted model)'라고 명시되어 있습니다. 설정에서 워크스페이스별로 메모리 기능을 끌 수 있습니다. 이 임베딩 모델의 최신 버전을 서비스가 시작할 때마다 Hugging Face에서 확인하는지 아직 확실하지 않아, 클린 설치를 통해 확인한 후 이 게시물을 업데이트하겠습니다.
사용자 컴퓨터에서 나가는 것(what leaves your computer)에 있는 도움말 페이지에서는 로그인 확인 및 모델 다운로드에 대해서는 언급하지만, FreeLLMAPI 목록이나 메모리 설치에 대해서는 언급하지 않습니다. 해당 페이지도 수정될 예정입니다.
사용자가 또는 에이전트가 요청할 때만 외부로 전송되는 것
이러한 데이터들은 먼저 어떤 행동(action)이 필요합니다. 각각의 경우, 필요한 행동 내용만을 보내고 그 외에는 아무것도 보내지 않습니다.
- 모델 다운로드(Downloading a model). Qwen3 4B 모델을 켤 때, Bees는 https를 통해
huggingface.co에서 약 2.5 GB 크기의 파일을 하나 다운로드하고 고정된 체크섬과 비교합니다. 사용자가 직접 GGUF 링크를 붙여넣을 수도 있습니다.
- 웹 검색 및 페이지 읽기(Web search and page reading). 모든 에이전트는 웹 검색 및 페이지 읽기 도구를 가지고 있으며, 이를 켜고 끌 수 있는 스위치는 없습니다. 검색은
search.brave.com, html.duckduckgo.com, lite.duckduckgo.com 그리고 bing.com으로 질의를 함께 보냅니다. 뉴스 검색은 Google News RSS를 사용합니다. 페이지 읽기는 해당 페이지를 가져옵니다. 이 기능들은 에이전트가 정보를 찾아보겠다고 결정할 때만 작동하며, 이때 나가는 작업 정보는 검색 질의(search query) 부분뿐입니다. 만약 환경 변수에 DEEPSEEK_API_KEY가 설정되어 있다면 Bees는 추가적인 검색 도구를 시작하며, 이는 api.deepseek.com으로 질의를 보냅니다.
- Bees 계획 수립(Ask Bees planning). Bees에게 설정을 계획하도록 요청할 때, 공용 애드온 레지스트리인
registry.modelcontextprotocol.io에서 검색하거나 github.com과 raw.githubusercontent.com에서 스킬 팩을 읽을 수 있습니다. Skills 화면도 동일한 호출을 사용합니다.
- Apps 화면(The Apps screen). 이 화면을 열면 우리의 앱 목록이
bees-bot.github.io에서 가져와집니다.
- 애드온(Add-ons). 기본적으로 활성화된 것은 없습니다. 애드온을 추가할 때, 처음 실행되는 경우 npm이나 PyPI에서 패키지를 다운로드할 수 있으며, 이후 해당 애드온은 자신이 속한 서비스에 연결합니다.
- Gmail, 캘린더 및 드라이브(Gmail, Calendar and Drive). 이들은 사용자가 직접 연결한 후에만 Google과 통신합니다.
- 클라우드 모델(Cloud models). API 키 제공업체나 Codex와 같은 구독을 선택하면, 프롬프트가 해당 제공업체로 전송됩니다. 이것이 하나를 선택하는 전체 목적이며, 로컬 모델에서는 이런 일이 일어나지 않습니다.
- Bees 클라우드 팀(A Bees Cloud team). 로그인하여 팀에 가입하면, Bees는 15초마다
app.bees.bot과 동기화됩니다. 제가 로그인된 Mac에서 직접 세어보니, Bees가 해당 서버로 약 20개의 열린 연결을 사용하고 있었습니다.
내가 확인한 내용 및 발견 사항
Bees 내부의 에이전트 런타임에는 원격 측정(telemetry) 기능이 있습니다. Bees는 DSH_TELEMETRY_DISABLED=1로 시작하며, 저는 이 설정을 런타임 코드를 통해 원격 측정을 비활성화하는 지점까지 추적했습니다. 심지어 원격 측정이 활성화되어 있어도 피드백을 보내야만 업로드됩니다.
앱 창은 외부의 어떤 것도 로드할 수 없습니다. 콘텐츠 보안 정책(content security policy)이 앱 자체와 127.0.0.1만을 허용합니다. 외부 폰트, 스크립트 또는 이미지는 로드되지 않습니다. 도움말 링크는 클릭할 때 사용자의 브라우저에서 열립니다.
메모리 서비스에는 추적 코드가 있지만, 엔드포인트가 설정된 경우에만 내보내지고 Bees는 이를 설정하지 않습니다. Bees가 보관하는 장치 ID 파일은 팀에 로그인했을 때만 사용됩니다.
제가 확인하지 못한 부분
이 목록은 코드 읽기를 통해 작성되었습니다. 아직 새로 설치한 상태에서 네트워크를 관찰해 본 적은 없습니다. 이 Mac에서는 이미 실행 중이며 팀에 로그인된 Bees만 볼 수 있었기 때문에, 깨끗한 첫 실행(clean first run)을 보여주지는 못합니다.
코드상으로 제가 정리하지 못한 두 가지가 있습니다. 메모리 재랭커는 Hugging Face를 가리키지만, 다운로드 파일을 어디에 저장하는지 찾을 수 없어서 가져오는지 알 수 없습니다. 그리고 메모리 서비스의 한 라이브러리는 로드될 때 GitHub에서 가격 목록을 가져올 수 있지만, Bees는 이를 로드해서는 안 되는 다른 경로를 사용합니다. 다음에는 로컬 모델만 있는 상태로 깨끗하게 설치한 후, 처음 15분간의 트래픽을 관찰하고 제가 본 것을 게시하겠습니다.
변경 사항
무료 클라우드 모델을 선택한 적이 없는 경우 FreeLLMAPI 목록은 실행되지 않아야 합니다. 업데이트 확인 기능에는 스위치가 있어야 합니다. 도움말 페이지에는 메모리 설치가 나열되어야 합니다. 이 세 가지가 제가 먼저 수정할 내용입니다.
만약 제가 놓친 요청 사항을 발견하면 이슈를 열어주세요. Bees는 Mac, Windows, Linux에서 무료이며 오픈 소스입니다. bees.bot에서 다운로드하고 코드는 github.com/Bees-bot/bees-desktop에 있습니다.