You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MCP server for secure credential management, browser-based login automation, SSH key vault, TOTP/2FA auto-solving, and audit logging.
Status: active | License: MIT | Version: 0.2.0
Overview
Auth Vault stores encrypted credentials, secrets, and SSH keys (AES-256-GCM), automates browser login flows via Playwright, auto-solves TOTP-based 2FA challenges, and tracks sensitive actions via an audit log. It provides both an MCP interface (for AI clients) and a Web UI dashboard (for manual management).
Interface
Port
URL
Web UI Dashboard
5600
http://<tailscale-ip>:5600/
MCP SSE
5501
http://<tailscale-ip>:5501/sse
MCP Health
5501
http://<tailscale-ip>:5501/health
Features
Encrypted vault β credentials, secrets, and SSH keys stored with AES-256-GCM
TOTP rotation detection β suggests code refresh when window is near expiry
QR code support β generate QR for Google Authenticator setup
Secrets management β API keys, bearer tokens, access/refresh tokens
Audit logging β JSONL audit log with auto-rotation for sensitive actions
Vault health monitoring β periodic integrity checks every 12 hours
Discovery API β metadata overview of all vault contents without decryption
Tailscale-only access β binds to Tailscale IP by default, blocks external traffic
Two service modes β STDIO (MCP standard) and SSE (HTTP for persistent connections)
Quick Start
Prerequisites
Node.js 22+
Playwright Chromium (installed via postinstall)
Tailscale (recommended for SSE mode)
Setup
# Install dependencies
pnpm install
# Build TypeScript
pnpm run build
# Configure environment
cp .env.example .env
# Edit .env: set VAULT_ENCRYPTION_KEY (64 hex chars) or leave empty for auto-generated
Configuration
All configuration via .env file or environment variables:
Variable
Default
Description
VAULT_ROOT
./vault
Storage directory for encrypted vault files
VAULT_ENCRYPTION_KEY
auto-generated
AES-256 key (64 hex chars, persist for data survival)
AUTH_SSE_PORT
β
Enable SSE mode on given port (empty = STDIO mode)
AUTH_BIND_ADDRESS
auto (Tailscale)
Explicit bind address for SSE mode
BROWSER_HEADLESS
true
Run Playwright in headless mode
BROWSER_TIMEOUT
30000
Browser operation timeout (ms)
AUDIT_LOG_MAX_BYTES
10485760
Audit log rotation threshold (10 MB)
LOG_LEVEL
info
Logging level: debug, info, warn, error
Usage
STDIO Mode (default for MCP clients)
node dist/index.js
SSE Mode (HTTP server for persistent connections)
# Set AUTH_SSE_PORT=5501 in .env, then:
node dist/index.js
Web UI Dashboard
node dist/web/server.js
# Dashboard at http://<tailscale-ip>:5600/
CLI Commands
Credentials
pnpm run add-creds # Add credentials interactively
pnpm run list-creds # List stored credentials (JSON)
pnpm run get-creds # Get credential details (JSON)
Secrets
pnpm run add-secret # Add a secret interactively
pnpm run list-secrets # List stored secrets (JSON)
SSH Keys
pnpm run add-ssh-key # Add existing SSH key interactively
pnpm run generate-ssh-key # Generate new SSH key pair and store
pnpm run list-ssh-keys # List stored SSH keys (JSON)
pnpm run get-ssh-key # Get SSH key details (JSON)
REST API
Credentials
Method
Path
Description
GET
/api/credentials
List all credentials (metadata only)
GET
/api/credentials?includePassword=true
List all credentials (with passwords)
GET
/api/credentials/:id
Get credential details (password hidden by default)
POST
/api/credentials
Create a new credential
PUT
/api/credentials/:id
Update a credential
DELETE
/api/credentials/:id
Delete a credential
GET
/api/credentials/:id/devices
List trusted devices
POST
/api/credentials/:id/devices/add
Add a trusted device
DELETE
/api/credentials/:id/devices/:fingerprint
Remove a trusted device
GET
/api/credentials/:id/audit
Audit log entries for a credential
POST
/api/credentials/:id/trust-device
Shortcut to add a trusted device
Secrets
Method
Path
Description
GET
/api/secrets
List all secrets (metadata only)
POST
/api/secrets
Create a new secret
DELETE
/api/secrets/:id
Delete a secret
GET
/api/secrets/:id/detail
Get decrypted secret value
SSH Keys
Method
Path
Description
GET
/api/ssh
List all SSH keys
GET
/api/ssh/:id
Get SSH key details (private key hidden by default)
POST
/api/ssh
Store an SSH key
PUT
/api/ssh/:id
Update an SSH key
DELETE
/api/ssh/:id
Delete an SSH key
POST
/api/ssh/generate
Generate and store a new SSH key pair
GET
/api/ssh/:id/config
Get SSH config fragment
POST
/api/ssh/extract
Extract public key from private key
POST
/api/ssh/:id/rotate
Generate new key pair for existing entry
GET
/api/ssh/:id/public
Get public key in plain text
TOTP / 2FA
Method
Path
Description
GET
/api/totp/generate
Generate a new TOTP secret with QR code
POST
/api/totp/verify
Verify a TOTP code (returns rotationSuggested if near expiry)