Iron Proxy Gateway for NanoClaw
nanocoai/nanoclaw
Installs or refreshes Iron Proxy and its Iron Control web console for NanoClaw, with a local Docker setup, database, credentials and a human approval bridge.
Portable credential management for AI agents using age encryption, session-scoped leases, auto-rotation, and killswitch.
$ npx skills add joelhooks/agent-secrets --skill secret-management -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install joelhooks/agent-secrets secret-management --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/joelhooks/agent-secrets.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/secret-management .claude/skills/secret-management && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "secret-management" agent skill from https://github.com/joelhooks/agent-secrets/tree/main/skills/secret-management into .claude/skills/secret-management/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "secret-management", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/joelhooks/agent-secrets/tree/main/skills/secret-managementType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add joelhooks/agent-secrets --skill secret-management -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install joelhooks/agent-secrets secret-management --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joelhooks/agent-secrets.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/secret-management .agents/skills/secret-management && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "secret-management" agent skill from https://github.com/joelhooks/agent-secrets/tree/main/skills/secret-management into .agents/skills/secret-management/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "secret-management", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add joelhooks/agent-secrets --skill secret-management -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install joelhooks/agent-secrets secret-management --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joelhooks/agent-secrets.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/secret-management .cursor/skills/secret-management && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "secret-management" agent skill from https://github.com/joelhooks/agent-secrets/tree/main/skills/secret-management into .cursor/skills/secret-management/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "secret-management", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/joelhooks/agent-secrets.git --path skills/secret-management--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add joelhooks/agent-secrets --skill secret-management -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install joelhooks/agent-secrets secret-management --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joelhooks/agent-secrets.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/secret-management .gemini/skills/secret-management && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "secret-management" agent skill from https://github.com/joelhooks/agent-secrets/tree/main/skills/secret-management into .gemini/skills/secret-management/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "secret-management", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install joelhooks/agent-secrets secret-managementInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add joelhooks/agent-secrets --skill secret-management -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/joelhooks/agent-secrets.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/secret-management .github/skills/secret-management && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "secret-management" agent skill from https://github.com/joelhooks/agent-secrets/tree/main/skills/secret-management into .github/skills/secret-management/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "secret-management", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add joelhooks/agent-secrets --skill secret-management -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install joelhooks/agent-secrets secret-management --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joelhooks/agent-secrets.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/secret-management .opencode/skills/secret-management && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "secret-management" agent skill from https://github.com/joelhooks/agent-secrets/tree/main/skills/secret-management into .opencode/skills/secret-management/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "secret-management", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
secret-managementPortable credential management for AI agents using age encryption, session-scoped leases, auto-rotation, and killswitch.
Secret Management is an agent skill from joelhooks/agent-secrets. Portable credential management for AI agents using age encryption, session-scoped leases, auto-rotation, and killswitch. Use for time-bounded credential access, agent-secrets daemon timeouts, or supervised restart and launchd reload diagnosis.
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: {"os":["linux","macos"],"shell":["bash","zsh","sh"]}
It sits in DevOps & Cloud, covering Secrets management. The repository describes itself as: 🛡️ Portable credential management for AI agents — Age encryption, session leases, killswitch. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a095aca. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
makeghcurlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.anthropic.comAlso links to:
age-encryption.orgFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
GITHUB_TOKENANTHROPIC_API_KEYVERCEL_TOKENOPENAI_KEYOPENAI_API_KEYGH_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
{"os":["linux","macos"],"shell":["bash","zsh","sh"]}
From compatibility in the SKILL.md frontmatter.
Secret Management loads about 3k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 885 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from joelhooks/agent-secrets at commit a095aca, republished under its MIT licence (© joelhooks). 885 words, ~2,983 tokens.
.claude/skills/secret-management/SKILL.md (or your agent's skills folder).This skill enables AI agents to securely manage and access credentials using agent-secrets, a Go CLI that provides:
Use agent-secrets when your agent needs to:
The secrets CLI must be installed and in your PATH:
# Install (see repo README for build instructions)
# https://github.com/joelhooks/agent-secrets
# Initialize the encrypted store (run once per machine)
secrets init
# Discover command tree and capabilities
secretsThis creates:
~/.agent-secrets/identity.age — X25519 private key (0600 permissions)~/.agent-secrets/secrets.age — encrypted secrets store~/.agent-secrets/config.json — configuration~/.agent-secrets/agent-secrets.sock — daemon socketUse discovery-first commands before requesting a lease:
# Root command returns JSON command tree with usage and next_actions
secrets
# List all stored secret names and lease metadata
secrets listInteractive mode (prompts for secret value):
secrets add my_secretWith rotation hook (auto-refresh on expiration):
secrets add github_token --rotate-via "gh auth refresh"
secrets add aws_token --rotate-via "aws sts get-session-token --duration-seconds 3600"From stdin (pipe secret value):
echo "sk-ant-api03-..." | secrets add anthropic_key
cat service-account.json | secrets add gcp_credentialssecrets lease <name> returns ONLY the raw secret value by default, so no extra flags are needed for shell export:
# Primary pattern
export GITHUB_TOKEN=$(secrets lease github_token)
# Custom TTL
export ANTHROPIC_API_KEY=$(secrets lease anthropic_key --ttl 30m)
# With client ID for audit trail
export OPENAI_KEY=$(secrets lease openai_key --ttl 2h --client-id "claude-code-worker")
# Use --json when you need lease metadata and next_actions
secrets lease github_token --jsonExample JSON envelope (--json):
{
"ok": true,
"command": "secrets lease",
"result": {
"lease_id": "lease-123",
"secret_name": "github_token",
"value": "ghp_xxx",
"expires_at": "2026-02-19T12:00:00Z",
"ttl": "1h",
"client_id": "claude-code-worker"
},
"next_actions": [
{"command": "export GITHUB_TOKEN=$(secrets lease github_token)", "description": "Export to environment"},
{"command": "secrets revoke lease-123", "description": "Revoke this lease"}
]
}Error responses include a concrete fix field:
{
"ok": false,
"command": "secrets lease",
"error": {"message": "failed to acquire lease: ... secret not found", "code": "generic_error"},
"fix": "Check available secrets: secrets status"
}Important: Secrets cannot be accessed directly. You must acquire a lease, and leases auto-expire.
View daemon and lease status:
secrets statusOutput shows:
View the append-only audit log:
# Last 50 entries (default)
secrets audit
# Last 100 entries
secrets audit --tail 100Logs include:
Revoke specific lease:
secrets revoke abc123KILLSWITCH — Revoke ALL active leases:
secrets revoke --allUse the killswitch when:
In your agent's environment setup script:
# Session initialization
secrets list
export GITHUB_TOKEN=$(secrets lease github_token)
export ANTHROPIC_API_KEY=$(secrets lease anthropic_key)
export OPENAI_API_KEY=$(secrets lease openai_key)
# Now agent has time-bounded access
gh api /user
curl -H "Authorization: Bearer $ANTHROPIC_API_KEY" https://api.anthropic.com/...For multi-agent swarm tasks, each worker should:
--ttl matching expected task durationExample:
# Worker initialization
WORKER_ID="worker-${EPIC_ID}-${TASK_ID}"
export GH_TOKEN=$(secrets lease github_token --ttl 2h --client-id "$WORKER_ID")
export VERCEL_TOKEN=$(secrets lease vercel_token --ttl 2h --client-id "$WORKER_ID")
# Work proceeds with secured credentials
# Leases auto-expire after 2 hours0600 (read/write owner only)revoke --all immediately invalidates all active leasesAuto-rotation commands run on lease expiration or manual trigger:
# GitHub token refresh
secrets add github_token --rotate-via "gh auth refresh"
# AWS session token
secrets add aws_token --rotate-via "aws sts get-session-token --duration-seconds 3600"
# Custom script
secrets add api_key --rotate-via "/path/to/refresh-token.sh"Edit ~/.agent-secrets/config.json to customize:
{
"directory": "/home/user/.agent-secrets",
"socket_path": "/home/user/.agent-secrets/agent-secrets.sock",
"default_lease_ttl": "1h",
"max_lease_ttl": "24h",
"rotation_timeout": "30s",
"heartbeat": {
"enabled": false,
"url": "https://your-endpoint.com/heartbeat",
"interval": "1m",
"timeout": "10s",
"fail_action": {
"revoke_all": true,
"rotate_all": false,
"wipe_store": false
}
}
}Enable remote killswitch via heartbeat failure:
heartbeat.enabled: trueIf heartbeat endpoint becomes unreachable for timeout duration, configured fail actions execute automatically.
| Command | Description | Example |
|---|---|---|
secrets | Show command tree for discovery | secrets |
init | Initialize encrypted store | secrets init |
list | List stored secret names | secrets list |
add <name> | Add secret (interactive or stdin) | secrets add github_token |
add <name> --rotate-via <cmd> | Add secret with rotation hook | secrets add token --rotate-via "gh auth refresh" |
lease <name> | Get raw secret value (default 1h lease) | secrets lease github_token |
lease <name> --json | Get lease envelope + next actions | secrets lease github_token --json |
lease <name> --ttl <duration> | Get lease with custom TTL | secrets lease api_key --ttl 30m |
lease <name> --client-id <id> | Get lease with audit identifier | secrets lease token --client-id "worker-123" |
status | Show daemon and lease status | secrets status |
audit | View audit log (last 50 entries) | secrets audit |
audit --tail <n> | View last N audit entries | secrets audit --tail 100 |
revoke <lease-id> | Revoke specific lease | secrets revoke abc123 |
revoke --all | KILLSWITCH: Revoke all leases | secrets revoke --all |
Daemon missing, slow, or wedged?
Read Daemon operations. Start with a timed RPC:
secrets --no-update-check --timeout 2 statusA running PID and connectable socket do not prove responsiveness. Capture timing and supervisor state before recovery. Use secrets daemon restart for a responsive supervised daemon; otherwise use the host's approved supervisor recovery path. Never start a second daemon against a supervised store.
On macOS, credential requests serving interactive clients need ProcessType=Interactive, not Background. Check the loaded job, not just the plist on disk. A configuration reload must wait for confirmed service removal after bootout before bootstrap; a fixed sleep or kickstart is not a reload. Preserve ownership and permissions.
Verify status latency and an authorized short-lived lease after recovery. Discard the credential value. Check lease-command success before exporting output; never treat an error envelope as a credential.
Permission denied on identity file?
chmod 600 ~/.agent-secrets/identity.ageForgot which secrets are stored?
secrets listNeed to rotate everything immediately?
secrets revoke --all
# Then add secrets again with fresh valuesrevoke --all works in your environment#!/bin/bash
# Agent session initialization with agent-secrets
set -euo pipefail
# Navigate to agent-secrets CLI
SECRETS_CLI="/home/joel/Code/joelhooks/agent-secrets/secrets"
# Lease credentials for 2-hour work session
echo "🔐 Acquiring credentials..."
export GITHUB_TOKEN=$($SECRETS_CLI lease github_token)
export ANTHROPIC_API_KEY=$($SECRETS_CLI lease anthropic_key)
export VERCEL_TOKEN=$($SECRETS_CLI lease vercel_token)
# Verify credentials loaded
echo "✅ Credentials acquired (expire in 2h)"
# Check status
$SECRETS_CLI status
# Agent work proceeds here...
# gh pr create ...
# vercel deploy ...
# etc.
# No cleanup needed - leases auto-expire
echo "🎯 Session complete (leases will auto-expire)"CLI source: /home/joel/Code/joelhooks/agent-secrets
Build the CLI:
cd /home/joel/Code/joelhooks/agent-secrets
make build
# Binary: secretsInstall system-wide:
cd /home/joel/Code/joelhooks/agent-secrets
make install
# Binary installed to $GOPATH/bin/secrets© joelhooks, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/secret-management of joelhooks/agent-secrets.
Open the folder on GitHubat commit a095aca
Secret Management next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Secret Management this skilljoelhooks/agent-secrets | 109 | — | ~3k | Automated safety check: Pass | MIT | |
| Iron Proxy Gateway for NanoClawnanocoai/nanoclaw | 31k | — | ~4.6k | Automated safety check: Notes | MIT | |
| LangBot Deployment Guidelangbot-app/LangBot | 18k | — | ~1.2k | Automated safety check: Notes | Apache-2.0 | |
| Env Var Conventionssgl-project/sglang | 37k | 2 repos | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Mac Fleet Maintenancesteipete/agent-scripts | 7.3k | — | ~4.8k | Automated safety check: Pass | MIT | |
| Add Config Env Varbaserow/baserow | 6.1k | — | ~1.1k | Automated safety check: Pass | Custom licence |
nanocoai/nanoclaw
Installs or refreshes Iron Proxy and its Iron Control web console for NanoClaw, with a local Docker setup, database, credentials and a human approval bridge.
langbot-app/LangBot
Deploys and configures a LangBot instance with Docker Compose or Kubernetes, covering config.yaml, the Box sandbox runtime, the plugin runtime and the global API key.
sgl-project/sglang
Conventions for SGLang environment variables — where to define, how to access, how to name, and how to deprecate.
steipete/agent-scripts
Inventories and maintains a fleet of Macs from a desired-state file: package updates, repo and Xcode sync, and disk, backup and security health reports.
baserow/baserow
Add a Baserow configuration environment variable for the backend, frontend, or both, and propagate it through settings, Nuxt runtime config, Docker Compose, documentation, consumers, and tests as…
TencentEdgeOne/edgeone-makers-tools
EdgeOne Makers CLI command reference. An agent skill from TencentEdgeOne/edgeone-makers-tools.
Categories
Portable credential management for AI agents using age encryption, session-scoped leases, auto-rotation, and killswitch. Secret Management is an agent skill from joelhooks/agent-secrets. Portable credential management for AI agents using age encryption, session-scoped leases, auto-rotation, and killswitch.
Secret Management fits situations like: time-bounded credential access; agent-secrets daemon timeouts; supervised restart and launchd reload diagnosis.
Run `npx skills add joelhooks/agent-secrets --skill secret-management -a claude-code`. Or copy the skill folder (skills/secret-management in joelhooks/agent-secrets) into .claude/skills/secret-management in your project. Claude Code loads it when a task matches its description.
Run `npx skills add joelhooks/agent-secrets --skill secret-management -a codex`. Or copy the skill folder (skills/secret-management in joelhooks/agent-secrets) into .agents/skills/secret-management in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add joelhooks/agent-secrets --skill secret-management -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/secret-management, .gemini/skills/secret-management, .github/skills/secret-management and .opencode/skills/secret-management in your project.
Going by SKILL.md and its folder, Secret Management needs the command-line tools its instructions call (make, gh and curl) and credentials named GITHUB_TOKEN, ANTHROPIC_API_KEY, VERCEL_TOKEN and OPENAI_KEY. Our summary lists: A credential in GITHUB_TOKEN; A credential in ANTHROPIC_API_KEY. Compatibility (from SKILL.md): {"os":["linux","macos"],"shell":["bash","zsh","sh"]}.
SKILL.md names 2 domains. In commands or code: api.anthropic.com; the agent is likely to contact it when it follows the instructions. As links in the text: age-encryption.org. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Secret Management is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Secret Management: Iron Proxy Gateway for NanoClaw (nanocoai/nanoclaw, 31k stars), LangBot Deployment Guide (langbot-app/LangBot, 18k stars), Env Var Conventions (sgl-project/sglang, 37k stars) and Mac Fleet Maintenance (steipete/agent-scripts, 7.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
joelhooks (a GitHub user) maintains it in joelhooks/agent-secrets, which has 109 GitHub stars. The repository was last updated on September 25, 2026.
Source: joelhooks/agent-secrets on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.