import type { Metadata } from "next"; import { LegalPage } from "@/components/marketing/legal"; export const metadata: Metadata = { title: "Privacy Policy", description: "How PolyLLM handles your account, API keys, conversations and usage data. Short, honest and written for humans.", alternates: { canonical: "/privacy" }, }; export default function PrivacyPage() { return ( PolyLLM is a bring-your-own-keys workspace. That shapes everything about privacy here: we run the interface, you own the keys and the relationship with each AI provider. This policy explains, in plain terms, what we store, why, where it goes and how you get rid of it.

} sections={[ { id: "what-we-collect", title: "What we collect", body: ( <>

We do not use analytics trackers, advertising pixels or fingerprinting scripts.

), }, { id: "api-keys", title: "How your API keys are handled", body: ( <>

Keys are encrypted before they are written to the database using AES-256-GCM with a server-held master key. They are decrypted in server memory only for the duration of a request to the provider you selected, and they are never sent to your browser, written to logs or shared with anyone.

You can replace or remove a key at any time from Settings. Removing a key deletes the encrypted record immediately. You can also revoke a key from the provider's own console, which makes the stored copy useless.

), }, { id: "where-data-goes", title: "Where your data goes", body: ( <>

When you send a message, its content (and any attachments the model supports) is transmitted from PolyLLM's server to the provider behind the model you picked and nowhere else: OpenAI, Anthropic, Google or xAI. Each provider processes that data under its own terms and privacy policy, using your account with them.

We do not route requests through third-party inference brokers, and we do not use your prompts or responses to train anything.

Transactional email (verification, password reset, security notices) is delivered through Resend, which receives your email address and the message content for that purpose only.

), }, { id: "storage", title: "Where your data is stored", body: (

Conversations, settings, usage records and encrypted keys are stored in PolyLLM's own PostgreSQL database. Backups are encrypted and retained for a limited period to recover from failures. Access is restricted to the operators of the service for maintenance and abuse prevention.

), }, { id: "your-controls", title: "Export and deletion", body: ( ), }, { id: "sharing", title: "Public share links", body: (

If you create a share link for a conversation, a frozen snapshot of its messages becomes readable by anyone with the link, without an account. Share pages are excluded from search engines. Revoking the link disables the page immediately.

), }, { id: "cookies", title: "Cookies", body: (

PolyLLM sets a small number of first-party cookies to keep you signed in and to protect against cross-site request forgery. They are HttpOnly and Secure. A preference cookie remembers your light or dark theme. There are no third-party or advertising cookies.

), }, { id: "changes", title: "Changes to this policy", body:

If we change how we handle your data in a meaningful way, we will update this page and notify you by email before the change takes effect.

, }, ]} /> ); }