Skip to content

gsmlg-dev/secrethub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

230 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SecretHub

Enterprise-grade Machine-to-Machine secrets management platform

Status: πŸš€ v1.0.0-rc3 Released


🎯 Project Overview

SecretHub is a secure, reliable, and highly automated secrets management platform designed specifically for Machine-to-Machine (M2M) communication. Built in Elixir with a HashiCorp Vault-like architecture, it eliminates hardcoded credentials through centralized management, dynamic generation, and automatic rotation.

Core Features

Feature Description
πŸ” mTLS Everywhere Mutual TLS for all Core-Agent communications with PKI-issued certificates
πŸ”‘ Dynamic Secrets Short-lived credentials for PostgreSQL, Redis, and AWS STS
πŸ”„ Automatic Rotation Oban-scheduled zero-downtime secret rotation
πŸ“ Template Rendering EEx-based secret injection into configuration files
πŸ“Š Tamper-Proof Audit SHA-256 hash-chained logs with HMAC signatures
πŸ›‘οΈ Vault Seal/Unseal Shamir's Secret Sharing for master key protection
⚑ High Availability Multi-node deployment with distributed locking
πŸ”“ Auto-Unseal AWS KMS, Azure Key Vault, GCP KMS integrations
🚨 Anomaly Detection Real-time security anomaly detection and alerting
πŸ“‹ Policy Templates Pre-built policy templates for common use cases

πŸ—οΈ Architecture

SecretHub implements a two-tier architecture with a central Core service and distributed Agents:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        SecretHub Core                                β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚  β”‚    PKI    β”‚  β”‚  Policy   β”‚  β”‚  Secret   β”‚  β”‚   Audit   β”‚       β”‚
β”‚  β”‚  Engine   β”‚  β”‚  Engine   β”‚  β”‚  Engines  β”‚  β”‚  Logger   β”‚       β”‚
β”‚  β”‚           β”‚  β”‚           β”‚  β”‚           β”‚  β”‚           β”‚       β”‚
β”‚  β”‚ β€’ Root CA β”‚  β”‚ β€’ JSONB   β”‚  β”‚ β€’ Static  β”‚  β”‚ β€’ Hash    β”‚       β”‚
β”‚  β”‚ β€’ Int. CA β”‚  β”‚ β€’ Glob    β”‚  β”‚ β€’ Dynamic β”‚  β”‚   Chain   β”‚       β”‚
β”‚  β”‚ β€’ CSR     β”‚  β”‚   Match   β”‚  β”‚ β€’ Leases  β”‚  β”‚ β€’ HMAC    β”‚       β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β”‚                                                                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚  β”‚  AppRole  β”‚  β”‚   Vault   β”‚  β”‚  Anomaly  β”‚  β”‚   Apps    β”‚       β”‚
β”‚  β”‚   Auth    β”‚  β”‚ Seal/     β”‚  β”‚ Detection β”‚  β”‚  Manager  β”‚       β”‚
β”‚  β”‚           β”‚  β”‚ Unseal    β”‚  β”‚           β”‚  β”‚           β”‚       β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β”‚                                                                      β”‚
β”‚              REST API + WebSocket + LiveView Admin                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              ↕ mTLS WebSocket
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                       SecretHub Agent                                β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚  β”‚ Bootstrap β”‚  β”‚Connection β”‚  β”‚   Cache   β”‚  β”‚  Sinker   β”‚       β”‚
β”‚  β”‚           β”‚  β”‚  Manager  β”‚  β”‚   Layer   β”‚  β”‚           β”‚       β”‚
β”‚  β”‚ β€’ AppRole β”‚  β”‚           β”‚  β”‚           β”‚  β”‚ β€’ Atomic  β”‚       β”‚
β”‚  β”‚ β€’ CSR Gen β”‚  β”‚ β€’ Reconn  β”‚  β”‚ β€’ TTL     β”‚  β”‚   Write   β”‚       β”‚
β”‚  β”‚ β€’ Cert    β”‚  β”‚ β€’ Backoff β”‚  β”‚ β€’ LRU     β”‚  β”‚ β€’ Reload  β”‚       β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β”‚                                                                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚  β”‚ Template  β”‚  β”‚  Lease    β”‚  β”‚   Unix Domain Socket API   β”‚       β”‚
β”‚  β”‚ Renderer  β”‚  β”‚ Renewer   β”‚  β”‚   (for local applications) β”‚       β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              ↕ UDS + mTLS
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚    Applications      β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Agent Lifecycle

  1. Bootstrap Phase: AppRole auth β†’ RSA-2048 keypair generation β†’ CSR β†’ Certificate issuance
  2. Operational Phase: mTLS WebSocket to Core β†’ Secret requests β†’ Local caching
  3. Delivery Phase: EEx template rendering β†’ Atomic file writes β†’ Application reload triggers
  4. Local Access: Unix Domain Socket API for application secret retrieval

