mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 14:53:34 +00:00
* fix: incremental settings persistence and remote server auth (#185, #186) Persist settings after each wizard step so failures don't lose prior progress. Load existing settings on re-run to recover from partial onboarding. Add manual token paste option for remote/headless servers where browser OAuth is unreachable, and support IRONCLAW_OAUTH_CALLBACK_URL for custom callback URLs. Color prompt output (green/red/blue prefixes). Co-Authored-By: Claude Opus 4.6 <[email protected]> * fix: replace session token paste with API key entry, address PR review Replace option 4 in NEAR AI auth menu from session token paste to NEAR AI Cloud API key entry (cloud.near.ai). Also address all PR review feedback: restrict .env file permissions to 0o600, mask API key input with secret_input, fix libsql loaded flag in try_load_existing_settings, add ENV_MUTEX to oauth_defaults tests, and add NEARAI_API_KEY to secrets injection. Co-Authored-By: Claude Opus 4.6 <[email protected]> * fix: deduplicate keys in upsert_bootstrap_var When the .env file contains duplicate keys (e.g. from manual editing), only write the replacement once and skip subsequent duplicates. Co-Authored-By: Claude Opus 4.6 <[email protected]> * fix: NEARAI_SESSION_TOKEN env var takes precedence over file-based tokens Hosting providers inject session tokens via env var and expect them to be used directly. Previously the env var was only picked up when no session file existed and was treated as a legacy migration. Now the env var always wins, without persisting to disk. Co-Authored-By: Claude Opus 4.6 <[email protected]> * docs: distinguish NEAR AI Chat and NEAR AI Cloud providers Split documentation into two clearly named modes: - NEAR AI Chat: Responses API at private.near.ai, session token auth - NEAR AI Cloud: Chat Completions API at cloud-api.near.ai, API key auth Update default base URLs so each mode points to its correct endpoint. Update .env.example, deploy/env.example, CLAUDE.md, setup spec, and code comments across config/llm.rs, nearai.rs, nearai_chat.rs, mod.rs. Co-Authored-By: Claude Opus 4.6 <[email protected]> * fix: wizard recovery ordering — load DB before persist, fresh choices win Previously, persist_after_step() ran after Step 1 but before try_load_existing_settings(), bulk-upserting defaults that clobbered prior settings. Additionally, merge_from gave stale DB values precedence over fresh Step 1 choices. Fix: snapshot Step 1 settings, load DB, then re-apply the snapshot. This ensures prior progress (steps 2-7) is recovered while fresh Step 1 choices override stale DB values. Add two tests verifying wizard recovery merge ordering. Addresses PR review comments from Copilot on wizard.rs:150, wizard.rs:1607, and wizard.rs:1626. Co-Authored-By: Claude Opus 4.6 <[email protected]> * style: fix rustfmt formatting in config/llm.rs Co-Authored-By: Claude Opus 4.6 <[email protected]> * style: collapse nested if per clippy collapsible_if lint Co-Authored-By: Claude Opus 4.6 <[email protected]> * fix: use print_success for API key confirmation, fix menu spacing - Use print_success() for colored output consistency in api_key_login - Fix box-drawing alignment: options 1-2 had an extra trailing space Co-Authored-By: Claude Opus 4.6 <[email protected]> --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
92 lines
2.9 KiB
Bash
92 lines
2.9 KiB
Bash
# Database Configuration
|
|
DATABASE_URL=postgres://localhost/ironclaw
|
|
DATABASE_POOL_SIZE=10
|
|
|
|
# LLM Provider
|
|
# LLM_BACKEND=nearai # default
|
|
# Possible values: nearai, ollama, openai_compatible, openai, anthropic, tinfoil
|
|
|
|
# === NEAR AI Chat (Responses API, session token auth) ===
|
|
# Default mode. Uses browser OAuth (GitHub/Google) on first run.
|
|
# Session token stored in ~/.ironclaw/session.json automatically.
|
|
# For hosting providers: set NEARAI_SESSION_TOKEN env var directly.
|
|
NEARAI_MODEL=zai-org/GLM-5-FP8
|
|
NEARAI_BASE_URL=https://private.near.ai
|
|
NEARAI_AUTH_URL=https://private.near.ai
|
|
# NEARAI_SESSION_TOKEN=sess_... # hosting providers: set this
|
|
# NEARAI_SESSION_PATH=~/.ironclaw/session.json # optional, default shown
|
|
|
|
# === NEAR AI Cloud (Chat Completions API, API key auth) ===
|
|
# Auto-selected when NEARAI_API_KEY is set. Get a key from cloud.near.ai.
|
|
# NEARAI_API_KEY=...
|
|
# NEARAI_BASE_URL=https://cloud-api.near.ai # default for cloud mode
|
|
# NEARAI_API_MODE=chat_completions # auto-detected from API key
|
|
|
|
# Local LLM Providers (Ollama, LM Studio, vLLM, LiteLLM)
|
|
|
|
# === Ollama ===
|
|
# OLLAMA_MODEL=llama3.2
|
|
# LLM_BACKEND=ollama
|
|
# OLLAMA_BASE_URL=http://localhost:11434 # default
|
|
|
|
# === OpenAI-compatible (LM Studio, vLLM, Anything-LLM) ===
|
|
# LLM_MODEL=llama-3.2-3b-instruct-q4_K_M
|
|
# LLM_BACKEND=openai_compatible
|
|
# LLM_BASE_URL=http://localhost:1234/v1
|
|
# LLM_API_KEY=sk-... # optional for local servers
|
|
|
|
# === OpenRouter (via OpenAI-compatible) ===
|
|
# LLM_MODEL=anthropic/claude-sonnet-4
|
|
# LLM_BACKEND=openai_compatible
|
|
# LLM_BASE_URL=https://openrouter.ai/api/v1
|
|
# LLM_API_KEY=sk-or-...
|
|
|
|
|
|
# Channel Configuration
|
|
# CLI is always enabled
|
|
|
|
# Slack Bot (optional)
|
|
SLACK_BOT_TOKEN=xoxb-...
|
|
SLACK_APP_TOKEN=xapp-...
|
|
SLACK_SIGNING_SECRET=...
|
|
|
|
# Telegram Bot (optional)
|
|
TELEGRAM_BOT_TOKEN=...
|
|
|
|
# HTTP Webhook Server (optional)
|
|
HTTP_HOST=0.0.0.0
|
|
HTTP_PORT=8080
|
|
HTTP_WEBHOOK_SECRET=your-webhook-secret
|
|
|
|
# Agent Settings
|
|
AGENT_NAME=ironclaw
|
|
AGENT_MAX_PARALLEL_JOBS=5
|
|
AGENT_JOB_TIMEOUT_SECS=3600
|
|
AGENT_STUCK_THRESHOLD_SECS=300
|
|
# Enable planning phase before tool execution (default: true)
|
|
AGENT_USE_PLANNING=true
|
|
|
|
# Self-repair settings
|
|
SELF_REPAIR_CHECK_INTERVAL_SECS=60
|
|
SELF_REPAIR_MAX_ATTEMPTS=3
|
|
|
|
# Heartbeat settings (proactive periodic execution)
|
|
# When enabled, reads HEARTBEAT.md checklist and reports findings
|
|
HEARTBEAT_ENABLED=false
|
|
HEARTBEAT_INTERVAL_SECS=1800
|
|
HEARTBEAT_NOTIFY_CHANNEL=cli
|
|
HEARTBEAT_NOTIFY_USER=default
|
|
|
|
# Memory hygiene settings (automatic cleanup of stale workspace documents)
|
|
# Runs on each heartbeat tick; identity files (IDENTITY.md, SOUL.md) are never deleted
|
|
# MEMORY_HYGIENE_ENABLED=true
|
|
# MEMORY_HYGIENE_RETENTION_DAYS=30 # delete daily/ docs older than this many days
|
|
# MEMORY_HYGIENE_CADENCE_HOURS=12 # minimum hours between cleanup passes
|
|
|
|
# Safety settings
|
|
SAFETY_MAX_OUTPUT_LENGTH=100000
|
|
SAFETY_INJECTION_CHECK_ENABLED=true
|
|
|
|
# Logging
|
|
RUST_LOG=ironclaw=debug,tower_http=debug
|