Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
395dbcc
feat(browser): add Lightpanda engine support with automatic Chrome fa…
kshitijk4poor May 4, 2026
3ebdd26
fix(browser): surface Lightpanda Chrome fallback warnings
kshitijk4poor May 6, 2026
d78c349
feat(tui): collapsible sections in startup banner (skills, system pro…
kshitijk4poor May 6, 2026
68162eb
fix(tui): collapse long system messages in transcript with expand toggle
kshitijk4poor May 6, 2026
629d8b8
fix(browser): tighten Lightpanda fallback edge cases
kshitijk4poor May 6, 2026
466f3a1
fix(gateway): preserve model picker current context
helix4u May 6, 2026
a6f5f9c
fix(update): drop pip --quiet so slow installs don't look hung (#20679)
teknium1 May 6, 2026
e70e490
fix(cli): guard logger.debug in signal handler (#13710 regression) (#…
teknium1 May 6, 2026
043a118
fix: harden install.sh against inherited Python env leakage
adybag14-cyber May 5, 2026
a869a52
chore: AUTHOR_MAP entry for adybag14-cyber
teknium1 May 6, 2026
e45df2e
fix(ui): reduce status-line jitter while scrolling
adybag14-cyber May 5, 2026
ca5febf
fix(tui): stabilize FaceTicker elapsed width to prevent composer drift
adybag14-cyber May 6, 2026
a0556b8
fix(tui): restore gap before duration when verb segment is hidden
teknium1 May 6, 2026
b1e0ef8
chore(release): map liuguangyong@hellobike -> liuguangyong93
teknium1 May 6, 2026
1768791
fix(kanban): reset code element background inside board
May 6, 2026
76074d9
fix(cli): recover classic CLI output after resize
helix4u May 5, 2026
b045e7a
feat(skills): add shop-app personal shopping assistant (optional) (#2…
teknium1 May 6, 2026
a0fedfb
feat(checkpoints): v2 single-store rewrite with real pruning + disk g…
teknium1 May 6, 2026
906881c
fix(cli): catch OSError in _resolve_attachment_path to prevent ENAMET…
curiouscleo May 5, 2026
3ce1233
chore(release): map cleo@edaphic.xyz → curiouscleo
teknium1 May 6, 2026
90a7adc
docs(wsl2): expand Windows (WSL2) guide — filesystem, networking, ser…
teknium1 May 6, 2026
b62a82e
docs: pluggable surfaces coverage — model-provider guide, full plugin…
teknium1 May 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,15 @@ BROWSERBASE_PROXIES=true
# Uses custom Chromium build to avoid bot detection altogether
BROWSERBASE_ADVANCED_STEALTH=false

# Browser engine for local mode (default: auto = Chrome)
# "auto" — use Chrome (don't pass --engine flag)
# "lightpanda" — use Lightpanda (1.3-5.8x faster navigation, no screenshots)
# "chrome" — explicitly request Chrome
# Requires agent-browser v0.25.3+. Lightpanda commands that fail or return
# empty results are automatically retried with Chrome.
# Also configurable via browser.engine in config.yaml.
# AGENT_BROWSER_ENGINE=auto

# Browser session timeout in seconds (default: 300)
# Sessions are cleaned up after this duration of inactivity
BROWSER_SESSION_TIMEOUT=300
Expand Down
26 changes: 26 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ hermes-agent/
├── plugins/ # Plugin system (see "Plugins" section below)
│ ├── memory/ # Memory-provider plugins (honcho, mem0, supermemory, ...)
│ ├── context_engine/ # Context-engine plugins
│ ├── model-providers/ # Inference backend plugins (openrouter, anthropic, gmi, ...)
│ ├── kanban/ # Multi-agent board dispatcher + worker plugin
│ ├── hermes-achievements/ # Gamified achievement tracking
│ ├── observability/ # Metrics / traces / logs plugin
Expand Down Expand Up @@ -512,6 +513,31 @@ generic plugin surface (new hook, new ctx method) — never hardcode
plugin-specific logic into core. PR #5295 removed 95 lines of hardcoded
honcho argparse from `main.py` for exactly this reason.

### Model-provider plugins (`plugins/model-providers/<name>/`)

Every inference backend (openrouter, anthropic, gmi, deepseek, nvidia, …)
ships as a plugin here. Each plugin's `__init__.py` calls
`providers.register_provider(ProviderProfile(...))` at module load.
`providers/__init__.py._discover_providers()` is a **lazy, separate
discovery system** — scanned on first `get_provider_profile()` or
`list_providers()` call, NOT by the general PluginManager.

Scan order:
1. Bundled: `<repo>/plugins/model-providers/<name>/`
2. User: `$HERMES_HOME/plugins/model-providers/<name>/`
3. Legacy: `<repo>/providers/<name>.py` (back-compat)

User plugins of the same name override bundled ones — `register_provider()`
is last-writer-wins. This lets third parties swap out any built-in
profile without a repo patch.

The general PluginManager records `kind: model-provider` manifests but does
NOT import them (would double-instantiate `ProviderProfile`). Plugins
without an explicit `kind:` get auto-coerced via a source-text heuristic
(`register_provider` + `ProviderProfile` in `__init__.py`).

Full authoring guide: `website/docs/developer-guide/model-provider-plugin.md`.

### Dashboard / context-engine / image-gen plugin directories

`plugins/context_engine/`, `plugins/image_gen/`, `plugins/example-dashboard/`,
Expand Down
Loading
Loading