# penname > penname pseudonymizes customer data before it reaches a model provider. A > gateway on the customer's own machine swaps names, emails, phone numbers and > ID numbers for stable pen names (PERSON_7K3Q2M9XAB) on the way to OpenAI, > Anthropic or any OpenAI-compatible API, and restores the real values in the > reply. Nothing about the app changes except its base URL. The gateway is the Docker image `pennameio/gateway`, set up with `docker run -it -v ${PWD}:/setup pennameio/gateway init`. It needs a penname API key (`pk_...`), free at https://penname.io/signup. penname's hosted side receives table and column names and token counts, never a row, a prompt or the master key. ## Before any real customer data goes through Setup is not finished when the code is changed. Prove it with a FAKE test customer first: set `DETAIL_LOGGING=true` in the gateway's `.env` and run `docker compose up -d --force-recreate`, run every AI feature once, then read `docker compose logs gateway`. Every feature must leave a `->` line (one that does not bypassed the gateway), each "sent to the model, word for word" block must hold only pen names, and searching the log for the test customer's name and email must find nothing. Show the user that proof, then turn `DETAIL_LOGGING` off again (`DETAIL_LOGGING=false`, `docker compose up -d --force-recreate`): left on, it prints every prompt in full and fills the container's log. Setup is finished only when the test has passed and it is off. The MCP tool `penname_verify` walks through it. Details: https://penname.io/docs.md#check-it-works-with-test-data-before-real-data ## Docs - [Setup guide](https://penname.io/docs.md): sign up, run the wizard, point your app at the gateway, send the scope header, check it works, troubleshooting - [Configuration](https://penname.io/docs/configuration.md): every setting the gateway reads and what happens if you leave it out - [Changelog](https://penname.io/changelog.md): what changed in each release ## For coding agents - [MCP server](https://penname.io/mcp): Streamable HTTP, header `Authorization: Bearer pk_...`. Start with the tool `penname_setup_checklist`; `penname_troubleshoot` diagnoses problems - [Sign up](https://penname.io/signup): creates an account and shows the `pk_` key once, with a ready-made prompt for your agent ## Optional - [Docker image](https://hub.docker.com/r/pennameio/gateway): `pennameio/gateway`, amd64 and arm64 - [Everything in one file](https://penname.io/llms-full.txt): all three docs concatenated