-
Notifications
You must be signed in to change notification settings - Fork 548
[Enhancement] CLI Credentials: Per-Agent Environment Variables #744
Copy link
Copy link
Open
Labels
area:configConfig loading, env vars, secretsConfig loading, env vars, secretsenhancementNew feature or requestNew feature or requestux
Description
Problem
Hiện tại CLI credentials được cấu hình global cho tất cả agents, cũng đã có tạo Environment Variables theo mỗi user. Tuy nhiên, nhiều use-case yêu cầu mỗi agent có environment variables khác nhau khi chạy cùng một CLI command.
Use Cases
1. Multi-tenant Social Media Management
# Agent A (cho brand A)
ZERNIO_API_KEY=key_for_brand_A
ZERNIO_ACCOUNT_ID=account_A
# Agent B (cho brand B)
ZERNIO_API_KEY=key_for_brand_B
ZERNIO_ACCOUNT_ID=account_B
# Cùng command nhưng post vào accounts khác nhau
zernio posts:create --content "Hello"2. Multi-database Access
# Agent dev
DATABASE_URL=postgres://dev@localhost/dev_db
# Agent prod
DATABASE_URL=postgres://prod@server/prod_db
# Cùng CLI tool nhưng query databases khác nhau
my-cli db:query "SELECT * FROM users"3. API Rate Limiting per Agent
# Agent premium
API_TIER=premium
API_RATE_LIMIT=1000
# Agent free
API_TIER=free
API_RATE_LIMIT=100Proposed Solution
UI: Per-Agent Environment Variables
Trong trang CLI Package → Credentials:
┌─────────────────────────────────────┐
│ Package: zernio │
├─────────────────────────────────────┤
│ Global Credentials (optional): │
│ API_KEY: sk-xxxx │
│ │
│ Per-Agent Overrides: │
│ ┌─────────────────────────────────┐ │
│ │ Agent: goclaw │ │
│ │ ZERNIO_ACCOUNT_ID: account_A │ │
│ │ API_TIER: premium │ │
│ │ [+ Add Variable] │ │
│ └─────────────────────────────────┘ │
│ ┌─────────────────────────────────┐ │
│ │ Agent: clax │ │
│ │ ZERNIO_ACCOUNT_ID: account_B │ │
│ │ API_TIER: free │ │
│ │ [+ Add Variable] │ │
│ └─────────────────────────────────┘ │
│ [+ Add Agent Override] │
└─────────────────────────────────────┘
Runtime Behavior
Khi agent chạy CLI command:
- Load global credentials (nếu có)
- Override với per-agent env vars
- Inject vào process environment
- Execute command
API Schema
{
"package": "zernio",
"globalCredentials": {
"ZERNIO_API_KEY": "sk-xxx"
},
"agentOverrides": {
"goclaw": {
"ZERNIO_ACCOUNT_ID": "account_A",
"API_TIER": "premium"
},
"clax": {
"ZERNIO_ACCOUNT_ID": "account_B",
"API_TIER": "free"
}
}
}Related
Related to #741 - Unified CLI credentials management.
Security Considerations
- Per-agent env vars nên được encrypt như global credentials
- Agent chỉ thấy env vars của chính mình, không thấy của agent khác
- Audit log khi env vars được thay đổi
- Support secret rotation per agent
Implementation Priority
P2-medium - Tính năng này quan trọng cho multi-tenant scenarios nhưng không blocking cho core functionality.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:configConfig loading, env vars, secretsConfig loading, env vars, secretsenhancementNew feature or requestNew feature or requestux