πŸ”’ Security Architecture

Encryption

Layer Algorithm Details
At Rest AES-256-GCM Per-secret nonces, 128-bit auth tags
Master Key Shamir's Secret Sharing Configurable N shares, K threshold
Key Derivation PBKDF2-SHA256 100,000 iterations

Authentication Flow

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     RoleID/SecretID      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Agent     β”‚ ─────────────────────────▢│    Core     β”‚
β”‚  Bootstrap  β”‚                           β”‚   AppRole   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
       β”‚                                         β”‚
       β”‚              CSR Request                β”‚
       β”‚ ◀───────────────────────────────────────│
       β”‚                                         β”‚
       β”‚           Signed Certificate            β”‚
       β”‚ ────────────────────────────────────────▢
       β”‚                                         β”‚
       β–Ό                                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      mTLS WebSocket      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Agent     β”‚ ◀═══════════════════════▢│    Core     β”‚
β”‚   Running   β”‚                           β”‚   Running   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

PKI Hierarchy

  • Root CA: Self-signed, RSA-4096 or ECDSA P-384
  • Intermediate CA: Root-signed, issues client certificates
  • Client Certificates: 1-year validity, auto-renewal 7 days before expiry

πŸ”‘ Secret Engines

Static Secrets

  • Encrypted storage with versioning
  • Oban-scheduled rotation
  • Template rendering support

Dynamic Secrets

Engine Description Lease Management
PostgreSQL Temporary users with VALID UNTIL, custom SQL templates Auto-revocation
Redis Dynamic ACL-based credentials Auto-revocation
AWS STS Temporary IAM credentials via AssumeRole TTL-based

πŸš€ Quick Start

Prerequisites

Installation

# Clone the repository
git clone https://github.com/gsmlg-dev/secrethub.git
cd secrethub

# Activate devenv (or use direnv allow)
devenv shell

# Set up the database
db-setup

# Start the development server
server

Available at:

Quick Commands

# Database
db-setup        # Create and migrate database
db-reset        # Reset database (drop, create, migrate, seed)

# Development
server          # Start Phoenix server
console         # Start IEx shell with app loaded

# Testing
mix test                    # Run all tests
mix coveralls.html          # Generate coverage report

# Code Quality
quality         # Run format, credo, dialyzer

πŸ“ Project Structure

secrethub/                              # Elixir Umbrella Application
β”œβ”€β”€ apps/
β”‚   β”œβ”€β”€ secrethub_core/                 # Core Business Logic
β”‚   β”‚   └── lib/secrethub_core/
β”‚   β”‚       β”œβ”€β”€ auth/app_role.ex        # AppRole authentication
β”‚   β”‚       β”œβ”€β”€ pki/ca.ex               # PKI/CA management
β”‚   β”‚       β”œβ”€β”€ policies.ex             # Policy engine
β”‚   β”‚       β”œβ”€β”€ policy_templates.ex     # Pre-built policy templates
β”‚   β”‚       β”œβ”€β”€ apps.ex                 # Application management
β”‚   β”‚       β”œβ”€β”€ audit.ex                # Hash-chained audit logs
β”‚   β”‚       β”œβ”€β”€ vault/seal_state.ex     # Seal/unseal with Shamir
β”‚   β”‚       β”œβ”€β”€ engines/dynamic/        # PostgreSQL, Redis, AWS STS
β”‚   β”‚       β”œβ”€β”€ auto_unseal/providers/  # AWS KMS, Azure KV, GCP KMS
β”‚   β”‚       β”œβ”€β”€ anomaly_detection.ex    # Security anomaly detection
β”‚   β”‚       β”œβ”€β”€ alerting.ex             # Multi-channel alerting
β”‚   β”‚       β”œβ”€β”€ lease_manager.ex        # Lease lifecycle
β”‚   β”‚       └── rotation_manager.ex     # Oban-scheduled rotation
β”‚   β”‚
β”‚   β”œβ”€β”€ secrethub_web/                  # Phoenix Web Layer
β”‚   β”‚   └── lib/secrethub_web_web/
β”‚   β”‚       β”œβ”€β”€ controllers/            # REST API endpoints
β”‚   β”‚       β”œβ”€β”€ live/admin/             # LiveView admin dashboard
β”‚   β”‚       β”œβ”€β”€ channels/               # Agent WebSocket channels
β”‚   β”‚       └── plugs/                  # Rate limiter, mTLS verification
β”‚   β”‚
β”‚   β”œβ”€β”€ secrethub_agent/                # Distributed Agent Daemon
β”‚   β”‚   └── lib/secrethub_agent/
β”‚   β”‚       β”œβ”€β”€ bootstrap.ex            # AppRole β†’ Certificate flow
β”‚   β”‚       β”œβ”€β”€ connection.ex           # WebSocket client with reconnect
β”‚   β”‚       β”œβ”€β”€ cache.ex                # TTL + LRU secret cache
β”‚   β”‚       β”œβ”€β”€ sinker.ex               # Atomic file writer
β”‚   β”‚       β”œβ”€β”€ template_renderer.ex    # EEx template engine
β”‚   β”‚       β”œβ”€β”€ uds_server.ex           # Unix Domain Socket API
β”‚   β”‚       └── lease_renewer.ex        # Auto lease renewal
β”‚   β”‚
β”‚   └── secrethub_shared/               # Shared Code
β”‚       └── lib/secrethub_shared/
β”‚           β”œβ”€β”€ schemas/                # 20+ Ecto schemas
β”‚           └── crypto/                 # AES-256-GCM, Shamir
β”‚
β”œβ”€β”€ config/                             # Environment configs
β”œβ”€β”€ infrastructure/                     # IaC
β”‚   └── postgres/                       # PostgreSQL init scripts
└── .github/workflows/                  # CI/CD pipelines

