Your code shape. Not your code.
Lettuce indexes the structure of your repo — symbols, calls, types — so your coding agent can ask instead of grep. Pick the deployment model that fits your threat model. We'll show you the blueprint.
Four facts.
No full-file source ever ships to a model.
We extract symbols, signatures, call edges, and short code chunks. Whole files don't leave the graph builder.
Two deployment modes.
Managed cloud (we run it) or self-hosted (you run it, license-gated, single outbound flow). Same product, different perimeter.
Per-tenant isolation, scoped tokens.
Every MCP request authenticates with a tenant-scoped bearer key. Repos, graphs, and embeddings are partitioned by tenant ID.
Bring your own everything (self-hosted).
OIDC IdP, secret store (Vault, AWS SM, GCP SM), git host, OTLP collector. Outbound flows from your cluster: a signed license heartbeat and a daily telemetry ping (version, license ID, aggregate counts) — each disabled with one env var.
Two deployment models. Pick your perimeter.
Each diagram is component-level. Boxes are services Lettuce ships or third-party components you provide. Arrows are the actual data flows.
What we extract from your repos.
The graph builder is a parser, not a backup tool. Here's the shape of what ends up in the index.
One model. Two enforcement points.
Operators sign in with OAuth / OIDC
Managed cloud uses GitHub or GitLab OAuth. Self-hosted federates to your OIDC IdP. No Lettuce-managed passwords.
Agents authenticate with scoped bearer tokens
MCP clients send a cwz_… key per request. Tokens are tenant-scoped, revocable from the dashboard, and never embedded in code we ship.
Per-tenant isolation
Every row carries a tenant ID. Repos, graphs, embeddings, and audit logs are partitioned. Cross-tenant reads are not in the query path.
Admin endpoints are gated
The /admin surface (license, members, ops) sits behind an admin-only role check. Audit log records every state-changing call.
What we do today. What we're working on.
We'd rather tell you the truth than fail your due-diligence questionnaire after the fact.
Want the long version?
Send us your security questionnaire, threat model, or just the three questions you actually need answered. We'll meet you wherever your DD process starts.