데이터 흐름 참조
Kitewell이 닿을 수 있는 모든 곳, 그곳이 받는 것, 그리고 멈추는 방법입니다. 컴퓨터 밖으로 나가는 것의 자세한 버전입니다.
데이터가 가는 곳
섹션 제목: “데이터가 가는 곳”항목마다 무엇이 보내지는지, 누가 받는지, 어떻게 멈추는지를 적었습니다.
- 모델 단계, 어시스턴트, 실패 진단, 또는 모델이 읽는 시트 열. 프롬프트와 그것이 읽는 것(실행 출력, 로그, 페이지 텍스트, 스크린샷, 시트 행, 지식)을, 에이전트와 모델에서 고른 모델의 공급자에게 보냅니다. 멈추려면 직접 운영하는 서버의 모델을 고르세요.
- Kitewell 기본 제공 모델. 같은 내용을 보냅니다. 받는 곳은 Dagu Cloud이며, Dagu Cloud는 이를 OpenRouter에 넘기고 프롬프트 텍스트는 보관하지 않습니다. 워크스페이스, 기기, 모델, 사용한 크레딧만 보관합니다. Dagu Cloud에 로그인한 컴퓨터에서만 쓰입니다. 멈추려면 직접 추가한 모델을 고르세요.
- 예/아니요, 선택, 척도로 판정하는 시트 열. 같은 내용에 더해 열마다의 질문과 각 선택지의 의미를 보냅니다. 받는 곳은 판정 모델의 공급자인 OpenRouter, TypeSafe, 또는 직접 지정한 주소입니다. 멈추려면 대신 게시된 값을 옮겨 적는 열을 고르세요. 그런 열에는 모델이 필요 없습니다.
- AI 에이전트에 요청 작업. 프롬프트와 에이전트가 작업 폴더에서 읽는 모든 것을, 그 도구의 약관에 따라 보냅니다. 받는 곳은 그 명령줄 도구가 로그인하는 서비스입니다. 멈추려면 다른 작업을 쓰세요.
- 주소로 API 가져오기, 또는 어시스턴트에게 웹 페이지 확인 요청. 자격 증명 없이 문서나 페이지만 요청합니다. 받는 곳은 입력한 주소입니다. 멈추려면 대신 OpenAPI 파일을 업로드하세요.
- 웹사이트, 명령, 파일, API, Docker, 원격 단계. 단계가 보내는 것을 보냅니다. 받는 곳은 단계가 지정한 사이트, 서버, API, 이미지 레지스트리, 컴퓨터입니다. 멈추려면 단계를 제거하세요.
- 이메일 단계. 메시지와 요청한 검색을 보냅니다. 받는 곳은 메일함의 메일 서버, Google 메일함이라면 Gmail API이며, 로그인은 Google이나 Microsoft를 거칩니다. 멈추려면 메일 계정에서 메일함 연결을 끊으세요.
- 알림. 무슨 일이 있었는지, 긴급도, 프로젝트, 워크플로, 돌아가는 링크를 보냅니다. 받는 곳은 메일 서버, Slack이나 Teams 주소, PagerDuty, 또는 직접 만든 웹후크입니다. 멈추려면 채널을 제거하세요.
- Dagu Cloud 로그인. 워크스페이스의 요금제, Kitewell 버전, 이 컴퓨터의 ID와 이름을 6시간마다 보냅니다. 받는 곳은 Descarty가 운영하는 Dagu Cloud입니다. 멈추려면 기기 설정에서 로그아웃하세요.
- 어시스턴트의 웹 검색. 검색할 때마다의 단어와 Kitewell이 표시되는 언어를 보냅니다. 받는 곳은 Dagu Cloud이며, Dagu Cloud는 이를 Serper에 넘기고 검색어 텍스트는 보관하지 않습니다. 워크스페이스, 기기, 사용한 크레딧만 보관합니다. 멈추려면 기기 설정에서 로그아웃하세요. 그러면 어시스턴트가 주소를 물어봅니다.
- 프로젝트 동기화. 그 프로젝트의 워크플로, 모델, 서버, API 연결, 대기열과 레지스트리, 시크릿 이름과 설명, 시트, 지식 페이지, 릴리스, 그리고 메일함을 다루는 워크플로라면 로그인한 누구의 기기가 그것을 실행하는지를 보냅니다. 받는 곳은 Dagu Cloud입니다. 멈추려면 그 프로젝트에서 동기화 중지를 선택하세요.
- 동기화된 프로젝트의 실행. 실행마다의 워크플로, 상태, 트리거, 시각, 실패한 단계 이름을 이 컴퓨터의 Kitewell 버전 및 시스템과 함께 2분마다 보냅니다. 받는 곳은 Dagu Cloud이며, 매개변수, 로그, 출력, 시트 값은 절대 보내지 않습니다. 멈추려면 동기화 중지를 선택하세요. Dagu Cloud에서 실행 상태를 끄면, 컴퓨터가 실행하고 있다는 사실만 남습니다.
- Kitewell에 연결한 ChatGPT 또는 Claude. 앱이 요청하는 것을 보냅니다. 워크플로, 실행과 로그, 아티팩트, 시트, 지식, 그리고 편집 권한이 있으면 이 컴퓨터에 있는 Excel 파일의 행입니다. 받는 곳은
mcp.kitewell.app에 있는 Kitewell 릴레이를 거친 앱입니다. 멈추려면 원격 액세스를 끄거나 앱을 폐기하세요. - 앱이나 API 키가 구독한 이벤트. 이벤트마다 프로젝트, 워크플로, 실행, 끝난 방식, 시각, 실패한 단계 이름, 기다리는 단계의 질문, 시트 실행의 건수, 또는 일정을 놓친 이유를 보냅니다. 받는 곳은 구독자가 지정한 주소입니다. 멈추려면 그 구독에서 제거를 선택하세요.
- 워크플로의 웹후크. 나가는 것은 없습니다. 요청이 들어와 헤더와 본문을 담은 채
hooks.kitewell.app의 Kitewell 릴레이에서 최대 7일 동안, 이 컴퓨터가 가져갈 때까지 기다립니다. 멈추려면 그 웹후크에서 끄기를 선택하세요. - 업데이트 확인. 사용자나 작업에 대해 아무것도 알리지 않는 요청을 보냅니다. 받는 곳은 워크플로 엔진은 GitHub, Kitewell 앱은 kitewell.app입니다. 엔진의 확인은 엔진 자동 업데이트를 끄면 멈춥니다. 앱은 요청할 때만 확인합니다.
- Windows에서 WebView2 설치. Microsoft에 다운로드 요청을 보냅니다. 보통은 설치 프로그램에 런타임이 들어 있으므로, 런타임이 없을 때만 일어납니다.
Kitewell은 그 밖에는 아무것도 보내지 않습니다. 앱에는 사용 추적도, 충돌 보고도, 분석 도구도 없습니다. Descarty는 Kitewell 기본 제공 모델이나 어시스턴트의 웹 검색으로 보내는 요청 안에서만, 실행이 다루는 데이터를 받습니다.
컴퓨터 밖으로 절대 나가지 않는 것
섹션 제목: “컴퓨터 밖으로 절대 나가지 않는 것”| 무엇 | 보관 위치 |
|---|---|
| 시크릿 값 | 프로젝트마다의 엔진 안에 암호화되어 있고, 로그에서는 가려지며, 다시 읽히거나 내보내지거나 백업되거나 동기화되지 않습니다. 동기화된 프로젝트에는 시크릿의 이름과 설명만 담기며, 값은 컴퓨터마다 따로 둡니다. 시크릿을 참고하세요 |
| 로그인 정보 | 메일함 연결, 저장된 웹사이트 로그인, SSH 키와 신뢰한 호스트, 이미지 레지스트리 비밀번호. 모두 암호화되거나 본인 사용자만 읽을 수 있는 파일에 있고, 모두 백업에서 제외됩니다. 이들을 봉인하는 키는 운영 체제가 보관하는 기기 키로 다시 봉인되어 있습니다 |
| 실행 로그와 아티팩트 | 데이터 폴더에 프로젝트마다 기본 30일 동안. 실행 및 로그를 참고하세요. 동기화된 프로젝트는 실행마다의 상태와 실패한 단계 이름만 보고하며, 매개변수, 로그, 아티팩트, 시트 값은 보내지 않습니다 |
| 어시스턴트 대화와 실패 진단 | 데이터 폴더. 이 컴퓨터의 대화 하나(백업에서 제외)와 프로젝트마다의 진단 |
| Excel 워크북 | 파일이 있는 컴퓨터에서 그 자리에서 읽고 씁니다. 연결된 시트는 파일 이름과 어느 컴퓨터에 있는지만 담고, 셀은 담지 않습니다. 경로, 결과가 돌아갈 행, 실행 취소용으로 보관하는 사본은 그 컴퓨터에 남습니다. Excel 자동화를 참고하세요 |
| 워크플로 정의와 지식 | 내보내거나, 공유하거나, 동기화하기 전까지 데이터 폴더 |
이와 관련해 알아 둘 점이 두 가지 있습니다. 내려받은 스냅샷에는 실행 출력과 실행 취소용으로 보관한 Excel 사본이 들어 있으므로, 내려받은 스냅샷은 민감한 파일로 다루세요.
모델이나 연결된 앱에게 워크북의 셀을 읽어 달라고 하면 셀이 컴퓨터 밖으로 나갑니다. 언제 그런지는 한계 알아 두기에 있습니다.
AI가 실행될 곳 고르기
섹션 제목: “AI가 실행될 곳 고르기”모든 AI 기능은 에이전트와 모델에서 추가한 모델이나 Kitewell 기본 제공 모델을 씁니다.
- 공급자는 Anthropic, OpenAI, Google Gemini, OpenRouter, Z.ai, OpenCode Zen, 또는 Ollama나 vLLM처럼 직접 운영하는 OpenAI 호환 서버입니다. 판정 모델은 OpenRouter나 TypeSafe를 씁니다.
- 직접 운영하는 서버는 프롬프트, 페이지 텍스트, 스크린샷을 내 네트워크 안에 둡니다. 작은 로컬 모델은 대개 브라우저나 데스크톱을 조작하지 못하므로 작업마다 고르세요.
- OpenRouter를 거칠 때, Kitewell이 직접 하는 읽기(어시스턴트, 실패 진단, 시트의 결과 열)는 받은 내용을 저장하지도 학습에 쓰지도 않는 공급자로만 보내 달라고 OpenRouter에 요청합니다. 워크플로 안의 모델 단계는 엔진이 보내며 그렇게 요청하지 않습니다.
- Kitewell 기본 제공 모델은 Dagu Cloud에 로그인한 컴퓨터에서 키가 필요 없고, 워크스페이스의 크레딧으로 비용을 냅니다. Dagu Cloud는 넘겨주는 모든 요청을, 저장하지도 학습에 쓰지도 않는 공급자로만 보내 달라고 OpenRouter에 요청합니다. 데스크톱 단계에서는 Kitewell Personal과 Team에서만 쓸 수 있습니다.
비밀번호처럼 웹사이트 단계나 데스크톱 단계가 입력하는 값은 %name%으로 적습니다. 모델에는 이름만 전달됩니다.
한계 알아 두기
섹션 제목: “한계 알아 두기”- 워크플로는 Kitewell을 실행하는 사람의 권한으로 실행됩니다. 명령 단계는 데이터 폴더를 포함해 사용자가 읽을 수 있는 모든 것을 읽을 수 있습니다. 신뢰하는 정의와 명령만 실행하세요.
- 데스크톱 단계의 스크린샷에는 화면의 모든 창이 들어갑니다. 보이면 안 되는 것은 닫거나, 다른 사람이 쓰지 않는 컴퓨터를 쓰세요.
- 이메일은 신뢰할 수 없는 입력입니다. 이메일의 텍스트가 명령이나 명령을 실행하는 에이전트에 닿으면 그것을 조종할 수 있습니다. 워크플로가 그렇게 하면 확인 후 실행이 경고합니다.
- 웹후크 요청도 신뢰할 수 없는 입력입니다. 웹후크가 보낸 쪽의 서명을 확인하지 않으면, URL을 아는 누구나 그 워크플로를 시작할 수 있습니다. 웹후크로 워크플로 시작하기를 참고하세요.
- 어시스턴트나 연결된 앱에게 Excel 파일을 읽어 달라고 하면 셀이 넘어갑니다. 파일에서 시트를 만들 때는 열 목록과 예시 행 10개가, 행을 직접 지목해 요청할 때는 그 행들이 넘어갑니다.
- 백업과 프로젝트 내보내기는 암호화되지 않습니다. 시크릿 값과 로그인 정보는 빠지지만, 정의, 시트, 지식, 실행 출력, 설정은 적힌 그대로 들어 있습니다. 공유 저장소로 옮기기 전에 직접 암호화하세요.
- Slack 주소 같은 알림 채널 자격 증명은 시스템 키체인이 아니라, 기기 키로 봉인된 기기의 자격 증명 파일에 보관됩니다.
- MCP나 REST를 통한 원격 액세스는 이 컴퓨터의 로컬 주소로만 Kitewell에 닿습니다. 예외는 Kitewell 릴레이를 거치는 ChatGPT와 Claude, 그리고 직접 HTTPS를 앞에 둔 클라이언트입니다. MCP와 API 액세스를 참고하세요.
데이터 폴더 위치
섹션 제목: “데이터 폴더 위치”- macOS:
~/Library/Application Support/Kitewell/ - Windows:
%LOCALAPPDATA%\Kitewell\
백업과 복구에 각 부분에 무엇이 있는지, Kitewell 제거에 모두 지우는 방법이 있습니다.
세부 정보
섹션 제목: “세부 정보”모델 공급자
섹션 제목: “모델 공급자”모델 단계는 api.anthropic.com, api.openai.com, generativelanguage.googleapis.com, openrouter.ai, api.z.ai, opencode.ai, 또는 직접 지정한 기본 주소에 닿습니다. 판정 모델은 HTTPS로만 openrouter.ai/api/alpha나 api.typesafe.ai/v1에 닿습니다. 모델 양식에서 공급자를 고르면 그 공급자의 공개 모델 목록도 OpenRouter나 OpenCode Zen에서 가져옵니다. 이 요청에는 키도, 사용자에 관한 정보도 없습니다.
시트를 읽을 때는 행마다 최대 48KiB를 보냅니다. 행의 라벨과 입력, 단계마다의 결과, 실행이 게시한 출력, 실행이 만든 텍스트 파일 최대 5개, 그리고 마지막 단계와 실패한 단계의 로그 끝부분입니다.
Dagu Cloud
섹션 제목: “Dagu Cloud”요청은 User-Agent: Kitewell/<version>과 함께 HTTPS로 console.dagu.sh에 갑니다. 256KiB가 넘는 동기화 문서는 Dagu Cloud가 돌려주는 서명된 주소를 통해 Dagu Cloud 저장소로 업로드됩니다. 이 컴퓨터의 클라우드 자격 증명은 데이터 폴더 맨 위, 설정 옆에 있는 파일이며 백업에는 절대 들어가지 않습니다.
웹 검색은 console.dagu.sh로 가고, 그곳에서 google.serper.dev의 Serper로 전달되어 제목, 주소, 발췌문이 돌아옵니다.
Kitewell 기본 제공 모델에 대한 요청은 컴퓨터 자체의 자격 증명이 아니라, 일주일 동안 유효하고 매일 갱신되는 실행 토큰과 함께 console.dagu.sh로 가며, Dagu Cloud가 이를 openrouter.ai로 전달합니다.
동기화된 프로젝트의 실행 상태는 2분마다, 또는 진행 중인 실행이 바뀌면 더 일찍 console.dagu.sh로 갑니다. 도착하지 않은 보고는 다시 보냅니다. Dagu Console은 실행을 14일, 일별 합계를 13개월, 알림을 해결된 뒤 90일 동안 보관합니다.
릴레이
섹션 제목: “릴레이”릴레이는 기기마다 객체 하나를 두는 Cloudflare Worker입니다. 컴퓨터가 WebSocket으로 릴레이에 바깥쪽으로 연결하므로, 내 네트워크에서는 들어오는 연결을 기다리는 것이 없습니다.
릴레이는 이 컴퓨터의 이름, Kitewell 버전, 마지막으로 연락이 온 시각, 그리고 도구 목록 호출에 대한 마지막 응답을 보관하며, 기기에서 마지막으로 연락이 온 지 30일이 지나면 모두 지웁니다. MCP 요청과 응답은 저장되지 않고 지나갑니다.
웹후크의 본문과 헤더는 예외입니다. 기기가 가져갈 때까지 보관되며, 최대 7일, 대기 중인 요청 최대 1,000개, 본문 하나에 512KiB, 헤더 16KiB, URL 하나에 분당 60개 요청까지입니다.
웹후크 토큰은 해시로만 보관됩니다. 릴레이는 자체 로그를 남기지 않습니다. 웹후크는 Kitewell Personal과 Team에 포함됩니다.
이벤트 전달은 릴레이를 거치지 않습니다. 이 컴퓨터에서 구독자의 주소로 바로 갑니다. HTTPS만, 공개 주소로만, 프록시 없이, 리디렉션 없이, 최대 256KiB, Standard Webhooks 형식으로 서명되며, 최대 24시간 동안 다시 시도합니다.
업데이트
섹션 제목: “업데이트”엔진 확인은 api.github.com에서 dagucloud/dagu의 최신 릴리스를 읽고, 다운로드는 그 저장소의 GitHub 릴리스 파일에서 받습니다.
Kitewell 앱은 빌드에 지정된 HTTPS 주소에서 서명된 매니페스트를 읽고, 설치 프로그램을 실행하기 전에 SHA-256을 확인합니다. Windows에서 WebView2 설치는 go.microsoft.com에서 Microsoft의 부트스트래퍼를 받아, 실행하기 전에 Microsoft의 서명을 확인합니다.
저장 데이터 암호화
섹션 제목: “저장 데이터 암호화”시크릿은 엔진의 AES-256-GCM 레지스트리를 씁니다. 메일함 비밀번호와 새로 고침 토큰은 기기마다의 메일 키로 AES-256-GCM 봉인됩니다.
엔진의 키, 메일 키, 자격 증명 파일은 각각 하나의 기기 키로 봉인됩니다. Windows에서는 그 PC만 여는 머신 범위의 DPAPI 블롭이고, Mac에서는 본인 사용자만 읽을 수 있는 파일입니다. 시크릿을 참고하세요.
이 중 어느 것도 백업에 들어가지 않으며, 다른 컴퓨터로 복사한 데이터 폴더로는 어느 것도 열 수 없습니다. 데이터 폴더와 백업 폴더는 본인 사용자 계정만 읽을 수 있습니다.