Last active
February 22, 2026 15:23
-
-
Save vpzed/07c683b2ca7f53862acd1dbfb7b23d4d to your computer and use it in GitHub Desktop.
PAI 3.0 env.sh style template for use with CLAUDE_ENV_FILE
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| # PAI 3.0 Environment Variables Template — env.sh / CLAUDE_ENV_FILE Edition | |
| # Generated: 2026-02-16 | Adapted for Claude Code CLAUDE_ENV_FILE: 2026-02-20 | |
| # | |
| # SETUP INSTRUCTIONS: | |
| # 1. Copy: cp pai30-env-template.sh $HOME/.config/PAI/pai-env.sh | |
| # 2. Lock down: chmod 600 $HOME/.config/pai-env.sh | |
| # 3. Fill in: Uncomment (remove #) from lines you need and add real keys | |
| # 4. Register: export CLAUDE_ENV_FILE="$HOME/.pai-env.sh" | |
| # (add to ~/.bashrc / ~/.zshrc for persistence) | |
| # 5. Verify: claude env (or start a session and check a skill) | |
| # 6. Never commit files with real keys to version control! | |
| # 7. Restart VoiceServer after adding ELEVENLABS_API_KEY | |
| # | |
| # KEY LOCATION RULES: | |
| # - API Keys → this file (CLAUDE_ENV_FILE) | |
| # - Notification webhooks (NTFY_TOPIC, DISCORD_WEBHOOK) → this file | |
| # (settings.json references them as ${VARIABLE} but values go here) | |
| # - Voice config (voiceId, stability, etc.) → settings.json daidentity.voices | |
| # (Only ELEVENLABS_API_KEY goes here) | |
| # - System config (PAI_DIR, PROJECTS_DIR) → settings.json env section | |
| # | |
| # HOW CLAUDE CODE LOADS IT: | |
| # Claude Code reads the path in CLAUDE_ENV_FILE and sources it before | |
| # each session, exporting all variables into the session environment. | |
| # Every skill, hook, and tool then sees the values via process.env. | |
| # | |
| # IMPORTANT: Never commit files containing real API keys to version control! | |
| # | |
| # ============================================================================= | |
| # AI/ML SERVICES | |
| # ============================================================================= | |
| # --- Anthropic Claude API --- | |
| # Required by: Telos Dashboard | |
| # Purpose: Claude API access for dashboard functionality | |
| # Get key at: https://console.anthropic.com/ | |
| #export ANTHROPIC_API_KEY='your_api_key_here' | |
| # Required by: Statusline (optional feature) | |
| # Purpose: Display workspace cost and usage in statusline | |
| # Get key at: https://console.anthropic.com/ (Admin API access) | |
| #export ANTHROPIC_ADMIN_API_KEY='your_admin_api_key_here' | |
| # --- OpenAI API --- | |
| # Required by: PAI transcription tools, Art skill (DALL-E) | |
| # Purpose: Whisper transcription, DALL-E image generation (gpt-image-1 model) | |
| # Get key at: https://platform.openai.com/api-keys | |
| #export OPENAI_API_KEY='sk-your_openai_key_here' | |
| # --- Google AI (Gemini) --- | |
| # Required by: Art skill (Gemini image generation) | |
| # Purpose: Generate images using Gemini models | |
| # Get key at: https://makersuite.google.com/app/apikey | |
| #export GOOGLE_API_KEY='your_google_ai_key_here' | |
| # --- ElevenLabs TTS --- | |
| # Required by: VoiceServer (HIGHLY RECOMMENDED) | |
| # Purpose: Text-to-speech voice notifications and spoken responses | |
| # Get key at: https://elevenlabs.io/ | |
| # Note: VoiceServer warns but continues if missing (silent mode) | |
| #export ELEVENLABS_API_KEY='your_elevenlabs_key_here' | |
| # Optional: Override default voice ID (normally set in settings.json) | |
| #export ELEVENLABS_VOICE_ID='your_voice_id_here' | |
| # --- Replicate API (Image Generation) --- | |
| # Required by: Art skill (Flux 1.1 Pro, Nano Banana models) | |
| # Purpose: Generate images using Flux, Nano Banana, Nano Banana Pro models | |
| # Get key at: https://replicate.com/account/api-tokens | |
| #export REPLICATE_API_TOKEN='r8_your_replicate_token_here' | |
| # ============================================================================= | |
| # RESEARCH & DATA SERVICES | |
| # ============================================================================= | |
| # --- Apify (Social Media Scraping) --- | |
| # Required by: Apify skill | |
| # Purpose: Scrape Twitter/X, Instagram, LinkedIn, TikTok, YouTube, Facebook, Google Maps, Amazon | |
| # Get key at: https://console.apify.com/account/integrations | |
| # Note: Both APIFY_TOKEN and APIFY_API_KEY are supported (interchangeable) | |
| #export APIFY_TOKEN='apify_api_your_token_here' | |
| #export APIFY_API_KEY='apify_api_your_token_here' | |
| # --- ProjectDiscovery Chaos --- | |
| # Required by: Recon skill (subdomain enumeration) | |
| # Purpose: Access ProjectDiscovery Chaos subdomain dataset | |
| # Get key at: https://chaos.projectdiscovery.io/ | |
| #export PDCP_API_KEY='your_pdcp_key_here' | |
| # --- IPinfo --- | |
| # Required by: Recon skill (IP geolocation) | |
| # Purpose: IP geolocation, ASN lookup, network intelligence | |
| # Get key at: https://ipinfo.io/account/token | |
| # Note: Free tier available, degrades gracefully if missing | |
| #export IPINFO_API_KEY='your_ipinfo_token_here' | |
| # --- Federal Reserve Economic Data (FRED) --- | |
| # Required by: USMetrics skill (required with EIA_API_KEY) | |
| # Purpose: Access GDP, inflation, unemployment, and economic indicators | |
| # Get key at: https://fred.stlouisfed.org/docs/api/api_key.html | |
| #export FRED_API_KEY='your_fred_api_key_here' | |
| # --- Energy Information Administration (EIA) --- | |
| # Required by: USMetrics skill (required with FRED_API_KEY) | |
| # Purpose: Energy data, gas prices, electricity statistics | |
| # Get key at: https://www.eia.gov/opendata/register.php | |
| #export EIA_API_KEY='your_eia_api_key_here' | |
| # --- YouTube Data API --- | |
| # Required by: PAI YouTube monitoring tools | |
| # Purpose: Monitor YouTube channels, fetch video metadata | |
| # Get key at: https://console.cloud.google.com/apis/credentials | |
| #export YOUTUBE_API_KEY='your_youtube_api_key_here' | |
| # Optional: Default channel ID to monitor (defaults to danielmiessler's channel) | |
| #export YOUTUBE_CHANNEL_ID='UCnCikd0s4i9KoDtaHPlK-JA' | |
| # --- ZenQuotes API --- | |
| # Required by: Statusline (optional feature) | |
| # Purpose: Display inspirational quotes in statusline | |
| # Get key at: https://zenquotes.io/ | |
| #export ZENQUOTES_API_KEY='your_zenquotes_key_here' | |
| # --- GitHub API --- | |
| # Required by: PAIUpgrade skill | |
| # Purpose: Check for PAI updates, access Anthropic GitHub repos with higher rate limits | |
| # Get token at: https://github.com/settings/tokens | |
| #export GITHUB_TOKEN='ghp_your_github_token_here' | |
| # ============================================================================= | |
| # IMAGE & MEDIA SERVICES | |
| # ============================================================================= | |
| # --- Remove.bg --- | |
| # Required by: Art skill, PAI RemoveBg tool | |
| # Purpose: Remove backgrounds from images | |
| # Get key at: https://www.remove.bg/api | |
| #export REMOVEBG_API_KEY='your_removebg_key_here' | |
| # --- Discord Bot (Midjourney Integration) --- | |
| # Required by: Art skill (Midjourney image generation) | |
| # Purpose: Discord bot token for Midjourney integration | |
| # Setup: Create Discord bot at https://discord.com/developers/applications | |
| #export DISCORD_BOT_TOKEN='your_discord_bot_token_here' | |
| # Required by: Art skill (Midjourney) | |
| # Purpose: Discord channel ID where Midjourney bot is active | |
| # Find: Right-click channel in Discord (Developer Mode enabled) → Copy ID | |
| #export MIDJOURNEY_CHANNEL_ID='your_channel_id_here' | |
| # Optional: Midjourney generation defaults | |
| #export MIDJOURNEY_DEFAULT_VERSION='6.1' | |
| #export MIDJOURNEY_DEFAULT_STYLIZE='100' | |
| #export MIDJOURNEY_DEFAULT_QUALITY='1' | |
| # ============================================================================= | |
| # NOTIFICATIONS | |
| # ============================================================================= | |
| # --- Ntfy.sh Push Notifications --- | |
| # Required by: PAI notification system (RECOMMENDED) | |
| # Purpose: Push notifications for long tasks, background agents, errors | |
| # Setup: Choose a unique topic name at https://ntfy.sh/ | |
| #export NTFY_TOPIC='your_unique_topic_name_here' | |
| # --- Discord Webhook --- | |
| # Required by: PAI notification system (errors, security alerts) | |
| # Purpose: Send error and security notifications to Discord channel | |
| # Setup: Server Settings → Integrations → Webhooks → New Webhook | |
| #export DISCORD_WEBHOOK='https://discord.com/api/webhooks/your/webhook/url' | |
| # --- Twilio SMS --- | |
| # Required by: PAI notification system (SMS alerts) | |
| # Purpose: Send SMS notifications for critical events | |
| # Setup: Twilio account at https://www.twilio.com/ | |
| # Format: E.164 format (+1234567890) | |
| #export TWILIO_TO_NUMBER='+1234567890' | |
| # ============================================================================= | |
| # CLOUD & INFRASTRUCTURE | |
| # ============================================================================= | |
| # --- Cloudflare Workers/Pages --- | |
| # Required by: Cloudflare skill (deployment) | |
| # Purpose: Deploy and manage Cloudflare Workers and Pages | |
| # Get token at: https://dash.cloudflare.com/profile/api-tokens | |
| # Permissions needed: Edit Workers | |
| # Note: Both CLOUDFLARE_API_TOKEN_WORKERS_EDIT and CF_API_TOKEN are supported | |
| #export CLOUDFLARE_API_TOKEN_WORKERS_EDIT='your_cloudflare_token_here' | |
| #export CF_API_TOKEN='your_cloudflare_token_here' | |
| # Required by: Cloudflare skill | |
| # Purpose: Cloudflare account identifier | |
| # Find: Cloudflare Dashboard → Account ID (right sidebar) | |
| #export CLOUDFLARE_ACCOUNT_ID='your_account_id_here' | |
| # Optional: Custom subdomain for worker URLs (defaults to 'workers') | |
| #export CF_ACCOUNT_SUBDOMAIN='your_subdomain' | |
| # ============================================================================= | |
| # OPTIONAL CONFIGURATION | |
| # ============================================================================= | |
| # --- VoiceServer --- | |
| # Optional: Override VoiceServer port (defaults to 8888) | |
| #export PORT='8888' | |
| # --- Browser Automation --- | |
| # Optional: Configure browser automation behavior | |
| #export BROWSER_PORT='9222' | |
| #export BROWSER_HEADLESS='false' | |
| #export BROWSER_WIDTH='1920' | |
| #export BROWSER_HEIGHT='1080' | |
| # Alternative headless flag (checked by Browse.ts) | |
| #export HEADLESS='false' | |
| # --- Miscellaneous --- | |
| # Optional: Pipeline monitor URL (for PipelineOrchestrator tool) | |
| #export MONITOR_URL='http://localhost:8765' | |
| # Optional: Timezone override for hooks (defaults to America/Los_Angeles) | |
| #export TIME_ZONE='America/Chicago' | |
| #export TZ='America/Chicago' | |
| # ============================================================================= | |
| # END OF TEMPLATE | |
| # ============================================================================= | |
| # This file can NOT end with a comment based on how Claude Code processes it | |
| # DO NOT REMOVE THE NEXT LINE or all commands in Claude Code will fail | |
| true |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment