This guide provides comprehensive documentation for configuring Langstar to work with LangSmith and LangGraph Cloud services.
- Quick Start
- Configuration Methods
- Configuration File
- Environment Variables
- Service-Specific Configuration
- Configuration Precedence
- Common Scenarios
- Viewing Configuration
- Migration Guide
The fastest way to get started depends on which Langstar commands you plan to use:
export LANGSMITH_API_KEY="<your-api-key>"
langstar prompt listexport LANGSMITH_API_KEY="<your-api-key>"
langstar assistant listexport LANGSMITH_API_KEY="<your-langsmith-key>"
export LANGSMITH_API_KEY="<your-api-key>"
langstar prompt list # Uses LANGSMITH_API_KEY
langstar assistant list # Uses LANGSMITH_API_KEYLangstar supports three configuration methods, evaluated in this order of precedence:
- Environment variables (highest priority)
- Configuration file (
~/.config/langstar/config.toml) - Default values (lowest priority)
Note: Command-line flags (when available) override environment variables for specific commands.
Command-line flags:
- One-time operations
- Overriding default configuration for a single command
- Scripting with varying parameters
Configuration file:
- Persistent settings used regularly
- Team environments with shared configuration
- Multiple API keys or projects
Environment variables:
- CI/CD pipelines
- Containerized environments
- Quick temporary overrides
- Development environments
The configuration file is located at:
- macOS and Linux:
~/.config/langstar/config.toml - Windows:
%APPDATA%\langstar\config.toml
To create a config file with all available options, run:
langstar config createThe configuration file uses TOML format:
[langstar]
# General settings
output_format = "table" # or "json"
# LangSmith configuration (for prompt commands)
langsmith_api_key = "<your-langsmith-key>"
organization_id = "<your-org-id>" # Optional
workspace_id = "<your-workspace-id>" # Optional
# LangGraph configuration (for assistant commands)
# Assistants use the same langsmith_api_key[langstar]
# Output format for all commands (can be overridden with --format flag)
output_format = "table"
# LangSmith API configuration
langsmith_api_key = "<your-langsmith-key>"
# Optional: Organization scoping for prompts
# When set, prompt operations default to private prompts in this org
organization_id = "<your-org-id>"
organization_name = "My Organization" # Informational only
# Optional: Workspace scoping for prompts
# Narrows scope from organization to specific workspace
workspace_id = "<your-workspace-id>"
workspace_name = "My Workspace" # Informational only
# LangGraph API configuration
# Separate key for LangGraph assistants
# Assistants use the same langsmith_api_keyUsed by langstar prompt * commands:
export LANGSMITH_API_KEY="<your-api-key>"# Organization scoping
export LANGSMITH_ORGANIZATION_ID="<your-org-id>"
export LANGSMITH_ORGANIZATION_NAME="<org-name>" # Informational
# Workspace scoping (requires organization)
export LANGSMITH_WORKSPACE_ID="<your-workspace-id>"
export LANGSMITH_WORKSPACE_NAME="<workspace-name>" # InformationalUsed by langstar assistant * commands:
# Preferred
export LANGSMITH_API_KEY="<your-api-key>"
# Or fallback to LangSmith key
export LANGSMITH_API_KEY="<your-api-key>"LangGraph assistants are deployment-level resources:
- ❌ No
LANGSMITH_ORGANIZATION_IDneeded - ❌ No
LANGSMITH_WORKSPACE_IDneeded - ✅ Scoped automatically by your API key
# Output format (table or json)
export LANGSTAR_OUTPUT_FORMAT="json"LangSmith prompts support hierarchical multi-tenancy:
- Organizations contain multiple workspaces
- Workspaces contain prompts
- Scoping controls which prompts you can access
| Option | Required | Purpose |
|---|---|---|
langsmith_api_key |
Yes | Authentication |
organization_id |
No | Scope to organization's prompts |
workspace_id |
No | Scope to workspace's prompts |
No scoping (default):
export LANGSMITH_API_KEY="<key>"
langstar prompt list
# Returns: All public prompts + your personal promptsOrganization scoping:
export LANGSMITH_API_KEY="<key>"
export LANGSMITH_ORGANIZATION_ID="<org-id>"
langstar prompt list
# Returns: Private prompts in organization (default)
langstar prompt list --public
# Returns: Public prompts in organizationWorkspace scoping:
export LANGSMITH_API_KEY="<key>"
export LANGSMITH_WORKSPACE_ID="<workspace-id>"
langstar prompt list
# Returns: Private prompts in workspace# Override organization for one command
langstar prompt list --organization-id "<different-org-id>"
# Override workspace
langstar prompt search "query" --workspace-id "<workspace-id>"
# Access public prompts when scoped
langstar prompt list --organization-id "<org-id>" --publicLangGraph assistants are deployment-level resources:
- Each API key is tied to a specific deployment
- No additional scoping configuration needed
- Simpler model for graph-based applications
| Option | Required | Purpose |
|---|---|---|
langsmith_api_key |
Yes | Authentication + deployment scoping |
export LANGSMITH_API_KEY="<key>"
langstar assistant list
# Returns: All assistants in the deployment tied to this API keyThe API key automatically determines:
- Which deployment you're accessing
- Which assistants you can see and manage
- Authentication and authorization
These do NOT apply to assistants:
- ❌
organization_id- Not used - ❌
workspace_id- Not used - ❌ No
--organization-idflags - ❌ No
--workspace-idflags
When the same setting is defined in multiple places, Langstar uses this precedence order:
- Command-line flags (highest)
- Configuration file
- Environment variables (lowest)
Scenario 1: API key override
# Config file has: langsmith_api_key = "key-from-file"
export LANGSMITH_API_KEY="key-from-env"
langstar prompt list
# Uses: key-from-env (environment overrides file)Scenario 2: Organization override
# Config file has: organization_id = "org-from-file"
export LANGSMITH_ORGANIZATION_ID="org-from-env"
langstar prompt list --organization-id "org-from-flag"
# Uses: org-from-flag (flag overrides everything)Scenario 3: Multiple sources
# config.toml
[langstar]
output_format = "table"
langsmith_api_key = "key-from-file"export LANGSMITH_ORGANIZATION_ID="org-from-env"
langstar prompt list --workspace-id "workspace-from-flag" --format jsonResult:
- API key:
key-from-file(config file) - Organization:
org-from-env(environment) - Workspace:
workspace-from-flag(command flag) - Output format:
json(command flag)
Setup:
# Create config file with defaults
langstar config create
# Or create manually
mkdir -p ~/.config/langstar
cat > ~/.config/langstar/config.toml <<EOF
langsmith_api_key = "<your-langsmith-key>"
output_format = "table"
EOFUsage:
# Just run commands, configuration is automatic
langstar prompt list
langstar assistant listSetup:
# ~/.config/langstar/config.toml
langsmith_api_key = "<your-key>"
# Scope prompts to team organization
organization_id = "<team-org-id>"Usage:
# Lists private prompts in team organization
langstar prompt list
# Access public prompts
langstar prompt list --public
# Assistants work the same (no scoping)
langstar assistant listSetup:
# ~/.config/langstar/config.toml
langsmith_api_key = "<your-key>"
# Default organization (can be overridden)
organization_id = "<default-org-id>"Usage:
# Use default org
langstar prompt list
# Override for client A
langstar prompt list --organization-id "<client-a-org-id>"
# Override for client B workspace
langstar prompt search "query" --workspace-id "<client-b-workspace-id>"Setup:
# .github/workflows/test.yml
env:
LANGSMITH_API_KEY: ${{ secrets.LANGSMITH_API_KEY }}
LANGSMITH_API_KEY: ${{ secrets.LANGSMITH_API_KEY }}
LANGSTAR_OUTPUT_FORMAT: jsonUsage:
# Environment variables configured in CI
langstar prompt list --format json | jq '.[] | .name'
langstar assistant search "test-bot" --format jsonSetup:
# Development
export LANGSMITH_API_KEY="<dev-key>"
export LANGSMITH_API_KEY="<dev-key>"
# Production (use different keys)
export LANGSMITH_API_KEY="<prod-key>"
export LANGSMITH_API_KEY="<prod-key>"Usage:
# Test in development
langstar assistant list
# Deploy to production (different API key automatically scopes to prod deployment)
export LANGSMITH_API_KEY="<prod-key>"
langstar assistant create --graph-id "<graph-id>" --name "Prod Bot"Check your current configuration at any time:
langstar configExample output:
Configuration file: ~/.config/langstar/config.toml
File exists: true
Current configuration:
output_format: table (from config file)
timezone: local (from config file)
hide_workspace_and_org_id_message: false (from config file)
Authentication and scoping:
langsmith_api_key: lsv2_sk_ab... (from env: LANGSMITH_API_KEY)
organization_id: <your-org-id> (from config file)
workspace_id: <your-workspace-id> (from config file)
github_integration_id: not set
Active scope: Workspace (narrower)
→ Operations will be scoped to the workspace
💡 Tip: Run 'langstar config env' to see all environment variable mappings
💡 Tip: Run 'langstar config validate' to check for config file errors
What it shows:
- Configuration file location
- Which API keys are set (without exposing the actual keys)
- Organization/workspace scoping status
- Output format setting
What it doesn't show:
- Actual API key values (security)
- Environment variable values (use
env | grep LANGto check)
Before:
export LANGSMITH_API_KEY="<key>"
export LANGSMITH_ORGANIZATION_ID="<org-id>"
export LANGSMITH_API_KEY="<key>"After:
# Create config file
langstar config create
# Or manually:
mkdir -p ~/.config/langstar
cat > ~/.config/langstar/config.toml <<EOF
langsmith_api_key = "<key>"
organization_id = "<org-id>"
EOF
# Remove environment variables if desired
unset LANGSMITH_API_KEY
unset LANGSMITH_ORGANIZATION_IDBenefits:
- Configuration persists across shell sessions
- Easier to manage multiple settings
- Can still override with environment or flags
Before:
export LANGSMITH_API_KEY="<same-key-for-both>"
# Langstar falls back to LANGSMITH_API_KEY for both servicesAfter:
export LANGSMITH_API_KEY="<langsmith-key>"
export LANGSMITH_API_KEY="<langgraph-key>"When to do this:
- Using different API keys for different services
- Separate deployment permissions
- Enhanced security (principle of least privilege)
Before:
[langstar]
langsmith_api_key = "<key>"langstar prompt list # Returns all public + personal promptsAfter:
[langstar]
langsmith_api_key = "<key>"
organization_id = "<org-id>"langstar prompt list # Returns private prompts in org
langstar prompt list --public # Returns public prompts in orgWhen to do this:
- Working with team prompts
- Need to filter to organization's resources
- Enterprise deployment with multiple organizations
Symptom:
Error: Missing required configuration: LANGSMITH_API_KEY
Solution:
-
Check if API key is set:
env | grep LANGSMITH_API_KEY langstar config -
Set via environment:
export LANGSMITH_API_KEY="<your-key>"
-
Or create config file:
langstar config create # Edit ~/.config/langstar/config.toml with your API key
Symptom:
langstar assistant list
Error: Authentication failedSolution:
Check which key is being used:
langstar configEnsure LANGSMITH_API_KEY is set (not just LANGSMITH_API_KEY):
export LANGSMITH_API_KEY="<your-api-key>"Symptom:
langstar prompt list
# Returns fewer prompts than expectedSolution:
Check if organization/workspace scoping is active:
langstar configIf scoped, either:
- Add
--publicflag to access public prompts - Remove scoping to access all prompts:
unset LANGSMITH_ORGANIZATION_ID unset LANGSMITH_WORKSPACE_ID
Symptom:
Config file exists but settings aren't applied.
Solution:
-
Check file location:
ls ~/.config/langstar/config.toml langstar config show # Shows which file is used
-
Verify TOML syntax:
cat ~/.config/langstar/config.toml langstar config validate # Check for errors
-
Check for environment variable overrides:
env | grep LANGSMITH env | grep LANGGRAPH
DO:
- ✅ Use config file with restricted permissions:
chmod 600 ~/.config/langstar/config.toml - ✅ Use environment variables in CI/CD
- ✅ Use different keys for dev/staging/production
- ✅ Rotate keys regularly
DON'T:
- ❌ Commit API keys to version control
- ❌ Share API keys in documentation
- ❌ Use production keys in development
- ❌ Store keys in world-readable files
# Create config file (automatically sets secure permissions)
langstar config create
# Or manually with restricted permissions
mkdir -p ~/.config/langstar
cat > ~/.config/langstar/config.toml <<EOF
langsmith_api_key = "<your-key>"
EOF
# Restrict access to owner only
chmod 600 ~/.config/langstar/config.toml
# Verify permissions
ls -la ~/.config/langstar/config.toml
# Should show: -rw------- (owner read/write only)#!/bin/bash
# Load keys from secure location
source ~/.langstar_secrets
# Use keys (not echoed or logged)
langstar prompt list > output.json
# Don't print or log the actual keys
# ❌ echo $LANGSMITH_API_KEY
# ✅ echo "API key is set: $([ -n "$LANGSMITH_API_KEY" ] && echo "yes" || echo "no")"- README.md - Quick start guide
- Architecture Documentation - How configuration is implemented
- Troubleshooting Guide - Common issues and solutions
- LangSmith Documentation - LangSmith API details
- LangGraph Cloud Documentation - LangGraph API details