Skip to content

feat(services): add Venice AI inference provider (v0.18.0) - #43

Merged
clawnchdev merged 1 commit into
mainfrom
feat/venice-provider
Jun 9, 2026
Merged

feat(services): add Venice AI inference provider (v0.18.0)#43
clawnchdev merged 1 commit into
mainfrom
feat/venice-provider

Conversation

@clawnchdev

Copy link
Copy Markdown
Owner

Adds Venice AI (https://docs.venice.ai/models/overview) — a privacy-first, OpenAI-compatible inference provider — as a venice service, alongside the existing OpenGateway provider. Lets clawmes tools run targeted inference (classifiers, summarizers, structured extraction) outside the host Hermes agent loop.

Changes

  • services/venice.py — base https://api.venice.ai/api/v1; VENICE_API_KEY (required) + optional VENICE_MODEL. Non-streaming chat completions. Classifies OpenAI-style error envelopes and Venice's flat {"error": "..."} + HTTP 402 / x402 auth challenge → no_credentials.
  • services/__init__.py — registered (6e); independent from Hermes' main conversational LLM.
  • lib/http.pyapi.venice.ai allowlisted.
  • README — documented VENICE_API_KEY / VENICE_MODEL.

Testing

  • Live: called the real Venice API with no key → got its 402 x402 "Authentication required" → service correctly returns VeniceError(no_credentials) with the flat message extracted. (Full success-path live test needs a real key.)
  • Unit: 100% coverage of venice.py — success path, every substring + envelope + structured-body error branch, the Venice 402 flat-error path, singleton.

Gate

4629 passed, 8 skipped; 100% coverage (16,361 stmts, 0 missing); ruff clean; plugin.yaml byte-identical; tool count unchanged (53).

…der (v0.18.0)

Venice (https://docs.venice.ai/models/overview) is a privacy-first, OpenAI-
compatible provider. Adds a `venice` service alongside OpenGateway so tools can
run targeted inference (classifiers, summarizers, extraction) outside the host
Hermes agent loop.

* services/venice.py: base https://api.venice.ai/api/v1, VENICE_API_KEY (required
  — Venice 402s unauthenticated calls via x402) + optional VENICE_MODEL.
  Non-streaming chat completions; classifies OpenAI-style envelopes AND Venice's
  flat {"error": "..."} / HTTP 402 auth challenge → no_credentials.
* services/__init__.py: registered (6e), independent from Hermes' main LLM.
* lib/http.py: allowlist api.venice.ai.
* README: documented VENICE_API_KEY / VENICE_MODEL.

Verified live against the Venice API (402 auth path → no_credentials, flat error
extracted) + full unit coverage of success + every error branch.

Gate: 4629 passed, 8 skipped; 100% coverage (16,361 stmts, 0 missing); ruff
check + format clean; plugin.yaml byte-identical. Tool count unchanged (53).
@clawnchdev
clawnchdev merged commit e669a92 into main Jun 9, 2026
4 checks passed
@clawnchdev
clawnchdev deleted the feat/venice-provider branch June 9, 2026 23:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant