Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
73 changes: 73 additions & 0 deletions .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Bug report
description: Report reproducible behavior in the Hermes Chutes provider
title: "[Bug]: "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for helping improve this independent, unofficial integration.
Remove API keys, credentials, private prompts, and account data before submitting.
- type: textarea
id: summary
attributes:
label: Problem summary
description: What happened, and what did you expect instead?
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Reproduction steps
description: Provide the smallest sequence that reproduces the problem.
placeholder: |
1. Configure...
2. Run...
3. Observe...
validations:
required: true
- type: dropdown
id: installation
attributes:
label: Installation route
options:
- Manual directory install from a release tag
- Development checkout from main
- Entry-point or native install under development
- Other
validations:
required: true
- type: input
id: plugin-version
attributes:
label: Plugin version or commit
placeholder: v0.1.5 or a commit SHA
validations:
required: true
- type: input
id: hermes-version
attributes:
label: Hermes Agent version or commit
validations:
required: true
- type: input
id: environment
attributes:
label: Environment
description: Include Python version and operating system.
placeholder: Python 3.12 on Windows 11
validations:
required: true
- type: textarea
id: logs
attributes:
label: Sanitized logs
description: Include only relevant output after removing sensitive data.
render: shell
- type: checkboxes
id: safety
attributes:
label: Sensitive-data check
options:
- label: I removed API keys, credentials, private prompts, and account data.
required: true
34 changes: 0 additions & 34 deletions .github/ISSUE_TEMPLATE/bug_report.md

This file was deleted.

53 changes: 53 additions & 0 deletions .github/ISSUE_TEMPLATE/compatibility.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Compatibility report
description: Report a compatibility problem with a Hermes or Chutes change
title: "[Compatibility]: "
labels: ["compatibility"]
body:
- type: markdown
attributes:
value: |
Use this form when the provider stops matching a released Hermes version or a documented Chutes API behavior.
Remove API keys, credentials, private prompts, and account data before submitting.
- type: dropdown
id: affected-system
attributes:
label: Affected system
options:
- Hermes Agent
- Chutes API or model catalog
- Both or unclear
validations:
required: true
- type: input
id: plugin-version
attributes:
label: Plugin version or commit
placeholder: v0.1.5 or a commit SHA
validations:
required: true
- type: input
id: upstream-version
attributes:
label: Hermes or Chutes version reference
description: Provide a release, commit, dated API behavior, or authoritative link.
validations:
required: true
- type: textarea
id: observed-behavior
attributes:
label: Observed compatibility problem
description: Explain the regression and provide minimal reproduction steps.
validations:
required: true
- type: textarea
id: evidence
attributes:
label: Sanitized evidence
description: Add relevant logs or links after removing sensitive data.
- type: checkboxes
id: safety
attributes:
label: Sensitive-data check
options:
- label: I removed API keys, credentials, private prompts, and account data.
required: true
10 changes: 8 additions & 2 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: Chutes Documentation
- name: Report a security vulnerability
url: https://github.com/TheStreamCode/hermes-chutes-provider/security/advisories/new
about: Send sensitive findings privately. Never include credentials in a public issue.
- name: Chutes documentation
url: https://docs.chutes.ai
about: Official Chutes platform documentation
about: Consult official platform documentation; it does not support this unofficial integration.
- name: Hermes Agent support
url: https://github.com/NousResearch/hermes-agent/issues
about: Report issues that also occur without this provider to the Hermes Agent project.
36 changes: 36 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Feature request
description: Suggest a focused improvement to the provider profile
title: "[Feature]: "
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
This repository is limited to the standalone Chutes provider profile for Hermes Agent.
Requests that require a custom transport or a Hermes core patch belong upstream.
- type: textarea
id: problem
attributes:
label: Problem or use case
description: What limitation are you trying to address?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed improvement
description: Describe the smallest provider-level change that would help.
validations:
required: true
- type: textarea
id: compatibility
attributes:
label: Compatibility considerations
description: Note any Hermes or Chutes version constraints and link authoritative sources.
- type: checkboxes
id: scope
attributes:
label: Scope check
options:
- label: This request can be implemented without patching Hermes Agent.
required: true
Binary file added .github/assets/github-social-preview.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

