- Use /v1/metadata/balance endpoint (same as letta-code)
- Pass API key explicitly since it may not be in process.env yet
- Add debug logging for billing tier detection
🤖 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta <noreply@letta.com>
- Add models.json with featured models and free models (GLM-4.7, MiniMax M2.1)
- Free plan users see free models first, then BYOK options
- Paid users see featured models first
- Self-hosted servers fetch models from server API
- Show billing tier during onboard
🤖 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta <noreply@letta.com>
- Add "Enter self-hosted URL" option in authentication step
- Defaults to http://localhost:8283
- Sets LETTA_BASE_URL so model listing works from local server
- Validates connection to self-hosted server
- Shows server URL in configuration summary
🤖 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta <noreply@letta.com>
When a new agent is created, we now save the server URL (baseUrl) along with
the agent ID using store.setAgent(). This ensures proper server mismatch
detection when switching between local and cloud Letta servers.
🤖 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta <noreply@letta.com>
- Convert config menu to @clack/prompts select (arrow key navigation)
- Check both .env file and shell environment for config display
- Filter placeholder values (e.g., "your_telegram_bot_token")
- Import 'dotenv/config' so API calls work from CLI
- Add pagination to model selector (maxItems: 10, shows all models)
- Remove arbitrary limits (was 15 base + 3 BYOK, now shows all)
- Shared model-selection utility used in both onboard and config
- Better tier labels: "🆓 Free", "⭐ Premium", "💰 Pay-per-use"
- BYOK models labeled as "🔑 BYOK"
- Sort base by tier (free first), BYOK alphabetically
Inspired by letta-code's ModelSelector UX patterns.
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta <noreply@letta.com>