# Your source never leaves the machine: what K-S23 actually means SecondOS uploads a map of your codebase, never the code itself. Here's exactly what that map contains, what it doesn't, and why the distinction matters. The first question any team asks about a codebase tool is: *what leaves my machine?* For SecondOS the answer is a principle we call K-S23 — **the map leaves, the source never does.** ## What the map contains When you sync, SecondOS uploads a structure-aware **map**: file paths, symbol names and signatures, routes, the module layout, and vector embeddings for search. That's the interface of your code — enough for an AI tool to navigate it. ## What it doesn't contain It does **not** upload your source bodies — the actual implementation inside your functions. The map says `hashPassword(password: string): Promise` exists in `packages/auth/hash.ts`; it does not carry the lines of the function. Secrets are detected and **redacted before anything is uploaded** — and surfaced to you, never silently dropped. ## Why the distinction matters A structure-only map is dramatically less sensitive than source. Your AI tool can still answer "who calls this?" and "what's the shape of this module?" from signatures and the call graph — without the code bodies ever leaving your machine. ## If even the map should stay home - **Local mode (free):** nothing leaves at all — the map lives in `.secondos/` on your machine, fully offline. - **Enterprise self-host:** the map lives inside your own infrastructure. - **The GitHub App holds no `contents` permission** — it *cannot* read your code. It lists repos (metadata) and triggers your own CI to keep the map fresh. And your map and memory are yours: export them any time, no lock-in. [Read the security details](/security).