The Business Glossary app is a local-only dev tool. It is designed to run on your own machine, alongside Claude Code or another local AI assistant. It is NOT designed for:
- Multi-user deployment
- LAN exposure
- Internet-facing deployment
- Storing sensitive / regulated data
The dev server binds to 127.0.0.1:5117 and the SvelteKit +server.ts API routes write JSON files directly to data/. There is no authentication. Anyone who can reach the port can read, overwrite, or delete your glossaries.
If you need to share a glossary, use the Export JSON / XLSX buttons and share the downloaded files — never the server.
Only the latest commit on main is supported. We don't backport security fixes to older releases. If you're running a fork, rebase onto current main to pick up patches.
Please report security issues privately to security@AgileDataGuides.com. Include:
- A description of the issue and the impact you believe it has.
- Steps to reproduce, or a proof-of-concept if available.
- The commit SHA you tested against.
Do NOT open a public GitHub issue for vulnerability reports — opening one accidentally is fine, just close it and email us instead.
The following are intentional design choices, not vulnerabilities:
- No authentication. The app runs locally, so there's no user to authenticate. If you need multi-user access, use the upstream Context Plane app instead.
- CSP
'unsafe-inline'. Required by SvelteKit hydration and Tailwind. Removing it breaks the app. - Filesystem writes from the dev API routes. The threat model assumes you trust your own machine. The API rejects oversize bodies, structurally invalid models, and path-escape attempts, but it doesn't try to defend against an attacker who already has shell access.
data/*.jsonfile format. Anyone with shell access can hand-edit the JSON files. That's by design — it's also how the included Claude skill reads your glossaries.
We do enforce some hardening even within the local-only threat model:
- The dev server binds to loopback (
127.0.0.1), never0.0.0.0. Do NOT changevite.config.tsserver.host. - All API write routes cap the request body and reject non-JSON or structurally invalid models.
- File paths from URL params are filtered through a kebab-case regex + path-prefix check so
../../etc/passwd-style traversal can't escapedata/. - We don't ship the abandoned
xlsxpackage. Writing XLSX is done viaexceljs; reading XLSX is intentionally unsupported (there is no safe parser of comparable scope). - Dependabot watches
package.jsonand the GitHub Actions workflows weekly for vulnerable updates.