docs/deploy/security.md

Security

Data stays in your infrastructure

Records, conversations, runs and credentials live in your Postgres. The model providers you choose process prompts; Langfuse, if you send traces to Langfuse Cloud, holds prompt and completion text there. Software Factory builds send the repository to Anthropic.

Sign-in and access

  • Auth.js with email and password; sessions are signed with AUTH_SECRET. There is no third-party auth service.
  • Web sign-up only accepts invites; the first admin is created from the shell with user:create.
  • Roles are admin and member. VOCION_ENFORCE_WORKSPACE_ACCESS=1 makes membership and groups decide who opens each shared workspace. A personal workspace is only ever its owner's.
  • Single sign-on and multiple organizations per installation are Vocion Enterprise features.

Credentials

  • Keys a workspace stores and connector logins are encrypted with AES-256-GCM under a per-workspace data key.
  • VOCION_CREDENTIAL_VAULT=kms wraps those keys with your AWS KMS key (VOCION_KMS_KEY_ARN) — use it for any installation holding real customer keys. local wraps them with VOCION_CREDENTIAL_VAULT_KEY; in production that key is mandatory, or every credential read fails.
  • API tokens are stored as a hash plus an encrypted copy; revocation is immediate.
  • VOCION_TOOL_SIGNING_SECRET signs tool claims and share links; set it separately from AUTH_SECRET.

Actions

  • Every external action goes through the trust ladder; sending email and connecting a new source always wait for a person. See Trust and learning.
  • Every decision and every automatic run is recorded with who or what allowed it.
  • Agents see only the sources and record types in their scope; cross-workspace questions from an assistant only reach workspaces the person can open.

Files

Keep VOCION_ARTIFACTS_DIR on a private volume, never under public/; files are served only through /api/artifacts/... with access checks.

On AWS with vocion-stack

The host is reachable only from the load balancer and has no SSH; RDS is in private subnets with TLS forced and a customer-managed key; WAF fronts the site and its logs redact Authorization and Cookie; secret values are never in OpenTofu state.

Report a vulnerability privately to the maintainers through GitHub security advisories on vocion/vocion-core, not in a public issue.