• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lsm / neokai / 26007705881 / 11
81%
dev: 81%

Build:
DEFAULT BRANCH: dev
Ran 18 May 2026 12:52AM UTC
Files 293
Run time 11s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

18 May 2026 12:49AM UTC coverage: 23.244%. Remained the same
26007705881.11

push

github

web-flow
feat(web): custom endpoints settings panel + presets (#1936)

* feat(providers): add custom OpenAI-compatible endpoint support

Adds backend support for user-defined OpenAI-compatible endpoints (LM Studio,
vLLM, LiteLLM, self-hosted deployments, etc.) without requiring an external
proxy.

Each endpoint is persisted as JSON under `settings.customEndpoints` and
registered in the provider registry as `custom:<endpointId>`. Traffic is
routed through an embedded Anthropic Messages ↔ OpenAI Chat Completions
bridge that handles message translation, streaming tool_calls accumulation,
graceful image dropping when vision isn't supported, and per-model
capability gating.

Backend only — UI for endpoint management ships in a follow-up PR.

Acceptance criteria covered:
- Tool use works end-to-end via tool_calls deltas → Anthropic tool_use blocks
- Streaming works for both Anthropic and OpenAI-compatible providers
- Unsupported features (vision, tool use) are silently dropped per model
- Built-in Anthropic provider behaviour is unchanged
- Existing Ollama provider keeps working; new bridge is for generic OAI-compat

* fix(providers): bind custom-endpoint bridge to loopback + honour live thinkingModes

Addresses review feedback on #1929:

P1 — Security: the OpenAI Chat Completions bridge was binding to 0.0.0.0
because `Bun.serve({ port: 0 })` defaults the hostname. On multi-user hosts
another local user could probe ephemeral ports and reach the bridge with the
configured upstream API key. Now explicitly binds to 127.0.0.1.

P1 — Correctness: `addSessionStateOptions` resolved provider thinking mode
exclusively from the static `PROVIDER_THINKING_MODES` map, which doesn't list
`custom:*` providers and therefore defaulted to `'granular'`. That emitted
`thinking: { type: 'enabled', ... }` for endpoints whose capabilities report
`thinkingModes: 'off'`. The bridge silently dropped the field, but the SDK
could error expecting matching reasoning blocks back. Now prefers the ... (continued)

17547 of 75492 relevant lines covered (23.24%)

12.22 hits per line

Source Files on job daemon-online-convo - 26007705881.11
  • Tree
  • List 293
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 26007705881
  • f5348543 on github
  • Prev Job for on dev (#26006495016.6)
  • Next Job for on dev (#26009933549.26)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc