Credential Manager
MANDATORY security foundation for OpenClaw. Consolidate scattered API keys and credentials into a secure .env file with proper permissions. Use when setting up OpenClaw, migrating credentials, auditin
MANDATORY security foundation for OpenClaw. Consolidate scattered API keys and credentials into a secure .env file with proper permissions. Use when setting up OpenClaw, migrating credentials, auditin
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
STATUS: MANDATORY SECURITY FOUNDATION
Consolidate scattered API keys and credentials into a secure, centralized
.env file.
Centralized
.env credential management is a core requirement for OpenClaw security. If your credentials are scattered across multiple files, stop and consolidate them now.
THE RULE: All credentials MUST be in
~/.openclaw/.env ONLY. No workspace, no skills, no scripts directories.
See:
Every OpenClaw deployment MUST have:
~/.openclaw/.env (mode 600)
This is your single source of truth for all credentials. No exceptions.
Why?
Scattered credentials = scattered attack surface. This skill fixes that.
~/.openclaw/.envThe skill automatically detects credentials by scanning for:
File Patterns:
credentials.json files in config directories.env files-creds or credentials in the nameSensitive Key Patterns:
Security Checks:
600)# Scan for credentials ./scripts/scan.pyReview and consolidate
./scripts/consolidate.py
Validate security
./scripts/validate.py
# Scan only ./scripts/scan.pyConsolidate specific service
./scripts/consolidate.py --service x
Backup without removing
./scripts/consolidate.py --backup-only
Clean up old files
./scripts/cleanup.py --confirm
The skill scans these locations:
~/.config/*/credentials.json ~/.openclaw/workspace/memory/*-creds.json ~/.openclaw/workspace/memory/*credentials*.json ~/.env (if exists, merges)
✅ File permissions: Sets
.env to mode 600 (owner only)
✅ Git protection: Creates/updates .gitignore
✅ Backups: Timestamped backups before changes
✅ Validation: Checks format, permissions, and duplicates
✅ Template: Creates .env.example (safe to share)
After migration:
~/.openclaw/ ├── .env # All credentials (secure) ├── .env.example # Template (safe) ├── .gitignore # Protects .env ├── CREDENTIALS.md # Documentation └── backups/ └── credentials-old-YYYYMMDD/ # Backup of old files
Common services auto-detected:
API_KEY, *_TOKEN, *_SECRET patternsSee references/supported-services.md for full list.
See references/security.md for detailed security guidelines.
Quick checklist:
.env has 600 permissions.env is git-ignoredAll scripts support
--help for detailed usage.
# Scan and report ./scripts/scan.pyInclude custom paths
./scripts/scan.py --paths ~/.myapp/config ~/.local/share/creds
JSON output
./scripts/scan.py --format json
# Interactive mode (prompts before changes) ./scripts/consolidate.pyAuto-confirm (no prompts)
./scripts/consolidate.py --yes
Backup only
./scripts/consolidate.py --backup-only
Specific service
./scripts/consolidate.py --service molten
# Full validation ./scripts/validate.pyCheck permissions only
./scripts/validate.py --check permissions
Fix issues automatically
./scripts/validate.py --fix
# Dry run (shows what would be deleted) ./scripts/cleanup.pyActually delete old files
./scripts/cleanup.py --confirm
Keep backups
./scripts/cleanup.py --confirm --keep-backups
Step 1: Discovery
./scripts/scan.py
Review output to see what will be migrated.
Step 2: Backup & Consolidate
./scripts/consolidate.py
Creates backups, builds
.env, sets permissions.
Step 3: Validation
./scripts/validate.py
Ensures everything is secure and correct.
Step 4: Test Test your applications/skills with the new
.env file.
Step 5: Cleanup
./scripts/cleanup.py --confirm
Removes old credential files (backups remain).
Other OpenClaw skills MUST validate credentials are secure before using them:
#!/usr/bin/env python3 import sys from pathlib import PathAdd credential-manager scripts to path
sys.path.insert(0, str(Path.home() / '.openclaw/skills/credential-manager/scripts'))
Enforce secure .env (exits if not compliant)
from enforce import require_secure_env, get_credential
require_secure_env()
Now safe to load credentials
api_key = get_credential('SERVICE_API_KEY')
#!/usr/bin/env bash set -euo pipefailValidate .env exists and is secure
if ! python3 ~/.openclaw/skills/credential-manager/scripts/enforce.py; then exit 1 fi
Now safe to load
source ~/.openclaw/.env
This creates a fail-fast system: If credentials aren't properly secured, skills refuse to run. Users are forced to fix it.
After migration, load from
.env:
import os from pathlib import PathLoad .env
env_file = Path.home() / '.openclaw' / '.env' with open(env_file) as f: for line in f: if '=' in line and not line.strip().startswith('#'): key, val = line.strip().split('=', 1) os.environ[key] = val
Use credentials
api_key = os.getenv('SERVICE_API_KEY')
# Load .env set -a source ~/.openclaw/.env set +aUse credentials
echo "$SERVICE_API_KEY"
If you migrated using OpenClaw scripts:
from load_credentials import get_credentials creds = get_credentials('x')
Edit
~/.openclaw/.env:
# Add new service NEW_SERVICE_API_KEY=your_key_here NEW_SERVICE_SECRET=your_secret_here
Update template too:
# Edit .env.example NEW_SERVICE_API_KEY=your_key_here NEW_SERVICE_SECRET=your_secret_here
If something goes wrong:
# Find your backup ls -la ~/.openclaw/backups/Restore specific file
cp ~/.openclaw/backups/credentials-old-YYYYMMDD/x-credentials.json.bak
~/.config/x/credentials.json
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.