Spaces:
Paused
Paused
Commit History
-
chore: force re-pull of hermes-agent:latest (2026-06-14 update)
Viktor AI6b19d1d -
feat: update Odysseus fallback model list to all 121 NVIDIA models
Viktor AI68bdcf5 -
fix: remove double /v1 in Odysseus bridge URL
Viktor AId3737a1 -
fix: correct Dockerfile COPY syntax
Viktor AIfa26c65 -
fix: add COPY for cloudflare-odysseus-bridge.py in Dockerfile
Viktor AIeaf7228 -
feat: add Cloudflare Worker bridge for Odysseus AI provider
Viktor AI- cloudflare-odysseus-bridge.py: auto-deploys CF Worker on boot - start.sh: routes Odysseus requests through CF bridge (bypass HF rate limit)a38047a -
Fix Odysseus: pre-populate 91 models + key_env for auth
Verified signatureaddfc57 -
Fix Odysseus provider: add key_env for env-based auth
Verified signaturef6b6a03 -
Add Odysseus AI to config.yaml providers section for /model picker
Verified signatureaeaba39 -
Add Odysseus AI as a named model provider plugin
Verified signature85fc34e -
Fix: keep NVIDIA as default when HERMES_INFERENCE_PROVIDER is set, custom provider available alongside
Verified signature3d47e2d
-
feat: add Supermemory memory provider integration
Verified signature- Add supermemory pip package to Dockerfile - Configure supermemory as memory provider when SUPERMEMORY_API_KEY is set - Auto-create supermemory.json with multi-container support31a6de8
-
Add YouTube CLI tool (upload, list, search, delete videos via OAuth2)
Viktor AI414944b -
Fix Gmail folder aliases for Arabic locale (IMAP UTF-7 encoded names)
Viktor AIe20c97b -
Add himalaya Gmail CLI setup at boot (IMAP/SMTP with App Password)
Viktor AI56f44fd
-
fix(terminal): skip JupyterLab login screen; add backup warning banner
- health-server.js: inject ?token= into initial terminal HTML requests so JupyterLab 4.x sets the auth cookie and skips its own login screen. Authorization header alone is insufficient for HTML page loads in JL 4.x. - health-server.js: add prominent dashboard banner when HF_TOKEN is not set, warning that all data will be lost on Space restart (fixes #12 root cause). - health-server.js: fix 503 message on /terminal/ to not mention JUPYTER_TOKEN. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>dc1a562
-
docs: restore DEV_MODE and JUPYTER_TOKEN to env table and terminal section
Only the frontmatter secrets block should have been removed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>a06ec5d -
docs: remove DEV_MODE and JUPYTER_TOKEN entries from README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>2eb13d3 -
fix(terminal): inject GATEWAY_TOKEN into JupyterLab proxy to skip double login prompt
health-server.js reads JUPYTER_TOKEN at process start, but start_jupyter() only exports it later — so the env var is empty and no auth header is injected, causing JupyterLab to show its own login screen after the user already authenticated with GATEWAY_TOKEN. Fix: fall back to API_SERVER_KEY (== GATEWAY_TOKEN), which is exactly what JupyterLab was started with. User authenticates once; no second prompt. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>b8fda45
-
fix(health-server): resolve iframe redirect causing 'refused to connect' (#11)
- health-server.js: guard private-space redirect behind iframe detection (window.top !== window.self) — fixes X-Frame-Options DENY on huggingface.co blocking iframe navigation - health-server.js: add privacyDetectionReady Promise to eliminate race condition where fail-secure default triggered false redirects on public spaces - health-server.js: add /api/is-private endpoint + client-side syncPrivacy() - health-server.js: add SPACE_PRIVACY env var override to skip HF API detection - health-server.js: add isFromHFApp referer guard to skip redirect inside HF UI - cloudflare-proxy-setup.py: remove AI provider domains from DEFAULT_ALLOWED to prevent routing API keys through worker without explicit opt-in - env-builder.js: add tag badge system (critical/credential/feature/optional/ advanced/build) with per-field tags; add SPACE_PRIVACY field - env-builder.js: split bundle generation — explicit generateBundle() button vs auto refresh() for summary/counts only - env-builder.html: ad…aa128fa -
fix: revert uv to bare invocation with --python flag
/opt/hermes/.venv/bin/uv does not exist — uv is a global binary on the Hermes base image. Bare `uv` is in PATH; explicit --python targets the venv. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>8e5610b -
fix: make kanban patch and Docker build fully failure-safe
- Wrap entire kanban patch in try/except so any error (encoding, permissions, changed upstream file structure) skips silently instead of exiting 1 - Use errors='replace' when reading kanban_db.py to handle non-UTF-8 bytes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>ee98905 -
fix: resolve Docker build failures by handling library renaming, pinning JupyterLab dependencies, and using explicit binary paths
ddafed3 -
feat: give hermes user passwordless sudo
Install sudo and grant hermes ALL=(ALL) NOPASSWD: ALL so the agent can run privileged commands (apt install, service management, file operations) without a password prompt. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>4488348
-
feat: self-healing gateway, package replay, private space guard, key rotation, readme sync
- start.sh: gateway restart loop, shell capture wrappers (apt/pip/uv/npm/hermes), pool key promotion for 16 providers, HUGGINGMES_RUN startup scripts, env-driven package installs, JupyterLab PID guard, enhanced boot banner - health-server.js: private space guard (HF API detect + redirect), embed-aware dashboard buttons, /hf-redirect route - .env.example: add HUGGINGMES_RUN, package installs, key rotation pools, gateway restart vars, terminal vars, webhook URL - README.md: document all new features, fix terminal section (on by default), add ephemeral package replay and key rotation sections Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>43301b6 -
docs: add v0.2.0 changelog
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>d32fed3 -
fix: auth on env-builder, single login for terminal, new login UI
- Protect /env-builder and /env-builder.js with requireAuth (same as /app) - Inject Authorization: token <JUPYTER_TOKEN> when proxying to JupyterLab so JupyterLab skips its own login screen — one password instead of two - New login page: HuggingClaw-style dark card (matches project aesthetic) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>715f4a5 -
feat: add ENV Builder at /env-builder
Port env-builder from HuggingClaw, adapted for HuggingMes/Hermes vars: - 8 sections: Core, Backup, Telegram, Terminal, Providers, Cloudflare, Advanced, Custom - Model catalog with provider/model prefix format (gemini/, anthropic/, openrouter/, etc.) - Import/export as HUGGINGMES_ENV_BUNDLE base64 or plain .env - No auth required (useful before GATEWAY_TOKEN is set) - Dashboard button: "ENV Builder →" beside Open Hermes Agent and Open Terminal Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>b25ba68 -
fix: use venv python for JupyterLab — system python3 lacks jupyterlab
jupyterlab is installed into /opt/hermes/.venv, not system python3. start_jupyter() was calling python3 -c "import jupyterlab" which fails on system python → returned 1 → set -euo pipefail killed start.sh → container crashed every boot → HF Space stuck in RUNNING_APP_STARTING. Fixes: - Use /opt/hermes/.venv/bin/python for the import check and launch - Change failing return 1s in start_jupyter to return 0 (non-fatal) - Restore HEALTHCHECK with 60s start-period (was accidentally removed) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>4c78093 -
test: disable HEALTHCHECK to diagnose RUNNING_APP_STARTING
HF Space stuck in RUNNING_APP_STARTING despite /health returning 200. Testing if Docker HEALTHCHECK is causing HF to never flip to RUNNING. HEALTHCHECK NONE lets HF use its own probe (app_port connectivity). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>909b900 -
fix: health endpoint always 200 so Docker HEALTHCHECK passes on startup
/health was returning 503 when the Hermes gateway hadn't started yet. Docker HEALTHCHECK uses curl -f which treats 503 as failure, so the container stayed in "starting" state until the gateway was fully up (~120s). Combined with start-period=180s, HF Space was stuck at RUNNING_APP_STARTING indefinitely. Fix: always return HTTP 200 from /health (gateway status in JSON body). Reduce start-period to 30s since health server starts in ~2s. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>79d2b7b -
fix: increase healthcheck start-period to 180s
Gateway ready timeout is 120s but healthcheck start-period was 90s. With heavier image (Chromium + JupyterLab), container took longer than 90s to become ready causing premature 503 → HF restart loop. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>fbcca6e -
feat: terminal on by default, uses GATEWAY_TOKEN, add dashboard button
- DEV_MODE defaults to true — no extra secret needed - JUPYTER_TOKEN falls back to GATEWAY_TOKEN (single password) - Add "Open Terminal →" button beside "Open Hermes Agent →" on dashboard - Update README to reflect new defaults Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>617d143 -
docs: add JupyterLab terminal setup instructions to README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>0613ee9 -
feat: add JupyterLab terminal at /terminal/ (DEV_MODE=true)
Install JupyterLab in the venv. When DEV_MODE=true and JUPYTER_TOKEN is set (strong token required — full shell access), start JupyterLab on port 8888 with /terminal/ base URL. health-server proxies HTTP and WebSocket (required for kernels/terminals) to JupyterLab. Usage: set DEV_MODE=true and JUPYTER_TOKEN=<openssl rand -hex 32> in HF Space secrets, then visit /terminal/. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>775b8b3
-
fix: replace deprecated HF_HUB_ENABLE_HF_TRANSFER with HF_XET_HIGH_PERFORMANCE
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>f2e8984 -
fix: install python3-venv and python3-pip for non-root venv creation
Users hit a dependency loop: python3-venv missing → can't create venv → can't install packages → no root to apt install at runtime. Installing at build time unblocks standard python3 -m venv usage. uv venv also works as an alternative (uv is in PATH via profile.d). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>ea1534e
-
fix: resolve sync timeout with longer timeout and hf_transfer
Default HF Hub read timeout (10s) causes failures on large state uploads. Set HF_HUB_DOWNLOAD_TIMEOUT=300s and enable hf_transfer for faster multipart transfers. Install hf_transfer package in Dockerfile. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>30000cd -
feat: install Chromium and enable Hermes browser tools
Install system Chromium with all required display/font dependencies. Set PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH so Hermes's Playwright picks up the system binary instead of failing with "Chrome not found". Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>9a4cb29
-
chore: replace emoji with 🪽 (Hermes winged sandals)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>cf96b21 -
fix: sync state on natural gateway exit to preserve user-set keys
When user restarts the gateway from Hermes dashboard, the gateway process exits naturally. wait() returns but SIGTERM trap never fires, so no sync runs before the container shuts down. Keys set via the UI are lost because the next restore pulls a stale backup. Add an explicit sync-once after wait() to cover the natural-exit path. SIGTERM path already handled by graceful_shutdown trap. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>bdb63d2 -
fix: restore correct gemini provider model name format
Hermes gemini provider requires bare model name (e.g. gemini-2.5-flash) not the prefixed form (google/gemini-2.5-flash). Reverts the incorrect google/ prefix preservation from the previous commit and reunifies google|gemini case with correct prefix stripping. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>6c85d60 -
refactor: decouple model provider configuration from model names to enable automatic provider inference by Hermes
baeabbc
-
docs: add HuggingFlow to More Projects section
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>6283613 -
docs: add userinfobot link to Telegram setup
Mirror HuggingClaw's Telegram setup steps — add @userinfobot link so users know how to find their numeric Telegram user ID. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>4226d57 -
feat: add PATH export to profile and enable secret redaction by default
5534b90 -
fix: remove venv from PATH and symlink hermes CLI to .local/bin for terminal compatibility
099d3ad -
chore: add virtual environment path to Dockerfile environment variables
f683ded
-
fix: wrap kanban table migration in try/except to prevent startup crashes on existing databases
29e3514 -
feat: add persistent plugin directory and use setdefault for configuration schema preservation
765659f