Alias estables
A-7K3F9Q en vez de un nombre, un correo o un id: la misma persona recibe siempre el mismo alias, calculado con una clave que nunca sale del equipo.
Reversible solo para quien debe
Un directorio local cifrado recuerda quién es cada alias. La persona que ejecuta tu programa lo consulta con pseudonym whois en su propio terminal, sin conexión.
Un alias por servicio
El mismo alumno tiene un alias en el LMS y otro en el correo, así que un modelo no puede juntar lo que sabe de él. Enlazar servicios es opcional.
También texto libre
redact() sustituye a las personas del directorio en una entrega o un mensaje por sus alias, y correos, tarjetas, IBAN e identificadores de nueve países por marcadores.
Dentro de tu programa
Una librería, no un servidor: ninguna herramienta MCP con la que un agente pueda deshacerlo, sin dependencias en tiempo de ejecución, sin enviar nada a ningún sitio.
Clara con sus límites
Seudonimización, no anonimización. La documentación dice qué no detecta y cómo mantener a un agente lejos de la clave.
Tres llamadas
import { remember, resolve, redact } from "@falkenslab/pseudonym";
const service = "moodle@campus.example.org";
// Before a result reaches the model: people become aliases.
const alias = await remember({
service,
identifiers: { email: user.email, serviceUserId: String(user.id) },
displayName: user.fullname,
}); // "A-7K3F9Q"
// A write tool gets an alias back from the model.
const userId = await resolve("A-7K3F9Q", { service });
// Text people wrote.
const { text } = await redact(post.message, { service });
Míralo funcionando
El ejemplo MCP del aula es un pequeño servidor MCP sobre un curso inventado: el modelo lista a los alumnos, lee el foro y pone una nota, y solo ve alias.
La persona responsable guarda la clave y el directorio, y consulta pseudonym whois A-7K3F9Q en su terminal. Consulta la CLI.