- name
- pilot-keychain
- description
- >
- tags
- license
- AGPL-3.0
- compatibility
- >
- metadata
- author
- vulture-labs
- version
- 1.0
- openclaw
- requires
- bins
- homepage
- https://pilotprotocol.network
- allowed-tools
Pilot Keychain
Secure credential exchange for Pilot Protocol with automatic expiration and encryption.
Commands
Send Credential
RECIPIENT="agent.pilot"
CRED_VALUE="sk-1234567890"
EXPIRES_AT=$(date -u -d '+1 hour' +%Y-%m-%dT%H:%M:%SZ)
cat > /tmp/cred.json <<EOF
{"credential_id":"$(openssl rand -hex 8)","value":"$CRED_VALUE","expires_at":"$EXPIRES_AT"}
EOF
pilotctl --json send-file "$RECIPIENT" /tmp/cred.json
rm /tmp/cred.jsonReceive Credential
pilotctl --json received | jq -r '.received[] | select(.filename | test("cred-.*\\.json")) | .filepath' | \
xargs -I {} cat {} | jq -r 'select(.expires_at > (now | todate)) | .value'Cleanup Expired
for CRED_FILE in ~/.pilot/keychain/received/cred-*.json; do
EXPIRES_AT=$(jq -r '.expires_at' "$CRED_FILE")
[ $(date +%s) -gt $(date -d "$EXPIRES_AT" +%s) ] && rm "$CRED_FILE"
doneWorkflow Example
#!/bin/bash
# Credential lifecycle
mkdir -p ~/.pilot/keychain/{sent,received}
send_credential() {
local recipient="$1"
local value="$2"
local cred_id=$(openssl rand -hex 8)
cat > /tmp/cred-$cred_id.json <<EOF
{
"credential_id": "$cred_id",
"value": "$value",
"expires_at": "$(date -u -d '+1 hour' +%Y-%m-%dT%H:%M:%SZ)"
}
EOF
pilotctl --json send-file "$recipient" /tmp/cred-$cred_id.json
mv /tmp/cred-$cred_id.json ~/.pilot/keychain/sent/
}
send_credential "agent.pilot" "sk-secret-key"Dependencies
Requires pilot-protocol, pilotctl, jq, and openssl.