🌐 API Reference

System Endpoints (/v1/sys)

Endpoint Method Description
/v1/sys/init POST Initialize vault with Shamir shares
/v1/sys/seal POST Seal the vault
/v1/sys/unseal POST Unseal vault with key shares
/v1/sys/seal-status GET Get vault seal status
/v1/sys/health GET Health check
/v1/sys/health/ready GET Kubernetes readiness probe
/v1/sys/health/live GET Kubernetes liveness probe

Authentication (/v1/auth)

Endpoint Method Description
/v1/auth/approle/login POST AppRole login
/v1/auth/approle/role GET List all roles
/v1/auth/approle/role/:role_name POST Create AppRole
/v1/auth/approle/role/:role_name DELETE Delete AppRole
/v1/auth/approle/role/:role_name/role-id GET Get Role ID
/v1/auth/approle/role/:role_name/secret-id POST Generate Secret ID

Secrets (/v1/secrets)

Endpoint Method Description
/v1/secrets/:path GET Read secret
/v1/secrets/:path POST Write secret
/v1/secrets/:path DELETE Delete secret
/v1/secrets/dynamic/postgresql/creds/:role POST Generate PostgreSQL credentials
/v1/secrets/dynamic/redis/creds/:role POST Generate Redis credentials
/v1/secrets/dynamic/aws/creds/:role POST Generate AWS STS credentials

PKI (/v1/pki)

Endpoint Method Description
/v1/pki/ca/root/generate POST Generate Root CA
/v1/pki/ca/intermediate/generate POST Generate Intermediate CA
/v1/pki/issue POST Issue certificate
/v1/pki/sign-request POST Sign a CSR
/v1/pki/certificates GET List certificates
/v1/pki/certificates/:id GET Get certificate details
/v1/pki/certificates/:id/revoke POST Revoke certificate
/v1/pki/app/issue POST Issue app certificate (bootstrap)
/v1/pki/app/renew POST Renew app certificate

Applications (/v1/apps)

Endpoint Method Description
/v1/apps GET List applications
/v1/apps POST Register application
/v1/apps/:id GET Get application details
/v1/apps/:id PUT Update application
/v1/apps/:id DELETE Delete application
/v1/apps/:id/suspend POST Suspend application
/v1/apps/:id/activate POST Activate application
/v1/apps/:id/certificates GET List app certificates

Leases (/v1/sys/leases)

Endpoint Method Description
/v1/sys/leases GET List active leases
/v1/sys/leases/stats GET Get lease statistics
/v1/sys/leases/renew POST Renew a lease
/v1/sys/leases/revoke POST Revoke a lease

πŸ–₯️ Admin Dashboard

The LiveView-based admin dashboard (/admin) provides:

Core Management

  • Dashboard: System overview, health metrics, quick stats
  • Secrets: Secret browser, version history, bulk operations
  • Policies: Policy editor, entity bindings, simulator
  • Policy Templates: Pre-built templates for common scenarios

Security & PKI

  • PKI: Root/Intermediate CA management, certificate issuance
  • Certificates: Certificate browser, revocation, renewal
  • AppRoles: Role management, secret ID rotation

