Skip to content

[Enhancement] CLI Credentials: Per-Agent Environment Variables #744

@mrgoonie

Description

@mrgoonie

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=100

Proposed 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:

  1. Load global credentials (nếu có)
  2. Override với per-agent env vars
  3. Inject vào process environment
  4. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:configConfig loading, env vars, secretsenhancementNew feature or requestux

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions