BLA
BLA (Blind LLM Agents) is the open-source Blue Defense MCP and CLI built to protect software artifacts against automated AI reverse-engineering workflows.
pseudonym: a pseudonymization library for AI tools. People go to the model as stable aliases, resolvable only on your machine.
SecurityTypeScript · JavaScriptGitHub @falkenslabOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A pseudonymization library for AI tools
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Let your AI tools talk about people without ever naming them.
Each person becomes a stable alias like A-7K3F9Q, and only you can turn it back into a name, on your own machine.
📖 Documentation · 📖 Documentación en español
pseudonym is a pseudonymization library for programs that send data about people to a language model, such as an MCP server reading a course's submissions. Your program passes each person through it and sends A-7K3F9Q instead of "Ana Pérez"; free text loses its known names, emails, cards, IBANs and national ids on the way. The alias is an HMAC under a key that never leaves the machine, and a local encrypted directory lets the person in charge ask pseudonym whois A-7K3F9Q whenever they need to.
pseudonym whois answers offline, and nobody without the key can reverse them.You need Node.js 20 or later and an ES module project.
npm install @falkenslab/pseudonym # in your program
npm install --global @falkenslab/pseudonym # the pseudonym command, for the people who run it
import { remember, resolve, redact } from "@falkenslab/pseudonym";
const service = "[email protected]";
// Before a result reaches the model: people become aliases (one call for a whole list).
const aliases = await remember(users.map((user) => ({
service,
identifiers: { institutionalId: user.idnumber, 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 }); // keep it on your side
The key is created on first use, in %APPDATA%\pseudonym\ or ~/.config/pseudonym/. Back it up once with pseudonym key export.
🔌 In an MCP server, everyone in a tool's result goes through remember(), and the model reads:
[{ "student": "A-9NQWD5", "grades": { "practice1": 8.5 } }, { "student": "A-TA8D1J", "grades": { "practice1": 6 } }]
✍️ Free text keeps its meaning and loses who wrote it:
await redact("Soy Marta Quiroga, mi móvil es 612 345 678 y mi SSN 123-45-6789.", { service, countries: ["ES", "US"] });
// "Soy A-9NQWD5, mi móvil es [PHONE_1] y mi SSN [US_SSN_1]."
👩🏫 In the person's terminal, without writing code:
pseudonym whois A-9NQWD5 # who an alias is
pseudonym redact < post.txt # a text safe to paste into a chat
pseudonym reveal < answer.txt # the model's answer, with the names back
pseudonym remember --csv class.csv --only-aliases # a class export, as aliases
A complete MCP server that does all of this over a made-up course is in examples/classroom-mcp.
| Area | For example |
|---|---|
| 🧷 Aliases | remember() for one person or a list, per service or linked across services, first alias kept |
| 🔙 The way back | resolve() for write tools, pseudonym whois, reveal and resolve for the person |
| ✍️ Redaction | redact() with names from the directory, cards, IBANs and ids of ES, US, CA, DE, MX, CL, AR, BR and PT |
| 🗂️ The directory | AES-256-GCM by default, or plain JSON without a key where the OS protects the folder; safe across processes, link, forget, prune, migrate |
| 🔑 The key | Created on first use, key export, key import, key fingerprint, refuses to work if it goes missing |
| 💻 The CLI | Everything above without code, CSV in and out, --json for scripts |
The API reference and the command reference list it all.
npm install, then npm run typecheck && npm run lint && npm test; npm run docs:start previews the documentation site. The design decisions are in .minispec/, and each planned change has a note there and an issue here.
Made with 💖 by Falken's Lab Team