mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-27 21:08:00 +00:00
* feat(skills): core RPC data stats, tool timeout env, ping state merge (#191) - Add openhuman.skills_data_stats and SkillDataDirectoryStats (disk usage). - Centralize tool execution timeout via OPENHUMAN_TOOL_TIMEOUT_SECS (tool_timeout). - Apply timeout to skill event loop, agent tool loop, harness default, delegate. - Ping scheduler: merge connection_error into published_state via registry. - JSON-RPC e2e: assert skills_data_stats. Closes #214 Closes #218 Part of #213 (backend) Made-with: Cursor * feat(app): skills sync stats UI, reconnect resync, FE timeouts, chat errors (#191) - useSkillDataDirectoryStats + Skills.tsx merge disk stats with skill state. - resyncRunningSkillsAfterReconnect on socket connect; disconnectSkill OAuth cleanup in finally. - withTimeout for callTool/triggerSync; VITE_TOOL_TIMEOUT_SECS in app .env.example. - Structured ChatSendError in Conversations (data-chat-send-error-code). Closes #213 Closes #215 Closes #216 Closes #217 Closes #219 Made-with: Cursor * test(e2e): onboarding helpers and skills smoke specs (#191) - shared-flows: 5-step onboarding, completeOnboardingIfVisible. - auth-access-control + voice-mode use shared helpers. - skills-registry: named skill assertion; new skill-oauth, multi-round, reconnect, lifecycle specs. Closes #220 Closes #221 Closes #222 Closes #223 Closes #224 Part of #189 (E2E helpers) Made-with: Cursor * style: rustfmt + Prettier for CI (PR #282) Fix Type Check workflow: prettier --check and cargo fmt --check. Made-with: Cursor * fix: PR #282 review — tool timeout config, tool_timeout module, CI diagnostics - Centralize VITE_TOOL_TIMEOUT_SECS in config.ts (TOOL_TIMEOUT_SECS) - Move tool_timeout to folder module; merge_published_state broadcasts SKILL_STATE_CHANGED - Resync guard after socket reconnect; qjs_engine logs data dir stat errors - E2E: registry/lifecycle/multi-round failure diagnostics; onboarding label constant - chatSendError arrow export; rustfmt/import grouping in event_loop Made-with: Cursor * test(e2e): add Gmail skill end-to-end tests - Introduced a comprehensive end-to-end test suite for the Gmail skill, covering the full lifecycle from discovery to OAuth completion and email management. - Implemented two modes: a lifecycle-only mode that validates the skill's event loop without real credentials, and a live mode that interacts with the Gmail API using actual credentials. - Added detailed environment variable requirements and usage instructions for both testing modes. Closes #XXX (replace with relevant issue number if applicable)
161 lines
6.7 KiB
Bash
161 lines
6.7 KiB
Bash
# Root environment variables — Rust core, Tauri shell, and shared settings.
|
|
# Copy to .env and fill in values as needed.
|
|
# Loaded via: source scripts/load-dotenv.sh
|
|
#
|
|
# Tags: [required] must be set, [optional] has a sensible default or can be blank
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Backend API
|
|
# ---------------------------------------------------------------------------
|
|
# [required] Primary backend URL (read by Rust core and QuickJS skills sandbox)
|
|
BACKEND_URL=https://staging-api.alphahuman.xyz
|
|
# [required] Also read by Vite frontend (VITE_ prefix required for browser exposure)
|
|
VITE_BACKEND_URL=https://staging-api.alphahuman.xyz
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Authentication (for skills OAuth proxy and debug scripts)
|
|
# ---------------------------------------------------------------------------
|
|
# [optional] Session JWT — used by QuickJS skills sandbox for oauth.fetch proxy calls.
|
|
# Also used by debug scripts (scripts/debug-skill.sh, scripts/debug-notion-live.sh).
|
|
# Get from login flow or browser devtools.
|
|
JWT_TOKEN=
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Core process
|
|
# ---------------------------------------------------------------------------
|
|
# [optional] Default: 127.0.0.1 (use 0.0.0.0 for Docker / cloud).
|
|
# Leave unset to keep the default; the Docker image sets 0.0.0.0 automatically.
|
|
# OPENHUMAN_CORE_HOST=
|
|
# [optional] Default: 7788
|
|
OPENHUMAN_CORE_PORT=7788
|
|
# [optional] Default: http://127.0.0.1:7788/rpc
|
|
OPENHUMAN_CORE_RPC_URL=http://127.0.0.1:7788/rpc
|
|
# [optional] Run mode: child (default, spawns sidecar) | inprocess
|
|
OPENHUMAN_CORE_RUN_MODE=child
|
|
# [optional] Override path to openhuman core binary (leave blank for auto-detection)
|
|
OPENHUMAN_CORE_BIN=
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Config overrides (override config.toml values at runtime)
|
|
# ---------------------------------------------------------------------------
|
|
# [required] API key for the LLM provider
|
|
OPENHUMAN_API_KEY=
|
|
# [optional] Default model to use
|
|
OPENHUMAN_MODEL=
|
|
# [optional] Workspace directory (default: ~/.openhuman)
|
|
OPENHUMAN_WORKSPACE=
|
|
# [optional] Default: 0.7
|
|
OPENHUMAN_TEMPERATURE=0.7
|
|
# [optional] Skill + agent tool execution timeout in seconds (default 120, max 3600)
|
|
# OPENHUMAN_TOOL_TIMEOUT_SECS=
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Runtime flags
|
|
# ---------------------------------------------------------------------------
|
|
# [optional] Default: 0
|
|
OPENHUMAN_BROWSER_ALLOW_ALL=0
|
|
# [optional] Default: 0
|
|
OPENHUMAN_LOG_PROMPTS=0
|
|
# [optional] Enable reasoning mode
|
|
OPENHUMAN_REASONING_ENABLED=
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Web search
|
|
# ---------------------------------------------------------------------------
|
|
# [optional] Default: false
|
|
OPENHUMAN_WEB_SEARCH_ENABLED=false
|
|
# [optional] Search provider name
|
|
OPENHUMAN_WEB_SEARCH_PROVIDER=
|
|
# [optional] Required if web search provider is Brave
|
|
OPENHUMAN_BRAVE_API_KEY=
|
|
# [optional] Default: 5
|
|
OPENHUMAN_WEB_SEARCH_MAX_RESULTS=5
|
|
# [optional] Default: 10
|
|
OPENHUMAN_WEB_SEARCH_TIMEOUT_SECS=10
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Storage
|
|
# ---------------------------------------------------------------------------
|
|
# [optional] Storage backend (default: SQLite)
|
|
OPENHUMAN_STORAGE_PROVIDER=
|
|
# [optional] Database connection URL
|
|
OPENHUMAN_STORAGE_DB_URL=
|
|
# [optional] Connection timeout in seconds
|
|
OPENHUMAN_STORAGE_CONNECT_TIMEOUT_SECS=
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Proxy
|
|
# ---------------------------------------------------------------------------
|
|
# [optional] Default: false
|
|
OPENHUMAN_PROXY_ENABLED=false
|
|
# [optional] HTTP proxy URL
|
|
OPENHUMAN_HTTP_PROXY=
|
|
# [optional] HTTPS proxy URL
|
|
OPENHUMAN_HTTPS_PROXY=
|
|
# [optional] Catch-all proxy URL
|
|
OPENHUMAN_ALL_PROXY=
|
|
# [optional] Comma-separated hosts to bypass proxy
|
|
OPENHUMAN_NO_PROXY=
|
|
# [optional] Proxy scope
|
|
OPENHUMAN_PROXY_SCOPE=
|
|
# [optional] Comma-separated services to proxy
|
|
OPENHUMAN_PROXY_SERVICES=
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Local AI model tier
|
|
# ---------------------------------------------------------------------------
|
|
# [optional] Override selected model tier: low, medium, high
|
|
# Applies the corresponding preset at config load time (overrides config.toml).
|
|
OPENHUMAN_LOCAL_AI_TIER=
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Local AI binary overrides
|
|
# ---------------------------------------------------------------------------
|
|
# [optional] Override path to whisper binary
|
|
WHISPER_BIN=
|
|
# [optional] Override path to piper binary
|
|
PIPER_BIN=
|
|
# [optional] Override path to ollama binary
|
|
OLLAMA_BIN=
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Skills
|
|
# ---------------------------------------------------------------------------
|
|
# [optional] Override skills registry URL.
|
|
# Supports remote HTTP URLs and local file paths for development:
|
|
# SKILLS_REGISTRY_URL=https://example.com/registry.json (remote)
|
|
# SKILLS_REGISTRY_URL=/path/to/openhuman-skills/skills/registry.json (local)
|
|
# When set to a local path, the registry is read directly from disk on every
|
|
# call (no caching), so changes are picked up immediately.
|
|
SKILLS_REGISTRY_URL=
|
|
# [optional] Local skills source directory for development.
|
|
# Points to the built skills directory (the folder containing per-skill subdirs
|
|
# with manifest.json + index.js). When set, this takes highest priority for
|
|
# skill discovery and install will copy from this directory instead of downloading.
|
|
# Example: SKILLS_LOCAL_DIR=/Users/you/work/openhuman-skills/skills
|
|
SKILLS_LOCAL_DIR=
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Error Reporting (Sentry)
|
|
# ---------------------------------------------------------------------------
|
|
# [optional] Sentry DSN for Rust core error reporting (no PII is sent)
|
|
OPENHUMAN_SENTRY_DSN=
|
|
# [optional] Default: true — set to false to disable anonymized analytics & crash reports
|
|
OPENHUMAN_ANALYTICS_ENABLED=true
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Logging
|
|
# ---------------------------------------------------------------------------
|
|
# [optional] Default: info
|
|
RUST_LOG=info
|
|
# [optional] Default: 0 (set to 1 for full backtraces)
|
|
RUST_BACKTRACE=1
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Testing (do not set in production)
|
|
# ---------------------------------------------------------------------------
|
|
# [optional] Enable mock service mode
|
|
# OPENHUMAN_SERVICE_MOCK=0
|
|
# [optional] Path to mock state file
|
|
# OPENHUMAN_SERVICE_MOCK_STATE_FILE=
|