Security model
Threats, most likely first:
- Prompt injection through upstream content: a crafted message read by an agent tries to make it call a tool that writes. The hub cannot detect it, so it limits what any one key can reach: per-key scopes, server-wide tool filters, administration as a separate grant, and admin tools that never change what runs.
- A leaked key: revocable per client, bounded by its scope, visible through
lastUsedand the audit events. - Network access to the hub: meant to sit behind a TLS reverse proxy. The UI needs a session,
/mcpa key; only/healthzand static assets are anonymous. - A compromised upstream package: versions are installed and recorded, so nothing changes silently; install scripts are off by default; each child sees only its own environment.
The container runs as the unprivileged node user; only /data needs to be writable.