Tech

Ujex security model

Akshay Sarode

Three-layer security

  1. Firestore Security Rules — ownership and tenant isolation
  2. Cloud Function scope checks — capability-token-based authorization on every callable
  3. Append-only hash-chained audit ledger — post-hoc verifiability

Identity

Every agent has a Firebase UID-equivalent. Owners (humans) own agents. Device keys are stored as sha256(deviceKey) — never plaintext. Scopes (postbox, recall, mesh, scheduler, etc.) are granted per device key.

Secrets

KMS-envelope encryption for: device keys (hashed), agent secrets, tool auth tokens, DDNS tokens, gateway certs. Cloud KMS keys never leave KMS.

Mail security

Audit ledger

Every privileged action: audit/{seq} with sha256(prev || event). Hourly verification by Cloud Scheduler. Details.

Threat model

In scope:

Not fully in scope:

Reporting

Email security@ujex.dev. We respond within 48h.

FAQ

How are device keys stored?

sha256(deviceKey). The plaintext key is shown to the owner once at issuance and never again.

Is the prompt-injection scoring perfect?

No. It's heuristic regex + Gemini fallback. Scores are signals, not guarantees. Treat email as untrusted text always.

Can I bring my own KMS?

Yes — every vendor sits behind a module boundary. KMS swap is a port-rewrite, not a rip-and-replace.