# ── SolanaOS :: Root Environment Template ────────────────────────────────────── # Copy this file to `.env` and fill in only the sections you need. # # cp .env.example .env # # Startup profiles: # 1. Local daemon only: # - SOLANA_TRACKER_RPC_URL or HELIUS_RPC_URL # - SOLANA_TRACKER_API_KEY (recommended) # - JUPITER_API_KEY (optional but recommended for swap/routing limits) # - TELEGRAM_BOT_TOKEN (if you want Telegram control) # # 2. NanoHub / seeker.solanaos.net: # - VITE_CONVEX_URL # - VITE_CONVEX_SITE_URL # - CONVEX_SITE_URL # - AUTH_GITHUB_ID / AUTH_GITHUB_SECRET # - JWT_PRIVATE_KEY / JWKS # # 3. Android direct AI builds: # - TOGETHER_API_KEY / TOGETHER_MODEL # - optionally XAI_API_KEY or OPENROUTER_API_KEY # # SolanaOS degrades gracefully when optional services are missing. # ── Core Runtime Identity / Paths ────────────────────────────────────────────── SOLANAOS_HOME= SOLANAOS_CONFIG= PORT= SOLANAOS_PORT= SOLANAOS_WEB_URL= SOLANAOS_CONTROL_API_URL= # ── Solana RPC / Market Data :: Helius ───────────────────────────────────────── HELIUS_API_KEY= HELIUS_RPC_URL=https://mainnet.helius-rpc.com/?api-key=YOUR_KEY HELIUS_WSS_URL=wss://mainnet.helius-rpc.com/?api-key=YOUR_KEY HELIUS_NETWORK=mainnet HELIUS_TIMEOUT=20 HELIUS_RETRIES=3 # ── Solana RPC / Market Data :: Solana Tracker ──────────────────────────────── # SolanaTracker is the preferred default RPC/data provider for new installs. # RPC docs: https://docs.solanatracker.io/solana-rpc # Data API: https://docs.solanatracker.io/data-api # Datastream: wss://datastream.solanatracker.io/{DATASTREAM_KEY} SOLANA_TRACKER_API_KEY= SOLANA_TRACKER_RPC_URL=https://rpc-mainnet.solanatracker.io/?api_key=YOUR_KEY SOLANA_TRACKER_WSS_URL=wss://rpc-mainnet.solanatracker.io/?api_key=YOUR_KEY # Alias used by Android build scripts. SOLANA_TRACKER_WS_URL= SOLANA_TRACKER_DATA_API_KEY= SOLANA_TRACKER_DATASTREAM_KEY= # ── Optional Extra Market Data ───────────────────────────────────────────────── BIRDEYE_API_KEY= BIRDEYE_WSS_URL= # ── Jupiter (DEX Aggregator) ─────────────────────────────────────────────────── JUPITER_API_KEY= JUPITER_ENDPOINT=https://api.jup.ag JUPITER_ULTRA_ENDPOINT=https://api.jup.ag/ultra/v1 JUPITER_REFERRAL= # Optional alternate env name used in some deploys / Android builds. JUP_SWAP_V1_API_KEY= # ── Perps :: Aster ───────────────────────────────────────────────────────────── ASTER_API_KEY= ASTER_API_SECRET= ASTER_WALLET_ADDRESS= ASTER_PRIVATE_KEY= ASTER_USER_ADDRESS= ASTER_SIGNER_ADDRESS= # ── Perps :: Hyperliquid ─────────────────────────────────────────────────────── HYPERLIQUID_ENABLED=false HYPERLIQUID_PRIVATE_KEY= HYPERLIQUID_WALLET= HYPERLIQUID_TESTNET=false HYPERLIQUID_WS_ENABLED=true HYPERLIQUID_SYMBOLS=BTC,ETH,SOL HYPERLIQUID_TRIGGER_COOLDOWN_SEC=15 HYPERLIQUID_MARK_TRIGGER_BPS=25 # ── Solana Wallet / Position Limits ──────────────────────────────────────────── # If not set, SolanaOS can generate a wallet under ~/.solanaos/. SOLANA_PRIVATE_KEY= SOLANA_WALLET_KEY_PATH= SOLANA_WALLET_PUBKEY= SOLANA_MIN_RESERVE_SOL=0.01 SOLANA_MAX_POSITION_SOL=0.5 # ── LLM Providers :: Hosted + Local ──────────────────────────────────────────── LLM_PROVIDER=openrouter TOGETHER_API_KEY= TOGETHER_MODEL=MiniMaxAI/MiniMax-M2.5 # Optional separate Together embedding configuration for NanoHub Convex actions. TOGETHER_EMBEDDINGS_MODEL=intfloat/multilingual-e5-large-instruct TOGETHER_EMBEDDINGS_ENDPOINT=https://api.together.xyz/v1/embeddings OPENROUTER_API_KEY= OPENROUTER_MODEL=minimax/minimax-m2.7 OPENROUTER_MODEL1=nvidia/nemotron-3-super-120b-a12b:free OPENROUTER_MODEL2=nousresearch/hermes-3-llama-3.1-405b:free OPENROUTER_MODEL3=minimax/minimax-m2.5:free OPENROUTER_FREE_MODELS=nvidia/nemotron-3-super-120b-a12b:free,nousresearch/hermes-3-llama-3.1-405b:free,minimax/minimax-m2.5:free OPENROUTER_OPENAI_MODEL=openai/gpt-5.4-mini OPENROUTER_GROK_MODEL=x-ai/grok-4.20-beta OPENROUTER_MIMO_MODEL= OPENROUTER_OMNI_MODEL= XAI_API_KEY= XAI_BASE_URL=https://api.x.ai/v1 XAI_MODEL=grok-4-1-fast XAI_SEARCH_MODEL=grok-4.20-reasoning XAI_TOOL_MODEL=grok-4.20-beta-latest-non-reasoning XAI_IMAGE_MODEL=grok-imagine-image XAI_VIDEO_MODEL=grok-imagine-video XAI_MULTI_AGENT_MODEL=grok-4.20-multi-agent-beta-0309 ANTHROPIC_API_KEY= ANTHROPIC_BASE_URL=https://api.anthropic.com ANTHROPIC_MODEL=claude-sonnet-4-6 ANTHROPIC_VERSION=2023-06-01 ANTHROPIC_MAX_TOKENS=2048 ANTHROPIC_BETAS= OLLAMA_BASE_URL=http://host.docker.internal:11434 OLLAMA_MODEL=minimax-m2.7:cloud OLLAMA_FALLBACK_ENABLED=true OPENAI_API_KEY= GITHUB_PAT= # ── Runtime HTML App Push (optional) ─────────────────────────────────────────── SOLANAOS_RUNTIME_APP_LABEL= SOLANAOS_RUNTIME_APP_PATH= SOLANAOS_RUNTIME_APP_DESCRIPTION= SOLANAOS_RUNTIME_APP_KIND=app # ── Browser Use / Browserbase (optional browser automation) ─────────────────── BROWSERUSE_API_KEY= BROWSERUSE_ENABLED=false BROWSERUSE_BINARY= BROWSERUSE_HOME= BROWSERUSE_SESSION=default BROWSERUSE_PROFILE= BROWSERUSE_CONNECT=false BROWSERUSE_CDP_URL= BROWSERUSE_HEADED=false BROWSERUSE_CLOUD=true BROWSERUSE_CLOUD_PROVIDER=auto BROWSERUSE_CLOUD_PROFILE_ID= BROWSERUSE_CLOUD_PROXY_COUNTRY= BROWSERUSE_CLOUD_TIMEOUT=15 BROWSERBASE_API_KEY= BROWSERBASE_PROJECT_ID= BROWSERBASE_PROXIES=true BROWSERBASE_ADVANCED_STEALTH=false BROWSERBASE_KEEP_ALIVE=true BROWSERBASE_SESSION_TIMEOUT= # ── NanoHub / Convex / Website URLs ──────────────────────────────────────────── VITE_CONVEX_URL= VITE_CONVEX_SITE_URL= CONVEX_SITE_URL= SITE_URL=http://localhost:3000 VITE_SITE_URL= VITE_SITE_MODE= VITE_SOULHUB_SITE_URL= VITE_SOULHUB_HOST= SOUL_SITE_URL= CUSTOM_AUTH_SITE_URL= # ── NanoHub Auth (GitHub OAuth + Convex JWT/JWKS) ───────────────────────────── AUTH_GITHUB_ID= AUTH_GITHUB_SECRET= # Backwards-compatible aliases accepted by Convex auth. GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= JWT_PRIVATE_KEY= JWKS= # ── Sentry (NanoHub server-side error reporting) ─────────────────────────────── SENTRY_DSN= SENTRY_ENVIRONMENT=development SENTRY_TRACES_SAMPLE_RATE=0 SENTRY_SEND_DEFAULT_PII=false # ── Neon PostgreSQL ─────────────────────────────────────────────────────────── DATABASE_URL= NETLIFY_DATABASE_URL= # ── Supabase (optional mirroring / storage / event feeds) ───────────────────── VITE_SUPABASE_URL= VITE_SUPABASE_ANON_KEY= SUPABASE_URL= SUPABASE_ANON_KEY= SUPABASE_SERVICE_ROLE_KEY= # Some Go services still read these aliases. SUPABASE_SERVICE_KEY= SUPABASE_SERVICE_ROLE= SUPABASE_STORAGE_BUCKET= SUPABASE_EVENTS_TABLE=skill_events # ── Convex backend / mirrors / ingest ────────────────────────────────────────── CONVEX_ENABLED=false CONVEX_URL= CONVEX_DEPLOY_KEY= CONVEX_MEMORY_INGEST_KEY= CONVEX_SOLANAOS_AGENT_SYNC_KEY= SOLANAOS_AGENT_SYNC_KEY= # ── Continuous Learning (SQLite FTS + user models + auto skills) ───────────── LEARNING_ENABLED=true LEARNING_SESSION_DB_PATH= LEARNING_SEARCH_LIMIT=5 LEARNING_AUTO_SKILL_THRESHOLD=3 LEARNING_USER_MODEL_MAX_EVIDENCE=12 LEARNING_REVIEW_INTERVAL_MIN=360 LEARNING_NUDGE_INTERVAL_MIN=720 LEARNING_AUTO_IMPROVE_SKILLS=true # ── Honcho Memory Bridge (optional managed/self-hosted backend) ─────────────── HONCHO_ENABLED=false # Preferred name; HONCHO_URL is still accepted as a backwards-compatible alias. HONCHO_BASE_URL=https://api.honcho.dev HONCHO_URL= HONCHO_API_KEY= HONCHO_WORKSPACE_ID=solanaos HONCHO_AGENT_PEER_ID=solanaos-agent HONCHO_REASONING_LEVEL=low HONCHO_SESSION_STRATEGY=per-chat HONCHO_CONTEXT_TOKENS=4000 HONCHO_CONTEXT_SUMMARY=true HONCHO_SYNC_MESSAGES=true HONCHO_DIALECTIC_ENABLED=true # ── Scheduled Automations / Runtime / Delegation / Research ─────────────────── AUTOMATIONS_ENABLED=true RUNTIME_DEFAULT_BACKEND=local RUNTIME_SERVERLESS_PERSISTENCE=true DELEGATION_ENABLED=true DELEGATION_MAX_PARALLEL=3 DELEGATION_SCAFFOLD_PYTHON_RPC=true RESEARCH_ENABLED=true RESEARCH_TRAJECTORY_BATCH_SIZE=100 RESEARCH_TRAJECTORY_COMPRESS=true # ── Telegram / Nanobot / ChatOps ─────────────────────────────────────────────── TELEGRAM_BOT_TOKEN= TELEGRAM_BOT_USERNAME= TELEGRAM_ID= TELEGRAM_ALLOW_FROM= TELEGRAM_PROXY= TELEGRAM_API_BASE= NANOBOT_PUBLIC_URL= # ── X / Twitter Gateway ──────────────────────────────────────────────────────── # The daemon accepts both prefixed and raw key names. Prefixed is cleaner. TWITTER_CONSUMER_KEY= TWITTER_CONSUMER_SECRET= TWITTER_ACCESS_TOKEN= TWITTER_ACCESS_TOKEN_SECRET= TWITTER_BEARER_TOKEN= TWITTER_CLIENT_ID= TWITTER_CLIENT_SECRET= TWITTER_HANDLE= TWITTER_ALLOW_FROM= TWITTER_API_BASE=https://api.x.com/1.1 TWITTER_POLL_INTERVAL_SEC=45 BOT_OWNER_USERNAME= X_OWNER_USERNAME= # ── Solana Agent Registry / Metaplex / ERC-8004 ─────────────────────────────── AGENT_REGISTRY_ENABLED=false AGENT_REGISTRY_CLUSTER=mainnet-beta AGENT_REGISTRY_RPC_URL= AGENT_REGISTRY_COLLECTION_POINTER= AGENT_REGISTRY_PRIVATE_KEY= AGENT_REGISTRY_TOKEN_URI= AGENT_REGISTRY_INDEXER_API_KEY= AGENT_REGISTRY_PINATA_JWT= AGENT_REGISTRY_NAME=SolanaOS AGENT_REGISTRY_DESCRIPTION=Solana-native trading computer with OODA runtime, Telegram control, x402 monetization, and companion state. AGENT_REGISTRY_IMAGE= AGENT_REGISTRY_MCP_URL= AGENT_REGISTRY_A2A_URL= AGENT_REGISTRY_SNS= AGENT_REGISTRY_ENS= AGENT_REGISTRY_DID= AGENT_REGISTRY_SKILLS= AGENT_REGISTRY_DOMAINS=finance_and_business/finance AGENT_REGISTRY_SITE_URL= AGENT_REGISTRY_DASHBOARD_URL= AGENT_REGISTRY_PAIR_URL= AGENT_REGISTRY_SYNC_URL= AGENT_REGISTRY_SYNC_KEY= AGENT_REGISTRY_X402_SUPPORT=true AGENT_REGISTRY_WRITE_HEARTBEAT=false AGENT_REGISTRY_HEARTBEAT_KEY=last_seen AGENT_REGISTRY_ENABLE_ATOM=false # ── Convex User Agent Factory (Hub mint flow) ───────────────────────────────── SOLANAOS_AGENT_FACTORY_CLUSTER=devnet SOLANAOS_AGENT_FACTORY_RPC_URL= SOLANAOS_AGENT_FACTORY_COLLECTION_POINTER= SOLANAOS_AGENT_FACTORY_INDEXER_API_KEY= SOLANAOS_AGENT_FACTORY_PINATA_JWT= SOLANAOS_AGENT_FACTORY_PRIVATE_KEY= # ── Pinata Private IPFS Hub ─────────────────────────────────────────────────── # Central file storage for SolanaOS Hub — scoped per Solana wallet + GitHub account. # Files are stored on Pinata Private IPFS and recalled via temporary access links. # Cross-platform: web hub, Solana Seeker, Android app, Tailscale mesh nodes. PINATA_ENABLED=false PINATA_API_KEY= PINATA_API_SECRET= PINATA_JWT= PINATA_GATEWAY= # e.g. your-gateway.mypinata.cloud PINATA_MESH_SYNC=true # auto-distribute files across Tailscale/BLE mesh PINATA_BLE_BRIDGE= # BLE bridge address (default 127.0.0.1:8765) # ── pump.fun Tokenized Agent Metadata ────────────────────────────────────────── PUMP_FUN_ENABLED=false PUMP_FUN_ENVIRONMENT=mainnet PUMP_FUN_AGENT_MINT_ADDRESS= PUMP_FUN_CURRENCY_MINT= PUMP_FUN_PAYMENT_AMOUNT= # ── pump.fun Startup Launch ──────────────────────────────────────────────────── PUMP_LAUNCH_ENABLED=false PUMP_LAUNCH_CONFIRM= PUMP_LAUNCH_MODE=once_only PUMP_LAUNCH_CLUSTER=mainnet-beta PUMP_LAUNCH_RPC_URL= PUMP_LAUNCH_PINATA_JWT= PUMP_LAUNCH_METADATA_URI= PUMP_LAUNCH_STATE_PATH= PUMP_LAUNCH_NAME=SolanaOS PUMP_LAUNCH_SYMBOL=NANO PUMP_LAUNCH_DESCRIPTION=SolanaOS autonomous Solana trading computer token. PUMP_LAUNCH_IMAGE= PUMP_LAUNCH_WEBSITE= PUMP_LAUNCH_X_URL= PUMP_LAUNCH_TELEGRAM_URL= PUMP_LAUNCH_INITIAL_BUY_SOL=0 PUMP_LAUNCH_SLIPPAGE_PCT=2 PUMP_LAUNCH_MAYHEM_MODE=false PUMP_LAUNCH_CASHBACK=false # ── x402 Payment Protocol ────────────────────────────────────────────────────── X402_ENABLED=true X402_FACILITATOR_URL=https://facilitator.x402.rs X402_FACILITATOR_AUTHORIZATION= X402_RECIPIENT_ADDRESS= X402_PAYMENT_AMOUNT=0.001 X402_NETWORK=solana X402_CHAINS=solana X402_PAYWALL_ENABLED=false X402_PAYWALL_PORT=18402 X402_PROXY_ENABLED=true X402_PROXY_PORT=18403 # ── Bitaxe (local miner integration) ─────────────────────────────────────────── # Set BITAXE_HOST to connect the daemon directly to your miner. BITAXE_ENABLED=false BITAXE_HOST= BITAXE_POLL_INTERVAL=10 BITAXE_POLL_INTERVAL_SEC=10 BITAXE_ALERTS_ENABLED=true BITAXE_TEMP_WARNING=60 BITAXE_TEMP_CRITICAL=70 BITAXE_HASHRATE_MIN=0 BITAXE_ALERT_COOLDOWN=300 # Optional quickstart / autotune controls used by scripts/bitaxe-quickstart.sh BITAXE_AUTO_TUNE=true BITAXE_MAX_TEMP_C=72 BITAXE_COOL_TEMP_C=50 BITAXE_MAX_FREQ_MHZ=600 BITAXE_MIN_FREQ_MHZ=400 BITAXE_PET_NAME=MawdPet BITAXE_POOL_URL= BITAXE_POOL_PORT= BITAXE_POOL_USER= # ── Optional Remote MawdAxe Bridge ───────────────────────────────────────────── # Use this when the main SolanaOS daemon is hosted on Fly, but the Bitaxe # control plane stays on a LAN or Tailscale host that can actually reach the miner. MAWDAXE_API_BASE= MAWDAXE_API_KEY= MAWDAXE_DEVICE_ID= # ── OODA Trading Runtime ─────────────────────────────────────────────────────── OODA_MODE=live OODA_INTERVAL_SECONDS=60 OODA_POSITION_SIZE_PCT=0.10 OODA_WATCHLIST=JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN,DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263,4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R # ── Headless Node Client / Hardware Nodes ────────────────────────────────────── NODE_BRIDGE_ADDR=127.0.0.1:18790 NODE_DISPLAY_NAME= NODE_DEVICE_FAMILY= NODE_SESSION_KEY=main NODE_TTS_ENGINE=none # ── Native Gateway / Pairing / Tailnet Exposure ─────────────────────────────── GATEWAY_HOST= GATEWAY_PORT=18790 GATEWAY_BIND=loopback GATEWAY_AUTH_MODE= GATEWAY_AUTH_TOKEN= GATEWAY_AUTH_PASSWORD= GATEWAY_AUTH_ALLOW_TAILSCALE=true GATEWAY_TAILSCALE_MODE=off GATEWAY_TAILSCALE_RESET_ON_EXIT=false # Auto-spawn the native gateway in tmux. GATEWAY_AUTO_SPAWN=false GATEWAY_SPAWN_PORT=18790 GATEWAY_USE_TAILSCALE=true # Legacy/manual gateway secret still accepted by some older flows. NANO_GATEWAY_SECRET= # Remote gateway / SSH tunnel defaults. GATEWAY_REMOTE_MODE=local GATEWAY_REMOTE_URL= GATEWAY_REMOTE_TOKEN= GATEWAY_REMOTE_PASSWORD= GATEWAY_REMOTE_TLS_FINGERPRINT= GATEWAY_REMOTE_SSH_ALIAS=solanaos-remote-gateway GATEWAY_REMOTE_SSH_HOST= GATEWAY_REMOTE_SSH_USER= GATEWAY_REMOTE_SSH_IDENTITY_FILE=~/.ssh/id_rsa GATEWAY_REMOTE_SSH_LOCAL_PORT=18790 GATEWAY_REMOTE_SSH_REMOTE_PORT=18790 GATEWAY_REMOTE_SSH_REMOTE_BIND_HOST=127.0.0.1 GATEWAY_REMOTE_SSH_LAUNCH_AGENT_LABEL=ai.solanaos.ssh-tunnel # Fly-specific gateway process defaults. SOLANAOS_FLY_GATEWAY_BIND=0.0.0.0 SOLANAOS_FLY_GATEWAY_PORT=18790 SOLANAOS_GATEWAY_HOST= SOLANAOS_GATEWAY_PORT= SOLANAOS_GATEWAY_TLS=false SOLANAOS_FLEET_API_KEY= SOLANAOS_WEBSITE_DIR= # ── Android Build Overrides (optional) ───────────────────────────────────────── # The Android project automatically reads these from ../../.env when present. SOLANAOS_ANDROID_TOGETHER_API_KEY= SOLANAOS_ANDROID_TOGETHER_MODEL= SOLANAOS_ANDROID_OPENROUTER_API_KEY= SOLANAOS_ANDROID_OPENROUTER_MODEL= SOLANAOS_ANDROID_OPENROUTER_OPENAI_MODEL= SOLANAOS_ANDROID_OPENROUTER_GROK_MODEL= SOLANAOS_ANDROID_XAI_API_KEY= SOLANAOS_ANDROID_XAI_SEARCH_MODEL= SOLANAOS_ANDROID_XAI_IMAGE_MODEL= SOLANAOS_ANDROID_HELIUS_RPC_URL= SOLANAOS_ANDROID_SOLANA_TRACKER_RPC_URL= SOLANAOS_ANDROID_SOLANA_TRACKER_WS_URL= SOLANAOS_ANDROID_SOLANA_TRACKER_API_KEY= SOLANAOS_ANDROID_SOLANA_TRACKER_DATA_API_KEY= SOLANAOS_ANDROID_SOLANA_TRACKER_DATASTREAM_KEY= SOLANAOS_ANDROID_JUPITER_API_KEY= SOLANAOS_ANDROID_JUPITER_ENDPOINT= SOLANAOS_ANDROID_JUPITER_ULTRA_ENDPOINT= SOLANAOS_ANDROID_JUPITER_REFERRAL= SOLANAOS_ANDROID_CONVEX_URL= SOLANAOS_ANDROID_CONVEX_SITE_URL= # ── Agent Wallet / Local Signer ──────────────────────────────────────────────── # AES-256-GCM encrypted local Solana signing keys for dev + trading. # Keys are generated automatically on first run if not supplied. WALLET_API_PORT=8421 WALLET_API_KEY= # Bearer token for API auth (leave blank to disable) # Master passphrase for the encrypted vault and local signers. # Derived via SHA-256 → 32-byte AES key. VAULT_PASSPHRASE= # Per-mode passphrase for the trade signer (uses VAULT_PASSPHRASE if unset). TRADE_SIGNER_PASSPHRASE= # Seed an existing Solana private key (base58) into the local dev signer. # LOCAL_SIGNER_DEV_KEY= # Seed an existing Solana private key (base58) into the local trade signer. # LOCAL_SIGNER_TRADE_KEY= # Override directory where .enc key files are stored (default: ~/.solanaos/signers). # LOCAL_SIGNER_PATH=~/.solanaos/signers # E2B cloud sandboxes (optional — local process sandbox is used as fallback). E2B_API_KEY= # Base port for local sandbox processes (default: 8430). # LOCAL_SANDBOX_BASE_PORT=8430