Infrastructure

  • Agents: Connected agents, status monitoring, health checks
  • Dynamic Engines: PostgreSQL/Redis engine configuration
  • Engine Health: Real-time engine status dashboard
  • Leases: Active lease management, bulk revocation

Operations

  • Audit: Log viewer, search, CSV export
  • Rotations: Rotation schedules, history, manual triggers
  • Templates: Secret template management

Cluster & Monitoring

  • Cluster: Node health, distributed state, deployment status
  • Auto-Unseal: KMS provider configuration
  • Alerts: Alert rules, notification channels
  • Anomalies: Anomaly detection rules, triggered alerts
  • Performance: Performance metrics dashboard

🚨 Anomaly Detection

SecretHub includes a built-in anomaly detection engine with rules for:

Rule Type Description
Failed Logins Detect brute-force authentication attempts
Bulk Deletion Alert on mass secret deletion
Unusual Access Time Detect access outside business hours
Mass Secret Access Alert on abnormal secret read patterns
Credential Export Spike Detect unusual credential generation
Rotation Failures Alert on failed secret rotations
Policy Violations Detect policy bypass attempts

Alert Channels

  • Email notifications
  • Slack webhooks
  • Generic webhooks
  • PagerDuty integration
  • Opsgenie integration

πŸ“‹ Policy Templates

Pre-built policy templates for common scenarios:

Template Description
business_hours Access restricted to business hours (9-5)
ip_restricted Access limited to specific IP ranges
read_only Read-only access to secrets
emergency_access Break-glass emergency access
dev_environment Development environment access
production_readonly Production read-only access
time_limited Time-limited access with expiration
multi_region Multi-region access policies

🚒 Deployment

Release Artifacts

Release Includes
secrethub_core Core + Web + Shared
secrethub_agent Agent + Shared

Docker Images

# Core Service
docker run -d -p 4000:4000 \
  -e DATABASE_URL="postgresql://..." \
  -e SECRET_KEY_BASE="..." \
  ghcr.io/gsmlg-dev/secrethub/core:v1.0.0-rc3

# Agent
docker run -d \
  -e SECRETHUB_CORE_URL="wss://core:4000" \
  -e SECRETHUB_ROLE_ID="..." \
  -e SECRETHUB_SECRET_ID="..." \
  ghcr.io/gsmlg-dev/secrethub/agent:v1.0.0-rc3

Kubernetes (Helm)

helm install secrethub ./infrastructure/helm/secrethub \
  --set core.database.url="postgresql://..." \
  --set core.secretKeyBase="..."

Environment Variables

# Core Service
DATABASE_URL=postgresql://user:pass@host/db  # Or with socket: ?host=/var/run/postgresql
SECRET_KEY_BASE=<64-char-hex>
PHX_HOST=secrethub.example.com
POOL_SIZE=10

# Agent
SECRETHUB_CORE_URL=wss://core.example.com:4000
SECRETHUB_ROLE_ID=<role-id>
SECRETHUB_SECRET_ID=<secret-id>

πŸ§ͺ Development Status

βœ… Completed Features

  • Umbrella project structure with 4 apps
  • PostgreSQL 16 with UUID, pgcrypto extensions (Unix socket support)
  • AppRole authentication (RoleID/SecretID)
  • Full PKI engine (Root CA, Intermediate CA, CSR)
  • Vault seal/unseal with Shamir's Secret Sharing
  • Policy engine with glob patterns and conditions
  • Policy templates for common scenarios
  • Tamper-evident audit logging (hash chains + HMAC)
  • Dynamic secret engines (PostgreSQL, Redis, AWS STS)
  • Auto-unseal providers (AWS KMS, Azure Key Vault, GCP KMS)
  • Agent bootstrap and mTLS WebSocket connection
  • Secret caching with TTL and LRU eviction
  • Template rendering and atomic file writes
  • Lease management with auto-renewal
  • Oban-scheduled secret rotation
  • Application management system
  • Anomaly detection engine
  • Multi-channel alerting (Email, Slack, PagerDuty, Opsgenie)
  • LiveView admin dashboard (20+ pages)
  • CI/CD with GitHub Actions
  • Multi-arch Docker images (amd64/arm64)
  • Helm charts for Kubernetes deployment

πŸ“ Contributing

Commit Convention

type(scope): subject

Types: feat, fix, docs, style, refactor, test, chore

Example:

feat(core): implement AWS STS dynamic secret engine

- Add AssumeRole credential generation
- Implement lease management
- Add integration tests

πŸ“„ License

MIT License


πŸ”— Links

About

SecretHub is a secure, reliable, and highly automated secrets management platform.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors