본문으로 건너뛰기

오프라인과 개인정보 보호 ​

iRoof.top은 채팅을 컴퓨터에 보관합니다. 컴퓨터에서도 실행되는 모델을 쓰면, 아무것도 컴퓨터 밖으로 나갈 필요가 없습니다. 오프라인 모드는 그것을 습관이 아니라, 앱이 강제하는 규칙으로 만듭니다.

로컬에서 일어나는 일 ​

단계실행 위치네트워크
가져오기, 분석, 말투 프로필사용자의 컴퓨터없음
저장데이터 폴더의 JSON 파일과 미디어없음
기록 검색, 공유 링크 PIN, 미디어 라이브러리사용자의 컴퓨터없음
사진, 스티커, GIF, 동영상 설명미디어 모델, AI로 설명을 누를 때만항목마다 모델 엔드포인트로 한 번의 요청
음성 텍스트 변환미디어 모델. 음성 메시지에서 AI로 설명을 누르거나 녹음할 때모델 엔드포인트로 한 번의 요청
응답채팅 모델. 메시지를 보낼 때(또는 방문자가 보낼 때)모델 엔드포인트로 요청
긴 기록 압축채팅 모델, 응답의 일부로. 기록이 예산을 넘을 때모델 엔드포인트로 추가 요청 한 번

가져오기는 모델을 절대 호출하지 않습니다. 첫 번째 호출은 메시지를 보내거나, 설명을 누르거나, 음성 메시지를 녹음할 때 일어납니다. 응답은 모델에 내보낸 기록(기록 예산까지), 말투 프로필, 미디어 설명을 보냅니다. 그러므로 모델이 어디서 실행되는지가 채팅이 어디로 가는지를 결정합니다. 클라우드 엔드포인트는 채팅을 받고, 사용자의 컴퓨터에 있는 모델은 받지 않습니다.

완전히 오프라인으로 실행하기 ​

  1. Ollama 또는 LM Studio를 설치하거나, llama.cpp의 llama-server를 실행하세요.
  2. 도구 호출을 지원하는 채팅 모델을 내려받으세요. 사진과 스티커를 설명받고 싶다면 비전 모델도 내려받으세요.
  3. 설정에서 엔드포인트와 모델을 고르고, 오프라인을 켜세요.
서버기본 URL
Ollamahttp://localhost:11434/v1
LM Studiohttp://localhost:1234/v1
llama.cpp llama-serverhttp://localhost:8081/v1 (기본 포트 8080은 iRoof.top이 쓰므로 llama-server --port 8081로 시작하세요)
  1. 테스트를 누르세요. 작은 요청을 보내고 응답한 모델과 호스트를 보여 줍니다. 네트워크를 끄고도 계속 채팅할 수 있습니다.

데스크톱 앱은 설정에서 구성합니다. 셸이나 .env 파일은 읽지 않지만(데스크톱 앱 참고), 실행된 환경에 ROOFTOP_OFFLINE과 OPENAI_*가 있으면 그것을 따릅니다. 서버는 환경(과 .env)을 읽습니다.

sh
# --offline은 ROOFTOP_OFFLINE=1과 같습니다
OPENAI_BASE_URL=http://localhost:11434/v1 OPENAI_MODEL=llama3.1 rooftop --offline
sh
docker run -p 8080:8080 -v rooftop-data:/data \
  --add-host=host.docker.internal:host-gateway \
  -e ROOFTOP_OFFLINE=1 \
  -e OPENAI_BASE_URL=http://host.docker.internal:11434/v1 -e OPENAI_MODEL=llama3.1 \
  ghcr.io/irooftop/rooftop

Docker에서 localhost는 컨테이너 자신이므로 host.docker.internal을 사용하세요(--add-host 옵션은 Linux에서만 필요합니다). Ollama가 연결을 거부하면 모든 인터페이스에서 수신하도록 설정하세요(OLLAMA_HOST=0.0.0.0).

오프라인 모드가 강제하는 것 ​

오프라인 모드
채팅, 기록 요약, 미디어 설명, 음성 텍스트 변환엔드포인트가 로컬이 아니면 거부
HTTP로 연결하는 MCP 서버로컬이 아니면 거부. 설정에 오류로 표시
인터넷 공유(<이름>.iroof.top)꺼짐: 릴레이 클라이언트가 시작되지 않고 스위치가 잠김
Telegram 봇, 자체 봇이든 공유 봇이든시작되지 않음
URL을 통한 GIF로컬이 아닌 URL에서는 AI가 GIF를 보낼 수 없음
Wi‑Fi 공유 링크작동함

거부된 요청은 어떤 연결도 만들어지기 전에 실패하며, 메시지가 이유를 설명합니다: 오프라인 모드: https://openrouter.ai 는 로컬 엔드포인트가 아닙니다. 로컬 엔드포인트에서 다른 호스트로의 리디렉션도 거부됩니다. 모드가 켜져 있는 동안 사이드바 머리글에 작은 오프라인 배지가 나타납니다. 설정은 저장됩니다. --offline / ROOFTOP_OFFLINE=1은 설정과 관계없이 모드를 켜며, 설정에서는 끌 수 없습니다.

