Sensey

Secrets, Sealed.

Self-hosted secrets, passwords, and certificates for Kubernetes. AES-256-GCM at rest, PAT-based machine auth, CLI + GitHub Action + K8s sync CronJob, Keycloak SSO. The self-hosted alternative to Doppler — running in production at Sensey today.

Kagi is how Sensey manages every secret, password, and certificate across our Kubernetes clusters. Every production credential described here runs through Kagi today — delivered to pods by a sync CronJob and rotated without downtime via Stakater Reloader. We built it because we needed it.
Core Capabilities

Encrypted Secret Storage

AES-256-GCM at rest, per-organization scoping, and a project + environment hierarchy. Soft-delete with full audit trail — you own the data and you own the encryption keys.

K8s-Native Sync

A CronJob syncs Kagi projects to Kubernetes Secrets every two minutes. Pods auto-reload via Stakater Reloader annotations, so credentials rotate without manual restarts or downtime.

Machine Authentication

Personal Access Tokens (vv_ prefix, SHA-256 hashed) with optional expiry and organization scoping. The same tokens power the CLI, CI/CD pipelines, and in-cluster sync jobs.

CLI + CI/CD Integration

The kagi Go CLI ships via Homebrew. A GitHub Action injects secrets into $GITHUB_ENV, kagi run -- <cmd> wraps local dev commands, and .env bulk import/export keeps existing workflows intact.

Architecture
Kagi API

CLI, UI, GitHub Action, and PAT-authenticated machines write encrypted secrets

Postgres

AES-256-GCM ciphertext at rest, scoped per organization, project, and environment

Sync CronJob

Runs every 2 minutes inside each cluster, pulls scoped secrets, writes to K8s

Kubernetes Secret

Annotated for Stakater Reloader — pods auto-restart on content change

Secret Lifecycle
  1. 01 · Write

    Engineer or CI writes secret via CLI, UI, or GitHub Action

  2. 02 · Encrypt

    AES-256-GCM encryption using per-organization data key

  3. 03 · Store

    Persisted as ciphertext in Postgres with audit metadata

  4. 04 · Sync

    CronJob pulls scoped project into in-cluster Kubernetes Secret

  5. 05 · Deliver

    Pods mount the updated Secret as env vars or files

  6. 06 · Reload

    Stakater Reloader restarts affected Deployments on content change

AES-256-GCM Encryption at Rest
Keycloak SSO + PAT Machine Auth
99.95% Uptime SLA
Proven on Sensey Production Workloads
Who It's For

Platform engineers replacing Doppler or Vault with a self-hosted, Kubernetes-native alternative they fully control

DevOps teams that need GitOps-friendly secret delivery with automatic pod reloads and zero-downtime rotation

Security-conscious SMEs that want full ownership of their encryption keys, audit trail, and data residency

Secure Your Secrets the Sensey Way

Join the founding circle and run the same secrets platform that Sensey uses to protect its own Kubernetes workloads.

Request Early Access