All notable changes to this project are documented in this file.

## [Unreleased]
## [0.1.5] - 2026-08-08

### Security

Expand All @@ -19,11 +19,16 @@ All notable changes to this project are documented in this file.
revision to currently verified releases.
- Install the released tag by default and document `main` as a development
checkout.
- Present the current support and distribution status before installation
details and document the provider's relationship to Hermes' generic
transport.

### Added

- Regression coverage for older Hermes provider profiles, bounded catalog
reads, optional request metadata, and workflow pinning.
- Structured bug, compatibility, and feature-request forms with explicit
credential-redaction guidance and a private security-reporting route.

## [0.1.4] - 2026-08-02

Expand Down
4 changes: 2 additions & 2 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
title: "Hermes Chutes Provider"
version: 0.1.4
date-released: "2026-08-02"
version: 0.1.5
date-released: "2026-08-08"
url: "https://github.com/TheStreamCode/hermes-chutes-provider"
repository-code: "https://github.com/TheStreamCode/hermes-chutes-provider"
license: MIT
Expand Down
25 changes: 23 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,20 @@ not need an upstream Hermes source change.
This is an independent, unofficial integration. It is not affiliated with,
endorsed by, sponsored by, or approved by Chutes Global Corp or Nous Research.

## Project status

| Area | Current status |
| --- | --- |
| Stable release | [`v0.1.5`](https://github.com/TheStreamCode/hermes-chutes-provider/releases/tag/v0.1.5) |
| Supported installation | Manual directory install from the released tag |
| Native Hermes install | Pending upstream standalone-plugin support in [Hermes PR #64277](https://github.com/NousResearch/hermes-agent/pull/64277) |
| Python | 3.11 or newer |
| Distribution | GitHub Releases only; not published to PyPI |

The profile keeps the stable `chutes` provider identity, discovers current
tool-capable models from the live Chutes catalog, and falls back to Chutes'
routing aliases when that catalog cannot be reached.

## Requirements

- A Hermes Agent installation with model-provider plugin discovery.
Expand All @@ -30,7 +44,7 @@ Clone the latest released snapshot into the active Hermes profile:
```bash
export HERMES_HOME="${HERMES_HOME:-$HOME/.hermes}"
mkdir -p "$HERMES_HOME/plugins/model-providers"
git clone --branch v0.1.4 --depth 1 \
git clone --branch v0.1.5 --depth 1 \
https://github.com/TheStreamCode/hermes-chutes-provider.git \
"$HERMES_HOME/plugins/model-providers/chutes"
```
Expand All @@ -41,7 +55,7 @@ On PowerShell:
$hermesHome = if ($env:HERMES_HOME) { $env:HERMES_HOME } else { Join-Path $HOME ".hermes" }
$target = Join-Path $hermesHome "plugins\model-providers\chutes"
New-Item -ItemType Directory -Force (Split-Path -Parent $target)
git clone --branch v0.1.4 --depth 1 https://github.com/TheStreamCode/hermes-chutes-provider.git $target
git clone --branch v0.1.5 --depth 1 https://github.com/TheStreamCode/hermes-chutes-provider.git $target
```

#### Development checkout
Expand Down Expand Up @@ -126,6 +140,13 @@ This plugin declares metadata for Hermes' existing generic OpenAI-compatible
transport and provider-discovery systems. It does not modify Hermes Agent, add
a custom transport, or include Chutes API keys.

```mermaid
flowchart LR
P["Chutes provider profile"] -->|configures| R["Hermes provider registry"]
R --> T["Generic OpenAI-compatible transport"]
T --> C["Chutes API"]
```

For Chutes skills, setup recipes, model guidance, and platform documentation,
see [Veightor/chutes-agent-toolkit](https://github.com/Veightor/chutes-agent-toolkit).

Expand Down
9 changes: 6 additions & 3 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@

## Reporting a Vulnerability

Report sensitive vulnerabilities privately to `info@mikesoft.it` with the
subject `Hermes Chutes Provider Security Report`. Do not disclose API keys,
credentials, private prompts, or account data in a public issue.
Use GitHub's
[private vulnerability reporting](https://github.com/TheStreamCode/hermes-chutes-provider/security/advisories/new)
for sensitive findings. If that route is unavailable, email
`info@mikesoft.it` with the subject `Hermes Chutes Provider Security Report`.
Do not disclose API keys, credentials, private prompts, or account data in a
public issue.

For non-sensitive security hardening, open an issue with the affected component,
observed behavior, impact, and a minimal reproduction where practical.
Expand Down
2 changes: 1 addition & 1 deletion hermes_chutes_provider/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from providers.base import ProviderProfile


__version__ = "0.1.4"
__version__ = "0.1.5"
logger = logging.getLogger(__name__)
_MAX_CATALOG_RESPONSE_BYTES = 8 * 1024 * 1024

Expand Down
2 changes: 1 addition & 1 deletion plugin.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: chutes-provider
kind: model-provider
version: 0.1.4
version: 0.1.5
description: Chutes model provider for Hermes Agent
author: Michael Gasperini (Mikesoft)
requires_env:
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "hermes-chutes-provider"
version = "0.1.4"
version = "0.1.5"
description = "Chutes model-provider plugin for Hermes Agent"
readme = "README.md"
requires-python = ">=3.11"
Expand Down
32 changes: 30 additions & 2 deletions tests/test_plugin_profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@
MANIFEST_PATH = REPOSITORY_ROOT / "plugin.yaml"
CHANGELOG_PATH = REPOSITORY_ROOT / "CHANGELOG.md"
CITATION_PATH = REPOSITORY_ROOT / "CITATION.cff"
RELEASE_VERSION = "0.1.4"
RELEASE_DATE = "2026-08-02"
ISSUE_TEMPLATE_DIRECTORY = REPOSITORY_ROOT / ".github" / "ISSUE_TEMPLATE"
RELEASE_VERSION = "0.1.5"
RELEASE_DATE = "2026-08-08"


class ProviderProfile:
Expand Down Expand Up @@ -305,6 +306,33 @@ def test_readme_documents_current_and_future_install_paths(self) -> None:
self.assertIn("https://github.com/Veightor/chutes-agent-toolkit", readme)
self.assertNotIn("https://github.com/chutesai/chutes-agent-toolkit", readme)
self.assertIn("Development checkout", readme)
self.assertIn("## Project status", readme)
self.assertIn("GitHub Releases only; not published to PyPI", readme)
self.assertIn("Generic OpenAI-compatible transport", readme)

def test_issue_forms_route_security_reports_and_guard_credentials(self) -> None:
config = (ISSUE_TEMPLATE_DIRECTORY / "config.yml").read_text(
encoding="utf-8"
)
bug_form = (ISSUE_TEMPLATE_DIRECTORY / "bug.yml").read_text(
encoding="utf-8"
)
compatibility_form = (
ISSUE_TEMPLATE_DIRECTORY / "compatibility.yml"
).read_text(encoding="utf-8")
feature_form = (ISSUE_TEMPLATE_DIRECTORY / "feature_request.yml").read_text(
encoding="utf-8"
)

self.assertIn("blank_issues_enabled: false", config)
self.assertIn("security/advisories/new", config)
self.assertIn('labels: ["bug"]', bug_form)
self.assertIn('labels: ["compatibility"]', compatibility_form)
self.assertIn('labels: ["enhancement"]', feature_form)
for form in (bug_form, compatibility_form):
with self.subTest(form=form[:40]):
self.assertIn("Remove API keys", form)
self.assertIn("required: true", form)

def test_ci_runs_the_offline_contract_suite(self) -> None:
if not CI_WORKFLOW_PATH.is_file():
Expand Down