Skip to content

feat(gateway): add FreeLLMAPI and OmniRoute provider endpoints - #3

Merged
neur0map merged 1 commit into
Ryoku-dev:mainfrom
Sipper1236:feat/freellmapi-provider-endpoints
Nov 5, 2026
Merged

neur0map merged 1 commit into
Ryoku-dev:mainfrom
Sipper1236:feat/freellmapi-provider-endpoints

Conversation

@Sipper1236

Copy link
Copy Markdown

Summary

Adds 26 provider registrations using existing Prowl adapters, with reviewed endpoint metadata from FreeLLMAPI and OmniRoute. This fixes imports of the eight previously unrecognized FreeLLMAPI platform IDs without converting them into custom endpoints.

FreeLLMAPI: eight platforms

beatapi, blaze, blockrun, dreamprompting, inferbase, logfare, parallel, and waterfall.

  • Six support chat. Preserve provider-specific validation URLs, exact model identities, and DreamPrompting's documented identity aliases.
  • BeatAPI is decision-only and Parallel is search-only: their credentials can be stored and validated, but neither is advertised as chat-capable. This does not implement decisions/search inference or anonymous MCP search.
  • Parallel validates using an empty REST search with x-api-key, not an actual search. Inferbase uses its authenticated credits endpoint and accepts zero balance.
  • DreamPrompting and Inferbase buffer streaming responses pending native alias/receipt-frame handling; the tradeoff is delayed first-token delivery.

OmniRoute: 18 OpenAI-compatible API-key endpoints

synthetic, deepinfra, fireworks, featherless-ai, hyperbolic, lambda-ai, moonshot, minimax, poe, inception, morph, upstage, inference-net, arcee-ai, aimlapi, nanogpt, llmgateway, and publicai.

Normalize full upstream chat-completion URLs to API roots, then reuse catalog-driven registration. Existing handwritten adapters still take precedence. This is a curated subset, not a claim of complete OmniRoute support: OAuth, browser cookies, wallet/x402 authentication, local services, native-only protocols, and provider-specific executors are excluded.

Related improvements

  • Detect catalog-declared environment variables and registered platform IDs during key imports, while retaining existing aliases.
  • Keep the provider directory consistent with these catalog registrations, including documentation and provenance links.
  • Check guarded stream identities before returning content; reject malformed/error frames instead of leaking a substituted or unidentified response. Preserve usage-only terminal frames after identity is established.
  • Add endpoint, import, directory, validation, alias, and stream regressions.
  • Document all new roots and limitations in docs/PROVIDER-ENDPOINTS.md; credit the pinned upstream snapshots and OmniRoute's MIT license.

Scope and safety

No dependencies, credential exports, private keys, local custom endpoint definitions, or gateway state are included. No models, prices, free-tier guarantees, or quota allowances are inferred or automatically enrolled. All provider tests are local mocks; these changes do not claim successful live inference against every upstream.

Validation

  • go test -tags sqlite_fts5 ./... — passed.
  • go test -tags sqlite_fts5 ./internal/gateway/... — passed.
  • go build -tags sqlite_fts5 ./cmd/prowl — passed (using an external output path).
  • git diff --check and a scan against the private import's secret values — passed.
  • Local patched-gateway smoke test: all requested platform IDs registered; nine formerly rejected entries imported with zero errors, without changing the original eight key records or the existing custom endpoint. No inference requests were sent and no models were registered by the import.
  • prowl doctor reports zero errors and existing structural warnings (oversized files and synthetic test credentials); it is not a clean structural-health baseline.

@neur0map
neur0map merged commit 9fd5db0 into Ryoku-dev:main Nov 5, 2026
@neur0map

neur0map commented Nov 5, 2026

Copy link
Copy Markdown
Member

Thanks for the work here, merged with a fix so a bad Parallel key doesn't show up as valid

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.

2 participants