v0.1.0
First tagged release. Three image variants published to ghcr.io:
ghcr.io/anonde-io/anonde:0.1.0 (patterns-only, ~12 MB),
ghcr.io/anonde-io/anonde-ner:0.1.0 (BASE GLiNER, ~770 MB), and
ghcr.io/anonde-io/anonde-ner-stack:0.1.0 (BASE + LARGE GLiNER, ~2.1 GB).
Multi-arch (linux/amd64 + linux/arm64).
Added
- PII analyzer — 52 region-aware pattern recognizers covering 12+
jurisdictions (international IDs, US, UK, Germany, Italy, Spain,
Australia, India, Poland, Singapore, Finland, Korea), with parallel
dispatch and score-based conflict resolution. - Optional in-process NER behind the
-tags hugotbuild — GLiNER and
hugot ONNX recognizers. Requires CGO and a reachablelibonnxruntime.so.
NER beats patterns for PERSON/ORG/LOC/AGE/PROFESSION/NRP on conflict. - Anonymizer operators — Replace, Redact, Mask, Hash, Encrypt, and
Synthesize, with adjacent-span merging. - Reversible token vault — in-memory and bbolt backends behind one
interface. Tokens are stable per(tenant, doc)and reversible only
through the reveal path. - HTTP server — three transports on one port: REST/JSON (grpc-gateway),
Connect (Connect/JSON, Connect/Protobuf, gRPC-Web), and native gRPC.
Wire JSON is snake_case; camelCase inputs are also accepted. - Reveal / detokenize gated by
actor+purposeaudit metadata —
the only path that returns cleartext. - OpenAI-compatible proxy at
POST /v1/chat/completions—
anonymizes the prompt, forwards to the upstream provider, and
de-anonymizes the response in OpenAI shape. v0.1 proxies OpenAI only,
non-streaming only. - Content formats — text, JSON, NDJSON, logs, and PDF, with
format negotiation. Scanned (image-only) PDFs are OCR'd via
pdftoppm+tesseractwhen both are onPATH; bundled in the
NER image variants, no-op fallback in the patterns-only image.
Tunable viaANONDE_OCR_*env vars. - Docker images — three multi-arch (
linux/amd64+linux/arm64)
variants:anonde(patterns-only, ~12 MB, pure Go),
anonde-ner(BASE GLiNER, ~770 MB, CGO + bundled libonnxruntime),
andanonde-ner-stack(BASE + LARGE GLiNER, ~2.1 GB). - Public benchmark matrix — leak-rate and F1 scoring across
gold-annotated clinical, finance, legal, and general-PII corpora,
re-run on every relevant PR with a guard rail against silent NER
fallback.
Security
- NER models are baked into the NER image; there is no outbound
HuggingFace traffic at request time. - All anonymization and de-anonymization runs locally — no third-party
calls except the upstream provider when the OpenAI-compatible proxy
is explicitly configured.
Planned (post-v0.1.0)
- Secret recognizers — API keys, tokens, credentials.
- Streaming SSE support for the OpenAI-compatible proxy (
stream: true). - Anthropic and Gemini upstreams for the proxy, selected by model prefix.
What's Changed
- feat(metrics): opt-in Prometheus /metrics on a second listener by @moogacs in #3
- feat(content): OCR fallback for scanned PDFs by @moogacs in #4
- fix(content,build): default signature model to FP32, expose SIGNATURE_QUANT (+ land PDF stack) by @moogacs in #10
- refactor(api,proto): pull PDF endpoints into proto-defined RPCs by @moogacs in #11
- deps(actions): bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #12
- deps(actions): bump docker/login-action from 3 to 4 by @dependabot[bot] in #13
- deps(actions): bump actions/setup-go from 5 to 6 by @dependabot[bot] in #14
- bench: refresh REPORT_MATRIX (dispatch-df4ecaf_) by @github-actions[bot] in #17
- bench: refresh REPORT_MATRIX (dispatch-51edc9d_) by @github-actions[bot] in #18
New Contributors
- @dependabot[bot] made their first contribution in #12
- @github-actions[bot] made their first contribution in #17
Full Changelog: https://github.com/anonde-io/anonde/commits/v0.1.0