Skip to content

Feature: QoL and feature requests from daily use #1104

Description

@ArcticalOwl

Is your feature request related to a problem? Please describe.

A wishlist from using GoModel day to day. I've tried a few other gateways (LiteLLM, Bifrost, CLIProxyAPI, etc), and it's nice to have one that stays lightweight while still handling virtual models properly. Thanks for the work on this.

These are the rough edges I keep hitting. Small stuff first, then the bigger ones I'd want more.

Describe the solution you'd like

Smaller changes

1. Optional list view for custom models

When adding a provider, the models field in advanced settings is a single-line text box. Once the list gets long it's hard to read or edit. A list view (one model per row) would be easier. (For me, it is easier to manage manual models via UI)

2. Models page: hide models and filter by enabled / disabled

Auto-discovery pulls in a lot of models on some providers, and the list gets long enough that the page lags when I use it (this was on older version, latest 0.1.98 seems got a better performance?). Let me hide individual models, especially the disabled ones I don't need to see, and add a filter so I can show only enabled, or only disabled, models.

3. Test button per model on the Models page

A per-model button that sends a default test prompt, so I can check a single model responds without going through the Playground.

4. Audit log: tokens/sec per request

The audit log has duration and token usage for each request, but no tokens/sec, so comparing provider speed means doing the division myself. Both values are already on the entry (usage.output_tokens, duration_ns), and on each attempt too, so this looks like a display change. Note this is different from the Live Token Throughput chart, which shows volume over time rather than per-request speed.

Bigger changes

5. A disabled target in a virtual model should fail over, not error

If a virtual model points at a disabled model, the request fails with requested model is not available instead of going on to the next target (which can be another virtual model). Please skip disabled targets and keep failing over.

Use case: when a provider's quota runs out I disable its models until the reset, then re-enable them by hand. There is a circuit breaker, but it doesn't trip reliably even after several errors from the provider, so disabling is the only manual control I have, and right now it breaks the whole virtual model instead of falling through.

6. Per-model overrides

  • Category. I added pollinations.ai as an openai-type provider with auto-discovery, and many of the image models don't show up on the Image models tab. Let me set a model's category (text / embeddings / image / audio).
  • Capabilities. Let me see whether a model accepts vision or media input, and set it manually when discovery gets it wrong.
  • Context size / output tokens. These come from models.dev. Let me override them per model.

7. Virtual model context size / output tokens

Use the values of the target that served the request, or let me set them on the virtual model.

8. Playground: test media other than text

Let me test image and audio models in the Playground, not just text.

9. Vision bridge: route image requests to a target that accepts images

If a request contains images and the target is text-only, the provider either errors or answers as if no image was sent. Skip targets that don't accept image input and route to one that does. Ideally decide this before the provider call, the same way unavailable targets are skipped.

  • Where the data comes from. The modality info from models.dev, plus the per-model override in request 6.
  • Scope. Per virtual model and opt-in, either as a vision target or as a routing strategy that filters targets by request content.
  • Fallback. If no target accepts images, keep today's behaviour and let the provider's error through. Don't drop the image.

Describe alternatives you've considered

Not much of a plan today, I just work around it by hand: disabling models when a provider quota runs out, doing the tokens/sec division myself, and testing models through the Playground.

Additional context

  • Happy to split any of these into their own issue, or send a PR if one of the smaller ones is straightforward.
  • GoModel version: 0.1.98 (commit: 12861be, built: 2026-09-26T21:57:00Z, go1.27.1)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions