감사
Slopographic의 작동 방식
앱은 브라우저에서 실행됩니다. 이 페이지는 앱이 사용하는 브라우저 기능, 앱이 보낼 수 있는 모든 네트워크 요청, 기기에 저장되는 내용을 나열하므로 각 설명을 직접 확인할 수 있습니다. 여기 있는 모든 내용은 공개 저장소의 소스 코드와 대조해 확인했습니다.
간단히 말하면
- 파일은 기기에 남습니다. 앱에는 파일을 받는 서버가 없고, 여는 파일이나 저장하는 파일을 업로드하는 코드도 없습니다. 예외는 AI 버튼이 직접 연결한 AI 서비스로 보내도록 허용한 사본뿐입니다.
- 디스크에서 고른 파일은 브라우저의 File System Access API를 통해 읽고 씁니다. 내가 고른 폴더에만 접근합니다. 브라우저 API를 보세요.
- 데이터는 이 기기의 브라우저 저장소(IndexedDB와 localStorage)에 보관됩니다. 저장되는 내용을 보세요.
- 일부 요청은 사이트 밖으로 나가지만, 그때는 모든 외부 요청에 나열된 경우뿐입니다. 확인한 다운로드, 연결한 클라우드 백업, 직접 키로 연결한 AI 서비스, 켠 환율 정보, 수락한 분석이나 광고가 그 예입니다.
- AI 버튼은 기기 안의 모델, Ollama나 LM Studio처럼 내 컴퓨터에서 도는 서버, 또는 Claude, ChatGPT, Gemini 같은 서비스를 위한 내 키와 함께 작동합니다. 키를 쓰면 입력한 내용이 브라우저에서 그 제공업체로 바로 갑니다. AI 버튼을 보세요.
- 홈페이지는 방문할 때마다 Google Analytics 코드를 불러오며, 분석은 거부 상태로 설정됩니다. 다른 페이지는 분석을 수락한 뒤에만 불러옵니다. 광고는 수락한 뒤에만 불러옵니다.
쉽게 말해서
내 파일은 어디로 가나요?
어디에도 가지 않습니다. 사진, PDF, 스프레드시트를 열면 앱은 이 브라우저 탭 안에서 파일을 읽습니다. 업로드 단계는 없고, 파일을 받을 수 있는 Slopographic 서버도 없습니다. 저장한 내용은 내 디스크나 이 기기의 브라우저 저장소로 갑니다. 직접 키로 AI 서비스를 연결하고 허용한 경우에만 사본이 그 서비스로 갑니다(AI 버튼 참고).
앱이 왜 가끔 무언가를 내려받나요?
대부분 사람이 쓰지 않는 큰 파일이 필요한 기능이 있습니다. 배경을 제거하거나, 글자를 읽거나, 음성을 받아 쓰는 AI 모델, 동영상을 변환하는 비디오 엔진, 다른 문자 체계를 위한 글꼴이 그 예입니다. 이 파일들은 기능을 쓸 때만 내려받으며, 앱이 무엇인지와 크기가 얼마인지 먼저 알려 줍니다. 브라우저에 보관하므로 한 번만 받습니다. 내 파일은 이 요청에 절대 포함되지 않습니다.
오프라인에서도 작동하나요?
네, 처음 방문한 뒤에는 작동합니다. 사이트의 자체 파일은 브라우저가 보관하므로 연결 없이도 앱을 열고 작업할 수 있습니다. 아직 받지 않은 다운로드(모델이나 글꼴)만 네트워크가 필요합니다.
무언가 설치해야 하나요?
아니요. 휴대폰, 태블릿, 컴퓨터의 브라우저에서 앱을 열고 바로 시작하면 됩니다. 처음 방문한 뒤에는 인터넷 없이도 계속 작동합니다. 홈 화면에 아이콘을 두고 싶나요? iPhone이나 iPad에서는 공유를 누른 다음 "홈 화면에 추가"를 누르세요. Android에서는 브라우저 메뉴를 열고 "홈 화면에 추가"를 누르세요. 컴퓨터에서는 주소 표시줄의 설치 아이콘을 클릭하세요. App Store나 Google Play는 필요 없고, 파일은 기기에 남습니다.
AI 버튼은 무엇을 어디로 보내나요?
고른 모델에 따라 다릅니다. 기기 안의 모델(WebGPU가 필요하고 한 번 내려받음)은 이 탭 안에서 답하며, 질문한 내용은 기기를 떠나지 않습니다. Ollama, LM Studio 같은 서버는 내 컴퓨터에서, 또는 내가 설정한 네트워크 안의 컴퓨터에서 실행됩니다. Claude, ChatGPT, Gemini, OpenRouter, Groq 같은 서비스를 위해 내 키를 쓰면, 메시지가 브라우저에서 그 제공업체로 바로 가며 Slopographic 서버는 중간에 없습니다. 그 서비스의 약관과 요금이 적용됩니다. 파일 사본이나 작업 이미지는 패널이 묻고 내가 허용한 뒤에만 보냅니다(요청 한 번, 방문 동안, 또는 항상으로 허용할 수 있으며, AI 권한에서 취소할 수 있습니다). AI가 만들거나 바꾼 이미지(이미지 생성, AI로 편집)는 OpenAI, Gemini, 또는 내 키를 쓰는 OpenRouter처럼 내가 연결한 이미지 서비스가 필요합니다. 브라우저 안에서는 그림을 그리지 않습니다. 기기 안의 모델과 내 컴퓨터의 모델은 비용이 없습니다. Gemini, Groq, Mistral은 무료 요금제가 있고, OpenRouter에는 무료 모델이 있습니다(패널에 무료로 표시됩니다). 키는 탭을 닫을 때까지 이 탭에 머물고, "이 기기에서 기억하기"를 체크했을 때만 이 브라우저에 남습니다. OpenRouter는 키를 붙여넣는 대신 "OpenRouter로 로그인"을 누를 수도 있습니다. 브라우저가 openrouter.ai로 이동하고, 거기서 접근을 허용하면 이 페이지로 돌아와 OpenRouter 자체에 이 브라우저용 키를 요청합니다. 로그인은 브라우저와 OpenRouter 사이에서 직접 이루어지며, Slopographic 서버를 거치지 않습니다. 키 사용료는 내 OpenRouter 크레딧에서 나가며, 붙여넣은 키와 똑같이 보관됩니다. openrouter.ai/settings/keys에서 한도를 정하거나 취소할 수 있고, "키 지우기"를 누르면 이 브라우저에서 키가 삭제됩니다.
AI 에이전트가 앱을 쓸 수 있나요?
WebMCP를 지원하는 브라우저에서는 가능합니다. 브라우저의 어시스턴트나 브라우저 확장 프로그램으로 연결된 내 컴퓨터의 에이전트가 앱의 명령, File convert 변환과 워크플로를 실행하고, 파일을 열고, 저장하고, 내려받을 수 있습니다. 에이전트는 파일을 ID로 지정하고, 작업은 이 탭에서 실행되며, 앱은 아무것도 업로드하지 않습니다. 다만 에이전트는 도구가 돌려준 내용을 볼 수 있습니다. 작업을 삭제하거나 교체하는 동작은 먼저 묻습니다. WebMCP는 초기 초안입니다. Chrome에서는 시험 버전(149~156)으로 제공되고 플래그 뒤에 있으며, Edge는 플래그 뒤에 있고, Firefox와 Safari에는 아직 없습니다. 설정에서 끄거나, 도움말의 AI 에이전트에서 끌 수 있습니다.
직접 확인할 수 있나요?
네. 소스 코드는 공개되어 있고, 아래 섹션은 앱이 사용하는 모든 브라우저 기능과 보낼 수 있는 모든 요청을 해당 파일과 함께 나열합니다. 브라우저의 개발자 도구를 열어 네트워크 탭을 보면서 확인할 수도 있습니다. 파일을 열고 저장하는 것은 아무것도 보내지 않습니다.
Claude Code 등 AI 앱에서 Slopographic 사용하기
곧 제공: Claude Code, Codex, Cursor, VS Code, Claude Desktop 같은 내 컴퓨터의 AI 앱이 브라우저에 열린 Slopographic 앱을 사용할 수 있습니다. 실제 명령, 변환, 워크플로를 쓰며, 파일은 들어가고 결과는 내 컴퓨터에 파일로 나옵니다. 이 기능은 AI 앱이 내 컴퓨터에서 시작하는 작은 프로그램인 Slopographic MCP 서버를 통해 작동합니다. 계정은 필요 없고, AI 앱 자체 외에는 설치할 것도 없습니다.
- Claude Code:
/plugin marketplace add slopographic/claude-plugin을 입력한 다음/plugin install slopographic@slopographic을 입력하세요. 한 번만 하면 됩니다. /slopographic:slop-connect를 입력하세요(원하면photoslop같은 앱 이름을 붙이세요). Claude Code가 브라우저에서 Slopographic을 열고 짧은 코드를 보여 줍니다.- Chrome이 이 사이트가 이 기기의 앱과 서비스를 사용해도 되는지 묻습니다. 허용을 고르세요. 페이지가 내 컴퓨터의 Claude Code에 닿으려면 필요합니다. 페이지는 내 컴퓨터(127.0.0.1)하고만 통신하며, 네트워크의 다른 기기와는 통신하지 않습니다.
- 페이지에 코드를 입력하세요. 그러면 페이지 모서리에 “Claude Code가 연결되었습니다 · 연결 해제”가 나타납니다. 연결을 끝내려면 연결 해제를 누르거나 탭을 닫으세요.
탭마다 따로 짝지어지며, 코드는 한 번만 쓸 수 있습니다. 코드가 없으면 내 컴퓨터의 다른 것은 이 페이지를 쓸 수 없습니다. 작업을 삭제하거나 교체하는 동작은 AI 패널과 마찬가지로 페이지에서 먼저 묻습니다. 모든 Slopographic 페이지는 명령 팔레트에서 연결할 수 있습니다. Ctrl+K(Mac은 ⌘K), 그다음 “AI 앱 연결…”을 선택하세요.
Codex, Gemini CLI, Cursor, VS Code, Windsurf, Claude Desktop 등 다른 AI 앱의 설정은 스크립트가 실행되면 여기에 나타납니다.
ChatGPT 대화는 인터넷의 서버에만 닿을 수 있으므로 아직 이 로컬 서버를 쓸 수 없습니다. ChatGPT 데스크톱 앱의 Codex는 쓸 수 있습니다.
브라우저 API와 각 사양
파일 경로는 각 API가 주로 쓰이는 곳입니다. 나머지는 저장소에서 API 이름으로 검색하세요.
| 브라우저 API | 사용 목적 | 코드 위치 | 사양 |
|---|---|---|---|
File System Access: window.showDirectoryPicker, FileSystemDirectoryHandle, createWritable | Slop Drive의 로컬 드라이브, 클라우드 동기화 백업 폴더, 갤러리 폴더 가져오기(읽기 전용), 디스크에서 AI 모델 폴더 불러오기. Chrome과 Edge에서만 가능합니다. 쓰기는 파일이 닫힐 때만 파일을 교체합니다. | drive/js/core/prov-dir.js, drive/js/ui/prov-drives.js, shared/sync/providers/local.js, gallery/js/io/source.js, shared/ai/webllm.js | wicg.github.io/file-system-access · MDN |
| IndexedDB | Slop Drive 파일, 폴더 핸들, 사업 기록, 글꼴과 AI 모델 저장소, 암호화된 로그인 토큰. 전체 목록은 저장되는 내용에 있습니다. | shared/hub.js, drive/js/core/drives-store.js, shared/data/store.js, shared/sync/tokens.js, shared/library/store.js | w3.org/TR/IndexedDB · MDN |
| localStorage | 작은 설정: 동의 선택, 클라우드 동기화 설정, 앱별 설정, Drive 보기 환경설정. | shared/consent/state.js, shared/sync/config.js, shared/profile/profile.js, drive/js/core/util.js | WHATWG HTML, Web Storage · MDN |
| sessionStorage | 클라우드 로그인 리디렉션이 진행되는 동안에만 로그인 상태를 보관합니다. 탭을 닫으면 지워집니다. | shared/sync/sync.js | WHATWG HTML, Web Storage |
| Origin Private File System | 사용하지 않습니다. 코드에 navigator.storage.getDirectory 호출이 없습니다. | 없음 | WHATWG File System |
| Service Workers | 오프라인 사용. 각 앱 페이지가 불러온 뒤 등록합니다. 같은 출처의 GET 요청에만 응답합니다. | service-worker.js, shared/pwa.js | w3.org/TR/service-workers · MDN |
| Cache Storage | 사이트 자체 파일의 저장 사본, 컷아웃 모델 파일, 내려받은 뒤의 AI 채팅 모델 파일. | service-worker.js, shared/cutout/loader.js, shared/ai/webllm.js | W3C Service Workers, Cache objects · MDN |
| Web App Manifest | 브라우저가 사이트를 앱으로 설치할 수 있게 합니다. 이름, 아이콘, 시작 페이지를 선언합니다. | manifest.webmanifest | w3.org/TR/appmanifest · MDN |
Storage Manager: navigator.storage.persist(), estimate() | 설치 후나 독립 실행 모드에서 이 사이트의 저장소를 유지하도록 브라우저에 요청합니다. Slop Storage는 브라우저에 요청하기 전에 먼저 묻습니다. 저장소가 얼마나 찼는지도 보여 줍니다. | shared/pwa.js, shared/storage/storage.js | WHATWG Storage · MDN |
| Web Workers | 무거운 작업을 페이지 밖에서 실행합니다. 이미지 컷아웃, 업스케일, AI 도구 추론, PDF 생성. | shared/cutout/cutout.js, upscale/js/engine/engine.js, aitools/common.js, pdf/js/io/build.js | WHATWG HTML, Workers · MDN |
| WebAssembly | AI 도구, 업스케일, 이미지에서 3D 변환, 얼굴 감지와 컷아웃을 위해 번들된 ONNX Runtime Web을 한 스레드로 실행합니다. 채팅 앱의 WebLLM 라이브러리도 WebAssembly 기반입니다. | aitools/workers/ort.js, upscale/js/engine/worker.js, img3d/js/model/depth.js, shared/faces/index.js, shared/ai/webllm.js | WebAssembly Core spec · MDN |
| WebGPU | 채팅 앱은 컴퓨터가 실행할 수 있는 것을 확인하고, 컷아웃 워커는 GPU 어댑터를 요청합니다. Slop AI와 모든 앱의 AI 패널에서 채팅 모델을 GPU로 실행합니다. | shared/ai/sysinfo.js, shared/cutout/worker.js, shared/ai/webllm.js | w3.org/TR/webgpu · MDN |
| WebGL 2 | 3D 미리 보기와 SlopCut의 색 보정. | 3d/js/render/stage.js, drive/js/core/render3d.js, slopcut/js/render/grade.js | Khronos WebGL 2.0 spec · MDN |
| Canvas 2D와 OffscreenCanvas | 거의 모든 앱에서 그리기, 이미지 편집, 내보내기. | 약 130개 파일이 getContext('2d')를 호출합니다. 예: photoslop/js/io/save.js | WHATWG HTML, Canvas · MDN |
| File과 Blob, 끌어 놓기 | 고른 파일이나 페이지에 끌어 놓은 파일을 엽니다. 저장하거나 공유하지 않는 한 파일은 페이지를 떠나지 않습니다. | shared/drop/, shared/preview/chrome.js | W3C File API · MDN |
Web Crypto: crypto.subtle | 내려받은 모든 파일을 저장하기 전에 SHA-256으로 확인하고, 암호화된 로그인 토큰에는 AES-GCM을 씁니다. | shared/cutout/loader.js, shared/library/store.js, shared/sync/tokens.js | w3.org/TR/WebCryptoAPI · MDN |
| Notifications | 알림용 브라우저 알림. 버튼을 눌러 허용한 뒤에만 나타납니다. | reminders/js/app.js, shared/reminders/engine.js | WHATWG Notifications · MDN |
| BroadcastChannel | 이 사이트의 열린 탭 사이에서 메시지를 주고받습니다(채널 slopographic). 브라우저 안에서만 머뭅니다. | shared/hub.js | WHATWG HTML, Broadcasting · MDN |
Web Share: navigator.share() | 공유를 누를 때만 시스템 공유 시트가 나타납니다. 그다음 시스템이 고른 앱으로 파일을 보냅니다. | shared/preview/chrome.js, ai/js/ui/speccard.js | w3.org/TR/web-share · MDN |
WebMCP: document.modelContext.registerTool() | 브라우저에 이 API가 있고 "이 앱을 AI 에이전트가 사용하도록 허용" 설정이 켜진 곳에서만, 브라우저의 AI 에이전트에 앱의 동작을 도구로 제공합니다(명령, 파일 작업, ID로 지정한 파일). 도구는 페이지 안에서 실행됩니다. 각 페이지의 head에 origin trial 토큰이 있습니다. | shared/agent/webmcp.js, shared/agent/workspace.js, shared/agent/boot.js | W3C Web Machine Learning CG draft · Chrome |
| WebSocket | “AI 앱 연결…”을 선택한 뒤에만, 내 컴퓨터의 AI 앱(Slopographic MCP 서버)과 연결합니다. ws://127.0.0.1에 연결하므로 이 컴퓨터로만 갑니다. | shared/agent/bridge.js | WHATWG WebSockets |
| Fetch | 앱의 모든 네트워크 요청. 전체 목록은 외부로 나가는 요청에 있습니다. | 약 30개 파일의 약 35개 fetch( 호출 지점(일부는 주석) | WHATWG Fetch · MDN |
이 기기에 저장되는 것
아래 모든 것은 이 기기의 이 브라우저에 보관됩니다. 여기 있는 것은 어떤 것도 서버로 보내지 않습니다. 사이트마다 자기만의 저장소가 있으므로, 다른 브라우저에서 같은 앱을 쓰면 별도의 사본을 가집니다.
| 이름 | 종류 | 담고 있는 것 | 설정 위치 |
|---|---|---|---|
slop-drive | IndexedDB | Slop Drive 파일과 폴더, 파일 내용을 포함합니다. | shared/hub.js |
slop-drive-folders | IndexedDB | 이름이 붙은 로컬 드라이브: 각 폴더 핸들과 이름. 드라이브를 제거하면 핸들만 잊습니다. | drive/js/core/drives-store.js |
slop-sync, slop-sync-local | IndexedDB | 암호화된 클라우드 로그인 토큰(추출할 수 없는 키로 AES-GCM). 고른 백업 폴더 핸들. | shared/sync/tokens.js, shared/sync/providers/local.js |
slop-data | IndexedDB | 사업 기록: 고객, 제품, 재고, 송장, 결제, 원장 항목(shared/data/schema.js). | shared/data/store.js |
slop-library | IndexedDB | 더 받기에서 설치한 글꼴과 직접 추가한 글꼴 파일. | shared/library/store.js |
slop-aitools, slop-ai | IndexedDB | 설치한 AI 도구 모델과 AI 채팅 앱의 대화. | aitools/models.js, ai/js/core/store.js |
slop-session | IndexedDB | 각 앱의 열린 보기와 저장하지 않은 초안. 다시 방문하면 하던 곳부터 이어집니다. | shared/session/session.js |
slop-consent | localStorage | 분석, 광고, 환율 선택. 고르기 전까지는 꺼져 있습니다. | shared/consent/state.js |
slop-sync | localStorage | 클라우드 동기화 설정: OAuth 클라이언트 ID와 마지막 동기화 시각. 토큰은 여기 보관하지 않습니다. | shared/sync/config.js |
slop-ai-keys | IndexedDB | AI 키는 “이 기기에서 기억하기”를 체크했을 때만 저장합니다. 체크하지 않으면 키는 이 탭(sessionStorage)에 머물다 탭을 닫으면 사라집니다. 백업에서는 제외됩니다. | shared/ai/cloud/keys.js |
slop-ai.cloud, slop-ai.imagegen, slop-ai.permissions | localStorage | 선택한 AI 서비스와 모델, 사용 한도, 그림 설정, 허용한 AI 권한. 키는 절대 저장하지 않습니다. | shared/ai/cloud/keys.js, shared/ai/imagegen/core.js, shared/ai/permissions.js |
slop-ai.signin | sessionStorage | OpenRouter로 로그인하는 동안: 로그인이 이 탭에서 시작되었음을 증명하는 일회용 PKCE 검증기와 state. 한 번 쓰고 탭을 닫으면 사라지며, 키는 절대 아닙니다. | shared/ai/cloud/signin.js |
slop.agents | localStorage | “AI 에이전트가 이 앱을 사용하도록 허용”을 끄면 “off”가 저장됩니다. 켜져 있는 동안에는 아무것도 저장하지 않습니다. | shared/agent/boot.js |
slop.bridge | sessionStorage | 이 탭이 내 컴퓨터의 AI 앱과 짝지어져 있는 동안: 포트와 짝짓기 토큰, 그래서 새로 고침 뒤에도 연결이 유지됩니다. 연결을 해제하거나 탭을 닫으면 사라집니다. | shared/agent/bridge.js |
slop-profile | localStorage | 기본값에서 바꾼 앱별 설정. | shared/profile/profile.js |
slop-drive.prefs, slop-drive.theme | localStorage | Slop Drive 보기 환경설정과 테마. | drive/js/core/util.js |
slopographic-v38 | Cache Storage | 사이트 자체 파일의 저장 사본. 사이트가 오프라인에서 작동하게 합니다. | service-worker.js |
slop-cutout-v1 | Cache Storage | 컷아웃 모델 파일. SHA-256을 확인한 뒤 저장합니다. | shared/cutout/loader.js |
쿠키: 사이트 코드는 쿠키를 절대 쓰지 않습니다(저장소에 document.cookie 호출이 없습니다). 동의 선택은 쿠키가 아니라 localStorage에 있습니다. Google의 분석과 광고 스크립트는 실행될 때 자체 쿠키를 설정할 수 있습니다. 언제 실행되는지는 쿠키와 분석 섹션에 나와 있습니다.
외부로 나가는 요청: 요청이 갈 수 있는 모든 곳
아래 목록은 저장소 기준으로 완전합니다. 모든 fetch(, XMLHttpRequest, 스크립트와 이미지 주소, 코드 안의 모든 외부 URL을 검색해서 만들었습니다. 아래에 명시된 분석 및 광고 스크립트를 제외하면, 앱은 제3자 스크립트, 글꼴, 스타일시트를 불러오지 않습니다. 제3자 글꼴이나 iframe도 없습니다.
| 목적지 | 해당 앱 또는 부분 | 목적 | 발생 시점 |
|---|---|---|---|
www.googletagmanager.com(Google Analytics, ID G-HW6FWQVFK3) | 홈페이지(index.html), 다른 페이지는 shared/consent/consent-mode.js를 통해 | 페이지 조회 측정 | 홈페이지: 분석을 수락하기 전까지 거부 상태로, 방문할 때마다. 다른 페이지: 분석을 수락한 뒤에만. |
pagead2.googlesyndication.com(AdSense) | 광고 슬롯이 있는 페이지(shared/ads/ads.js) | 광고 | 광고를 수락한 뒤에만. shared/consent/consent-mode.js의 단일 로더가 불러옵니다. |
huggingface.co, 그리고 그 저장소 호스트 hf.co와 xethub.hf.co | AI 채팅(shared/ai/webllm.js, ai/js/core/engine.js), AI 도구와 OCR 앱(aitools/model-registry.js, aitools/models.js) | 모델 파일: OCR(PP-OCRv4), 태그, 채팅 모델 | 다운로드를 누르거나, 더 받기에서 모델을 설치하고 크기와 라이선스를 확인한 뒤. AI 도구는 각 파일의 SHA-256을 확인하며, 파일은 Hugging Face 호스트나 slopographic/cdn 저장소에서 와야 합니다. |
cdn.jsdelivr.net(jsDelivr, /gh/slopographic/cdn@ 고정 릴리스만) | slopographic/cdn 저장소의 모든 파일(shared/cdn/assets.js): 더 받기 팩, 음성과 OCR 모델, HEIC, 카메라 RAW, 3D, 비디오 엔진 | 아래 저장소의 더 빠른 캐시 사본입니다. 20MB를 넘는 파일은 raw.githubusercontent.com에서 옵니다. | 아래 행과 같은 시점에 일어납니다. jsDelivr가 응답하지 않거나 잘못된 바이트를 보내면 같은 파일을 raw.githubusercontent.com에서 가져와 같은 방식으로 확인합니다. |
raw.githubusercontent.com | AI 채팅(shared/ai/webllm.js, GPU 커널), 더 받기 팩(shared/library/packs.json) | 채팅 모델용 커널. github.com/google/fonts(OFL)의 글꼴 파일. 아랍어, 중국어, 힌디어 같은 문자를 위한 언어 글꼴(Noto, OFL). Slop Upscale용 Real-ESRGAN 4x 모델, Image to 3D용 깊이 모델, Slop Transcribe와 AI 도구용 음성 모델(Whisper, KB-Whisper, NB-Whisper; aitools/speech-models.js). 모두 slopographic/cdn 저장소에서 옵니다. | 더 받기 또는 언어 및 모델 대화 상자에서 다운로드를 누르고 확인하거나, 채팅 모델을 불러올 때. 언어 글꼴은 그 문자를 쓰는 글을 입력할 때도 내려받습니다(예: Slop PDF). 그 전에 앱이 먼저 묻습니다. 단, 언어 글꼴을 자동으로 내려받도록 선택했다면 묻지 않습니다(shared/fonts/jit.js). 각 파일은 저장하기 전에 SHA-256으로 확인합니다. |
accounts.google.com, oauth2.googleapis.com, www.googleapis.com | 내 Google Drive로의 클라우드 동기화(shared/sync/providers/gdrive.js, pkce.js, config.js) | 로그인한 뒤 선택 사항인 폴더에 백업 파일 하나를 백업하고 복원합니다. 이 앱이 만들거나 내가 고른 파일에만 닿는 drive.file 범위를 씁니다. | 내 OAuth 클라이언트 ID로 연결했을 때만, 그리고 백업이나 동기화 버튼을 누를 때만. |
www.dropbox.com, api.dropboxapi.com, content.dropboxapi.com | Dropbox로의 클라우드 동기화(shared/sync/providers/dropbox.js) | Google Drive와 같으며, Dropbox용입니다. | 연결하고 백업이나 동기화 버튼을 누를 때만. |
data-api.ecb.europa.eu | 환율(shared/data/rates-ecb.js, 설정에서 열며 Ledger와 Calculator가 읽음) | 유럽중앙은행의 일일 EUR 기준 환율 | 환율 범주를 켜고 업데이트를 누를 때만. 열 때 업데이트는 그것도 체크했을 때만 실행됩니다. |
| 다른 웹사이트에서 끌어 온 이미지의 주소 | PhotoSlop(photoslop/js/app/tabs.js) | 끌어 온 이미지를 새 탭에서 엽니다 | 다른 페이지의 이미지를 PhotoSlop으로 끌어 놓을 때만. |
slopographic.com(사이트 자체) | 모든 페이지, 홈페이지 로고, 서비스 워커 | 사이트 자체 파일 | 방문할 때마다. 이 출처에서 다른 것은 요청하지 않습니다. |
직접 키나 서버 주소를 넣어 연결한 AI 서비스: 예를 들어 api.anthropic.com, api.openai.com, generativelanguage.googleapis.com, openrouter.ai, api.groq.com, 또는 Ollama, LM Studio, 다른 서버용으로 입력한 주소 | AI 패널(shared/ai/cloud/, 서비스 목록은 shared/ai/cloud/catalog/), AI 그림(shared/ai/imagegen/) | 채팅 메시지, 앱의 도구와 그 결과, 허용한 뒤에만 파일이나 그림의 사본. AI 그림은 프롬프트와, 편집의 경우 그림(최대 1536px) | 직접 키나 서버 주소를 추가하고 요청을 보낸 뒤에만. 기기 안의 모델은 아무것도 보내지 않습니다. |
openrouter.ai/auth(이동하는 페이지)와 openrouter.ai/api/v1/auth/keys | AI 패널의 OpenRouter로 로그인(shared/ai/cloud/signin.js) | 로그인 페이지로: 돌아올 이 페이지 주소, PKCE 챌린지, 무작위 state. 키 주소로: OpenRouter가 준 일회용 코드와 PKCE 검증기. OpenRouter는 이 브라우저용 키로 응답합니다. 브라우저와 OpenRouter 사이에서 직접 이루어지며 Slopographic 서버는 거치지 않습니다. | OpenRouter로 로그인을 누를 때만. |
127.0.0.1(내 컴퓨터) | AI 앱 연결(shared/agent/bridge.js) | 페이지는 내 AI 앱이 시작한 Slopographic MCP 서버와 통신합니다. 앱의 도구, 그 결과, 보내거나 저장하라고 요청한 파일. | “AI 앱 연결…”을 선택하고 AI 앱이 보여 주는 코드를 입력한 뒤에만. Chrome이 먼저 묻습니다. |
| 링크만: Patreon, YouTube, Vimeo | 후원 링크(shared/consent/donate.js), 노트 영상 링크(notes/js/video.js) | 클릭하면 새 탭에서 사이트를 엽니다 | 클릭할 때만. 노트 안의 영상은 임베드된 플레이어나 썸네일 이미지가 아니라 링크로 나타납니다. |
네트워크 사용처럼 보이지만 아닌 것 두 가지: tools/vendor-codemirror.mjs는 개발자가 직접 실행해 벤더 코드를 갱신할 때 cdn.jsdelivr.net에서 패키지를 가져옵니다. 앱은 그 CDN을 절대 불러오지 않습니다. 메일 뷰어(eml/js/frame.js)는 Content Security Policy로 메일 안의 원격 이미지와 스크립트를 막으므로, 메일을 열어도 원격 이미지나 스크립트를 불러오지 않습니다.
쿠키와 분석
- 사이트 코드가 저장하는 것: 동의 선택(localStorage의
slop-consent). 분석, 광고, 환율은 고르기 전까지 꺼져 있습니다. 저장소는 브라우저에서 언제든 지울 수 있습니다. - 사이트 코드가 저장하지 않는 것: 쿠키와 계정은 없습니다. 이 저장소는 쿠키를 쓰지 않습니다.
- Google Analytics: 홈페이지에서는
analytics_storage를 거부로 설정한 채 태그를 불러옵니다. 분석을 수락할 때만 켜집니다. 다른 페이지에서는 수락한 뒤에만 불러옵니다. - Google의 자체 스크립트는 실행될 때 자체 쿠키를 설정할 수 있습니다. 이는 Slopographic 코드가 아니라 Google이 정합니다. 아래 확인 단계는 브라우저가 실제로 무엇을 저장하는지 보여 줍니다.
- 광고: AdSense는 광고를 수락한 뒤에만 불러옵니다. 광고를 거부하면 광고 슬롯은 비어 있습니다.
오프라인 작업
한 번 방문하면 사이트의 자체 파일은 서비스 워커가 캐시 저장소에 보관합니다(service-worker.js, 파일 목록은 sw-precache.js). 페이지는 먼저 네트워크에서 확인하고, 그다음 캐시에서 가져오며, 그래도 없으면 오프라인 페이지를 보여 줍니다. 파일은 서비스 워커 캐시에 있지 않습니다. 고른 폴더나 IndexedDB에 있습니다. 네트워크가 꺼져 있어도 앱은 계속 작동합니다. 위에 나열된 다운로드(모델과 글꼴 팩)는 처음 받을 때 네트워크가 필요합니다.
직접 확인하는 방법
- 네트워크 탭, 페이지를 불러온 상태에서. 앱을 열고 F12(Mac은 Cmd+Option+I)를 누른 뒤 네트워크 탭을 엽니다. "로그 보존"을 체크하고 새로 고침하세요. 도메인 열을 보세요. 일반 방문에서는
slopographic.com만 보여야 하며, 홈페이지에서는 Google 분석 도메인도 보입니다. - 네트워크 탭, 오프라인. 네트워크 탭에서 제한 메뉴를 열고 오프라인을 고르세요. 새로 고침한 뒤 파일을 열고 편집하고 저장하세요. 앱은 작동해야 합니다. 다운로드가 필요한 것은 그렇다고 표시합니다.
- 애플리케이션 탭, 저장소. Chrome이나 Edge에서 애플리케이션 탭을 엽니다. 저장소 아래에서 Local storage, Session storage, IndexedDB, Cookies, Cache Storage, Service workers를 확인하세요. 보이는 것을 이 페이지의 표와 비교하세요.
- 수락 또는 거부한 뒤 비교. 동의 띠에서 분석과 광고를 거부하고 새로 고침한 뒤 네트워크 탭을 다시 확인하세요. 그다음 수락하고 어떤 요청이 나타나는지 보세요.
- 소스를 읽으세요. 코드는 GitHub의 slopographic 저장소에 공개되어 있습니다. 이 페이지의 행을 확인하려면
fetch(,indexedDB.open,localStorage,showDirectoryPicker를 검색하세요. 동의 코드는shared/consent/에, 클라우드 동기화는shared/sync/에, 다운로드 목록은shared/library/와aitools/에 있습니다.
로컬 폴더(File System Access API)는 Chrome이나 Edge가 필요합니다. Firefox와 Safari는 제공하지 않으며, 해당되는 곳에서 앱이 그렇게 알려 줍니다.