"로컬"의 의미 ​

localhost, 루프백(127.0.0.0/8, ::1), 사설 네트워크 주소(10/8, 172.16/12, 192.168/16, fc00::/7), 링크 로컬 주소, 그리고 *.local과 *.internal 이름(예: host.docker.internal)입니다. 가정 네트워크의 다른 컴퓨터에 있는 모델은 사용자의 네트워크를 벗어나지 않으므로 로컬로 간주됩니다. 이름은 적힌 대로 판단되며, 조회되지 않습니다.

오프라인 모드가 확인할 수 없는 것 ​

  • stdio MCP 서버는 사용자의 컴퓨터에서 실행되는 프로그램입니다. iRoof.top은 그것을 시작하지만 무엇에 연결하는지는 볼 수 없으므로, 로컬에 머물 것이라고 믿는 것만 추가하세요.
  • 음성 텍스트 변환은 Whisper /audio/transcriptions API가 아니라 채팅 API(input_audio 부분)를 사용합니다. 거기서 오디오를 받는 로컬 서버와 모델이 필요합니다. 사용자의 것이 받지 않으면, 음성 메시지는 여전히 저장되고 전송되며 텍스트만 빠집니다.
  • 이미지와 음성 생성은 MCP 도구로만 존재합니다. 오프라인에서는 그것을 위해 로컬 MCP 서버를 사용하세요.
  • 함께 나누는 사람들은 자기 브라우저에서 사용자의 Wi‑Fi 링크를 엽니다. 오프라인 모드는 이 앱을 관리할 뿐, 그들의 기기는 관리하지 않습니다.

친구와 안전하게 공유하기 ​

링크일어나는 일
Wi‑Fi http://<사용자의 IP>:8737/s/<이름>로컬 네트워크를 벗어나지 않음
인터넷 https://<이름>.iroof.top/s/<이름>앱은 허브로 나가는 WebSocket 연결을 하나 열고, 그 연결을 통해 방문자의 HTTP 요청과 앱의 응답을 전달합니다

인터넷 링크를 쓰더라도 내보내기, 채팅, 모델은 사용자의 컴퓨터에 남고, 허브는 그중 어느 것도 저장하지 않습니다. 허브가 저장하는 것은 계정 기록뿐입니다. 사용자의 이름, 비밀의 해시, 그리고 마지막으로 본 시각입니다.

이것이 제공하지 않는 것에 대해서도 분명히 하겠습니다. 허브는 TLS를 종료하므로, 어떤 리버스 프록시와 마찬가지로 기술적으로는 그곳을 지나는 트래픽을 볼 수 있습니다. 방문자가 입력하는 내용, 페르소나의 응답, 그리고 링크가 방문자에게 읽도록 허용한 기록(방문자는 내보내기를 읽을 수 있음, 기본값은 없음)입니다. 허브가 전달하는 것은 방문자 페이지(/s/…, /api/s/…, 페이지 리소스)뿐이며, 양방향의 쿠키를 버립니다. 소유자 화면과 설정은 허브를 통해서는 절대 접근할 수 없습니다. 그 정도의 신뢰도 부담스럽다면 Wi‑Fi 링크를 쓰거나, 자체 릴레이 허브를 운영하세요. 공유 링크에 관한 자세한 내용.

오프라인 모드에서는 iroof.top 릴레이가 꺼집니다. Wi‑Fi 링크는 계속 작동합니다.

Telegram 봇 ​

Telegram에서 답변하기는 사용자의 그룹에 다음을 게시합니다.

  • 새 방문자 메시지(이름, 링크 이름, 텍스트 또는 설명이나 텍스트 변환이 붙은 미디어 라벨, 그리고 그들이 답장하는 메시지의 짧은 미리 보기)와 AI의 응답.
  • 내보낸 기록은 절대 게시되지 않습니다. 오래된 메시지는 전송되지 않습니다.

봇에는 종단간 암호화가 없습니다. 텍스트는 Telegram을 평문으로 지나갑니다. 공유 봇을 쓰면 허브도 지나가는데, 허브는 어떤 그룹이 어느 계정에 속하는지만 저장합니다. 자체 봇은 허브를 거치지 않고 Telegram과 직접 통신합니다. 오프라인 모드는 둘 다 끕니다.

데이터가 가는 곳 ​

데이터가는 곳
내보내기, 채팅, 설정, API 키사용자의 컴퓨터에 있는 데이터 폴더
가져오기와 말투 프로필어디에도 가지 않음
기록, 말투 프로필, 사용자의 메시지선택한 모델 엔드포인트, 응답할 때마다
사진과 음성미디어 모델 엔드포인트, 설명을 누르거나 음성 메시지를 녹음할 때
Wi‑Fi 링크의 방문자 메시지사용자의 컴퓨터와 모델 엔드포인트
인터넷 링크의 방문자 메시지허브(전송 중), 사용자의 컴퓨터, 모델 엔드포인트
Telegram을 통한 방문자 메시지추가로 Telegram, 그리고 공유 봇이라면 허브
오프라인 모드로컬 모델 엔드포인트만, Wi‑Fi 링크만, Telegram 없음

MIT 라이선스로 배포됩니다.