# 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<string>` 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).
