# Messaging Platform Selection (required) # Choose which messaging platform to use: telegram or slack MESSAGING_PLATFORM=telegram # Telegram Token (required for telegram) # Get this from @BotFather on Telegram TELEGRAM_TOKEN=your_telegram_bot_token_here # Telegram username allowlist (required for telegram) # JSON array format, usernames without @ recommended # Keep this list small for safety (max 10 users) TELEGRAM_WHITELIST=["your_username"] # Slack Configuration (required for slack) # Get these from your Slack app settings at api.slack.com/apps # MESSAGING_PLATFORM=slack # SLACK_BOT_TOKEN=xoxb-your-bot-token-here # SLACK_SIGNING_SECRET=your-signing-secret-here # SLACK_APP_TOKEN=xapp-your-app-token-here (optional, for Socket Mode) # SLACK_WHITELIST=["U01234567","user@example.com"] # required for slack, IDs or emails, max 10 # For email matching, add OAuth scopes: users:read and users:read.email # Typing indicator refresh interval in milliseconds (optional, default: 4000) TYPING_INTERVAL_MS=4000 # Stream update interval in milliseconds (optional, default: 5000) STREAM_UPDATE_INTERVAL_MS=5000 # CLI Agent Selection (required) # Choose which CLI agent to use as the backend: gemini, opencode, or claude CLI_AGENT=gemini # CLI Agent options (optional) # Approval mode for the agent # CLI_AGENT_APPROVAL_MODE=yolo # Model to use with the agent # CLI_AGENT_MODEL= # How ACP permission options are auto-selected when requested by the agent. # Supported: allow_once, reject_once, cancelled ACP_PERMISSION_STRATEGY=allow_once # CLI Agent overall timeout in milliseconds (optional, default: 3600000 - 1 hour) CLI_AGENT_TIMEOUT_MS=3600000 # CLI Agent no-output timeout in milliseconds (optional, default: 300000) # Set to 0 to disable idle-timeout behavior. CLI_AGENT_NO_OUTPUT_TIMEOUT_MS=300000 # Grace period before forcing SIGKILL after SIGTERM (optional, default: 5000) CLI_AGENT_KILL_GRACE_MS=5000 # Stream diagnostics # ACP_STREAM_STDOUT=true writes raw ACP text chunks to stdout as they arrive # ACP_DEBUG_STREAM=true writes structured chunk timing/count logs ACP_STREAM_STDOUT=false ACP_DEBUG_STREAM=false # Delay before retrying ACP prewarm after a failed startup/prewarm attempt ACP_PREWARM_RETRY_MS=30000 # Maximum automatic prewarm retries before pausing retries (0 = unlimited) ACP_PREWARM_MAX_RETRIES=10 # Optional JSON override for ACP newSession mcpServers. # If unset, an empty mcpServers array is used. # ACP_MCP_SERVERS_JSON='[{"name":"my-server","command":"npx","args":["-y","my-mcp"]}]' # ACP_MCP_SERVERS_JSON= # Maximum response length in characters (optional, default: 4000) # Prevents memory issues with very long responses # Telegram has a 4096 character limit per message anyway MAX_RESPONSE_LENGTH=4000 # Conversation history tracking (optional, default: true) # Enable/disable conversation history tracking and injection CONVERSATION_HISTORY_ENABLED=true # Conversation history JSONL file path (optional, default: ~/.clawless/conversation-history.jsonl) CONVERSATION_HISTORY_FILE_PATH=~/.clawless/conversation-history.jsonl # Maximum number of conversation entries to keep (optional, default: 100) CONVERSATION_HISTORY_MAX_ENTRIES=100 # Maximum characters per conversation entry (optional, default: 2000) CONVERSATION_HISTORY_MAX_CHARS_PER_ENTRY=2000 # Maximum total characters to inject into prompt (optional, default: 8000) CONVERSATION_HISTORY_MAX_TOTAL_CHARS=8000 # Number of relevant historical entries to recap via similarity search (optional, default: 3) CONVERSATION_HISTORY_RECAP_TOP_K=3 # Semantic recall with SQLite FTS lexical ranking (optional, default: enabled) CONVERSATION_SEMANTIC_RECALL_ENABLED=true # Persistent semantic recall SQLite file path CONVERSATION_SEMANTIC_STORE_PATH=~/.clawless/conversation-semantic-memory.db # Maximum semantic entries to keep in store (FIFO) CONVERSATION_SEMANTIC_MAX_ENTRIES=1000 # Maximum chars per entry used for lexical recall indexing CONVERSATION_SEMANTIC_MAX_CHARS_PER_ENTRY=4000 # Local callback server: lets cron/jobs POST messages to Telegram directly # Endpoint: POST http://localhost:8788/callback/telegram CALLBACK_HOST=localhost CALLBACK_PORT=8788 # Optional auth token, sent via x-callback-token or Authorization: Bearer CALLBACK_AUTH_TOKEN= # Max accepted callback payload size in bytes CALLBACK_MAX_BODY_BYTES=65536 # Persistent scheduler storage file (JSON) SCHEDULES_FILE_PATH=~/.clawless/schedules.json