v1.0.0-beta11
looplj/axonhubv1.0.0-beta11Oct 8, 2026by looplj
Upgrading?
AI Summary
This beta release focuses on security improvements, quota tracking for multiple providers, and comprehensive bug fixes. It includes enhancements to channel management, frontend performance, and API handling across Anthropic, OpenAI, Gemini, and Codex providers.
Key Highlights
- Security improvements including request body size caps, OIDC header injection prevention, and spoofed client IP header blocking
- New quota tracking support for Ollama Cloud and z.ai providers
- Channel management enhancements including auto-detection of relay endpoints and bulk tag management
- Frontend performance improvements including virtualized conversation lists and responsive tables
- Comprehensive bug fixes for provider integrations including Anthropic, OpenAI, and Codex
New Features
- Ollama Cloud quota tracking
- z.ai quota tracking
- zenmux_video channel type
- Bulk channel tag management
- Global auto-disable rules for channels
- User agent column in request logs
- Request and provider response headers persistence
- Reasoning effort for model conditions
- Auto-detect relay endpoints and show endpoint column
- GPT-6 Sol and Luna default models for Codex
- Response namespace transformer
- Virtualization for conversation list
Full Release Notes
## What's Changed * fix(gql): return channel model entries in deterministic order by @JasonWenTheFox in https://github.com/looplj/axonhub/pull/2416 * fix(frontend): remove table row hover scale causing scrollbar flicker by @JasonWenTheFox in https://github.com/looplj/axonhub/pull/2415 * fix(channels): use reported Codex quota window durations by @Yuna-Celisse in https://github.com/looplj/axonhub/pull/2417 * fix(anthropic): preserve DeepSeek native web search tools by @remote-controlled-man in https://github.com/looplj/axonhub/pull/2423 * fix(security): cap inbound request body and decompression size by @MrLiuGangQiang in https://github.com/looplj/axonhub/pull/2422 * fix(security): prevent OIDC Host header injection by @MrLiuGangQiang in https://github.com/looplj/axonhub/pull/2421 * fix(frontend): make channels table responsive without clipping actions by @moonjoke001 in https://github.com/looplj/axonhub/pull/2418 * fix(security): prevent spoofed client IP headers by @MrLiuGangQiang in https://github.com/looplj/axonhub/pull/2424 * feat(quota): add Ollama Cloud quota tracking by @bookshiyi in https://github.com/looplj/axonhub/pull/2413 * refactor: generalize channel quota display and normalize provider limits by @llc1123 in https://github.com/looplj/axonhub/pull/2419 * fix(version): compare glued prerelease counters numerically by @EJCrystal in https://github.com/looplj/axonhub/pull/2431 * fix(frontend): hide empty channel column and correct ZenMux Gemini icon by @llc1123 in https://github.com/looplj/axonhub/pull/2436 * fix(frontend): clear stale project selection on account switch by @brynne8 in https://github.com/looplj/axonhub/pull/2437 * feat(channel): add dedicated zenmux_video channel type by @llc1123 in https://github.com/looplj/axonhub/pull/2441 * fix: allow adding custom models after fetching models in channel dialog by @llc1123 in https://github.com/looplj/axonhub/pull/2440 * fix(webhook): render occurred_at in the configured system timezone by @EJCrystal in https://github.com/looplj/axonhub/pull/2443 * perf(requests): avoid full count on paginated request list by @MrLiuGangQiang in https://github.com/looplj/axonhub/pull/2446 * feat(quota): add z.ai quota tracking by @BLumia in https://github.com/looplj/axonhub/pull/2444 * chore(deps): bump google.golang.org/grpc from 1.83.1 to 1.83.2 in /integration_test/gemini by @dependabot[bot] in https://github.com/looplj/axonhub/pull/2447 * fix(channel): keep manual models consistent during model sync by @trim21 in https://github.com/looplj/axonhub/pull/2454 * fix(metrics): load exporter settings from environment by @imryao in https://github.com/looplj/axonhub/pull/2450 * feat(quota): replace quota enforcement with configurable routing by @llc1123 in https://github.com/looplj/axonhub/pull/2448 * fix(frontend): gate project-scoped queries until persisted project is validated by @brynne8 in https://github.com/looplj/axonhub/pull/2439 * fix(api): suppress stream errors after terminal events, close #2318 by @looplj in https://github.com/looplj/axonhub/pull/2395 * fix: retain live preview chunks when request completes by @brynne8 in https://github.com/looplj/axonhub/pull/2456 * feat: add bulk channel tag management by @AkaChou in https://github.com/looplj/axonhub/pull/2463 * fix(responses): preserve MCP namespace tool names across Chat Completions degradation by @mochenya in https://github.com/looplj/axonhub/pull/2432 * Revert "fix(responses): preserve MCP namespace tool names across Chat Completions degradation" by @looplj in https://github.com/looplj/axonhub/pull/2467 * feat(llm): response namespace transfomer by @looplj in https://github.com/looplj/axonhub/pull/2468 * fix: should always respect retry settings, close #2429 by @looplj in https://github.com/looplj/axonhub/pull/2469 * feat: change channel name left align, close #2390 by @looplj in https://github.com/looplj/axonhub/pull/2470 * chore: sync model developers data by @github-actions[bot] in https://github.com/looplj/axonhub/pull/2472 * fix: apply channel header overrides to model-list probes by @wangzhengzhuo05 in https://github.com/looplj/axonhub/pull/2471 * feat(channel): global auto-disable rules and bulk apply by @Elio9352 in https://github.com/looplj/axonhub/pull/2453 * fix(biz): read retry policy with a system bypass for API-key requests by @wangzhengzhuo05 in https://github.com/looplj/axonhub/pull/2478 * fix(biz): respect raw-URL marker and /v1 relays when fetching Zhipu/ZAI models by @EJCrystal in https://github.com/looplj/axonhub/pull/2481 * feat(requests): persist and display channel API key suffix in request execution details by @Silentely in https://github.com/looplj/axonhub/pull/2480 * feat(quota): read Command Code quota with the account API key by @myml in https://github.com/looplj/axonhub/pull/2474 * fix(openai): use fs paths for embedded fixtures by @remote-controlled-man in https://github.com/looplj/axonhub/pull/2484 * fix: use model card output limit as Anthropic max_tokens default by @EJCrystal in https://github.com/looplj/axonhub/pull/2488 * fix: load external response bodies stored in PostgreSQL jsonb by @imryao in https://github.com/looplj/axonhub/pull/2498 * feat(requests): add user agent column to request logs by @freebattle in https://github.com/looplj/axonhub/pull/2494 * feat: persist request and provider response headers by @imryao in https://github.com/looplj/axonhub/pull/2502 * chore: sync model developers data by @github-actions[bot] in https://github.com/looplj/axonhub/pull/2507 * fix(openai): accept images array in JSON image edit requests by @keeyangyy in https://github.com/looplj/axonhub/pull/2497 * fix(codex): preserve turn state across Responses transport by @imryao in https://github.com/looplj/axonhub/pull/2506 * fix: preserve provider-required User-Agent on outbound requests, refs #2303 by @remote-controlled-man in https://github.com/looplj/axonhub/pull/2501 * fix: use inbound request body in set_if_absent body overrides, close #2133 by @remote-controlled-man in https://github.com/looplj/axonhub/pull/2499 * feat: add reasoning effort to the model condition by @looplj in https://github.com/looplj/axonhub/pull/2513 * chore: update license by @looplj in https://github.com/looplj/axonhub/pull/2514 * docs: add greptile badge by @looplj in https://github.com/looplj/axonhub/pull/2515 * fix: keep the template popover scrollable inside the profiles dialog, close #2229 by @remote-controlled-man in https://github.com/looplj/axonhub/pull/2517 * perf(requests): virtualize conversation list and lazy-expand detail JSON by @EJCrystal in https://github.com/looplj/axonhub/pull/2511 * fix(openai): preserve allowed_tools tool_choice across Chat Completions routes, refs #2504 by @remote-controlled-man in https://github.com/looplj/axonhub/pull/2519 * fix: round robin strategy did not works for some times, close #2358 by @looplj in https://github.com/looplj/axonhub/pull/2518 * fix(dashboard): resolve empty fastestModels via LEFT JOIN by @brynne8 in https://github.com/looplj/axonhub/pull/2521 * feat(channels): auto-detect relay endpoints and show endpoint column by @freebattle in https://github.com/looplj/axonhub/pull/2512 * feat(codex): add GPT-6 Sol and Luna default models by @guliujian in https://github.com/looplj/axonhub/pull/2527 * fix(quota): restore OpenCode Go quota popover by @myml in https://github.com/looplj/axonhub/pull/2525 * fix(cline): keep quota fresh when usages ledger is rate limited by @freebattle in https://github.com/looplj/axonhub/pull/2495 * fix(anthropic): carry parallel tool use control through the transformer, refs #2504 by @serhiizghama in https://github.com/looplj/axonhub/pull/2523 * fix(scripts): make cleanup-sqlite.sh type-aware and non-aborting by @Catapult291 in https://github.com/looplj/axonhub/pull/2526 * fix(anthropic,gemini): fail closed on developer-only requests and dropped content parts by @525300887039 in https://github.com/looplj/axonhub/pull/2520 * feat(systemone): add native system one api format and typesafe jev provider support by @Silentely in https://github.com/looplj/axonhub/pull/2524 * feat(quota): support multi-key Zhipu channels and GLM coding plan credit limits by @MrLiuGangQiang in https://github.com/looplj/axonhub/pull/2482 * chore: sync model developers data by @github-actions[bot] in https://github.com/looplj/axonhub/pull/2531 * feat(sidebar): add customizable sidebar menu by @freebattle in https://github.com/looplj/axonhub/pull/2530 * feat(requests): add upstream model consistency audit by @EJCrystal in https://github.com/looplj/axonhub/pull/2509 * refactor: cleanup upstream response model by @looplj in https://github.com/looplj/axonhub/pull/2533 * feat(modelscope): add native async image generation and editing by @keeyangyy in https://github.com/looplj/axonhub/pull/2534 * feat(models): persist reasoning levels and export a Pi models.json provider by @trim21 in https://github.com/looplj/axonhub/pull/2551 * fix(openai): accept textual statuses in Responses streams by @llc1123 in https://github.com/looplj/axonhub/pull/2553 * feat(requests): record and show the channel API key index used per execution by @keeyangyy in https://github.com/looplj/axonhub/pull/2550 * fix(openai): keep content valid for reasoning-only assistant messages by @myml in https://github.com/looplj/axonhub/pull/2552 * feat(codex): support fast model aliases by @llc1123 in https://github.com/looplj/axonhub/pull/2555 * fix(channels): show Gemini endpoint protocol in channel list by @llc1123 in https://github.com/looplj/axonhub/pull/2558 * fix(playground): constrain layout to dashboard viewport by @JasonWenTheFox in https://github.com/looplj/axonhub/pull/2554 * feat(playground): remember the last selected model by @JasonWenTheFox in https://github.com/looplj/axonhub/pull/2556 * fix(orchestrator): support model aliases in channel tests by @llc1123 in https://github.com/looplj/axonhub/pull/2563 * fix(stream): preserve completed requests after trailing transport errors by @llc1123 in https://github.com/looplj/axonhub/pull/2564 * feat(admin): allow service account API keys on /admin/graphql by @trim21 in https://github.com/looplj/axonhub/pull/2565 * fix(quota): add conflict target to quota routing migration claim by @suixinio in https://github.com/looplj/axonhub/pull/2562 * chore(sync): keep providers.json key order stable by @trim21 in https://github.com/looplj/axonhub/pull/2568 * fix: suppress trailing SSE errors after terminal response by @Saerdna in https://github.com/looplj/axonhub/pull/2319 * fix(frontend): keep price time picker visible in dialog by @525300887039 in https://github.com/looplj/axonhub/pull/2546 * fix(frontend): make page headers responsive on narrow screens by @KremeCN in https://github.com/looplj/axonhub/pull/2542 * feat(auth): add activity-based JWT renewal for admin sessions by @llc1123 in https://github.com/looplj/axonhub/pull/2559 * fix(auth): harden JWT renewal error handling by @llc1123 in https://github.com/looplj/axonhub/pull/2577 * fix(frontend): keep cursor history aligned when paging backward by @llc1123 in https://github.com/looplj/axonhub/pull/2578 * fix: scope API key name uniqueness to creator by @brynne8 in https://github.com/looplj/axonhub/pull/2575 * refactor: branding new logo by @looplj in https://github.com/looplj/axonhub/pull/2574 * fix: default empty input_schema for Anthropic function tools with nil params by @mvanhorn in https://github.com/looplj/axonhub/pull/1872 * fix(responses): forward verified reasoning accounting header by @asuan-dev in https://github.com/looplj/axonhub/pull/2035 * chore(deps): bump nanoid from 5.1.16 to 6.0.0 in /frontend by @dependabot[bot] in https://github.com/looplj/axonhub/pull/2181 * fix(models): align association priority cap with backend contract by @ronronner02 in https://github.com/looplj/axonhub/pull/2327 * fix(requests): isolate playground requests by user by @brynne8 in https://github.com/looplj/axonhub/pull/2206 * chore(deps): bump go.opentelemetry.io/otel/sdk from 1.44.0 to 1.45.0 in /cmd/schema by @dependabot[bot] in https://github.com/looplj/axonhub/pull/2583 * feat(bailian): add native OpenAI Responses API support by @iwoov in https://github.com/looplj/axonhub/pull/2290 * Add MiniMax image generation support by @octo-patch in https://github.com/looplj/axonhub/pull/2332 * feat(analytics): show tok/s and TTFT in usage details and qualify performance filters by @llc1123 in https://github.com/looplj/axonhub/pull/2585 * chore(deps): bump go.opentelemetry.io/otel/sdk from 1.44.0 to 1.45.0 by @dependabot[bot] in https://github.com/looplj/axonhub/pull/2492 * fix(responses): ignore additional_tools input items by @Solaris-star in https://github.com/looplj/axonhub/pull/2582 * fix(responses): preserve web search call status in session input by @xujiantop-crypto in https://github.com/looplj/axonhub/pull/2581 * fix(openai): preserve custom tool input from final stream events by @hahahahahayesyeseys in https://github.com/looplj/axonhub/pull/2500 * fix(orchestrator): preserve non-streaming Anthropic requests by @Solaris-star in https://github.com/looplj/axonhub/pull/2586 * fix(api-keys): enforce personal key guard on template load and let system owners manage them by @iqiuzixuan in https://github.com/looplj/axonhub/pull/2462 * fix(frontend): fall back to document copy when Clipboard API rejects by @JasonWenTheFox in https://github.com/looplj/axonhub/pull/2464 * feat(channel): unify override template editing by @EJCrystal in https://github.com/looplj/axonhub/pull/2529 * fix(orchestrator): retry upstream connection resets before content by @llc1123 in https://github.com/looplj/axonhub/pull/2589 * revert(codex): remove hardcoded fast model aliases by @llc1123 in https://github.com/looplj/axonhub/pull/2590 * chore(codex): update client to 0.159.0 and model presets by @llc1123 in https://github.com/looplj/axonhub/pull/2591 * feat(codex): fetch official OAuth model catalog by @llc1123 in https://github.com/looplj/axonhub/pull/2592 * fix(openai): preserve refusal, audio, logprobs, and reasoning in aggregated chat streams by @remote-controlled-man in https://github.com/looplj/axonhub/pull/2561 * fix(openai): project aggregated citations to top-level field instead of leaking transformer_metadata by @remote-controlled-man in https://github.com/looplj/axonhub/pull/2572 * fix(orchestrator): prevent pass-through stream deadlock during pre-read by @Lopution in https://github.com/looplj/axonhub/pull/2580 * fix(transformer): preserve strict tool settings by @hahahahahayesyeseys in https://github.com/looplj/axonhub/pull/2539 * fix(frontend): stabilize popover positioning in dialogs by @llc1123 in https://github.com/looplj/axonhub/pull/2593 * fix(playground): initialize shared model state without an API key by @llc1123 in https://github.com/looplj/axonhub/pull/2594 * fix(orchestrator): apply prompt masking to pass-through request bodies by @cesaryuan in https://github.com/looplj/axonhub/pull/2153 * fix(playground): hide disabled channels from the playground selectors by @keeyangyy in https://github.com/looplj/axonhub/pull/2597 * feat(quota): show neuralwatt window marker and estimate by @djdembeck in https://github.com/looplj/axonhub/pull/2599 * fix(playground): 支持省略温度参数 by @Yibael in https://github.com/looplj/axonhub/pull/2605 * chore: sync model developers data by @github-actions[bot] in https://github.com/looplj/axonhub/pull/2603 * refactor(stream): unify terminal outcome finalization by @llc1123 in https://github.com/looplj/axonhub/pull/2570 * fix(apikeys): clear the IP allowlist when the restriction is turned off by @EJCrystal in https://github.com/looplj/axonhub/pull/2602 * fix(security): 修复 IPv4 映射地址的 IP/CIDR 匹配 by @Yibael in https://github.com/looplj/axonhub/pull/2606 * fix(responses): emit protocol errors for interrupted SSE streams by @llc1123 in https://github.com/looplj/axonhub/pull/2595 * fix: accept numeric strings in protocol usage cost by @llc1123 in https://github.com/looplj/axonhub/pull/2611 * fix: codex image generation pass through by @looplj in https://github.com/looplj/axonhub/pull/2610 * fix(bailian): support standard reasoning_effort none by @remote-controlled-man in https://github.com/looplj/axonhub/pull/2414 * feat: add OpenAI Decisions API phase one by @llc1123 in https://github.com/looplj/axonhub/pull/2620 * fix(antigravity): discover account models with current IDE client by @Yuna-Celisse in https://github.com/looplj/axonhub/pull/2619 * fix(anthropic): accept thinking.type=enabled without budget_tokens, close #2596 by @serhiizghama in https://github.com/looplj/axonhub/pull/2617 * fix(quota): preserve reported Codex window usage by @xujiantop-crypto in https://github.com/looplj/axonhub/pull/2612 * fix(orchestrator): support Decisions channel tests by @llc1123 in https://github.com/looplj/axonhub/pull/2621 * fix(responses): keep additional_tools for the official Codex backend by @zgq354 in https://github.com/looplj/axonhub/pull/2618 * fix(stream): use the usage-only chunk for terminal counts by @coulsontl in https://github.com/looplj/axonhub/pull/2615 * fix(channels): 修复 System One 渠道与 API key 的测试格式 by @Yibael in https://github.com/looplj/axonhub/pull/2607 ## New Contributors * @moonjoke001 made their first contribution in https://github.com/looplj/axonhub/pull/2418 * @EJCrystal made their first contribution in https://github.com/looplj/axonhub/pull/2431 * @mochenya made their first contribution in https://github.com/looplj/axonhub/pull/2432 * @wangzhengzhuo05 made their first contribution in https://github.com/looplj/axonhub/pull/2471 * @Elio9352 made their first contribution in https://github.com/looplj/axonhub/pull/2453 * @freebattle made their first contribution in https://github.com/looplj/axonhub/pull/2494 * @keeyangyy made their first contribution in https://github.com/looplj/axonhub/pull/2497 * @guliujian made their first contribution in https://github.com/looplj/axonhub/pull/2527 * @serhiizghama made their first contribution in https://github.com/looplj/axonhub/pull/2523 * @Catapult291 made their first contribution in https://github.com/looplj/axonhub/pull/2526 * @Saerdna made their first contribution in https://github.com/looplj/axonhub/pull/2319 * @asuan-dev made their first contribution in https://github.com/looplj/axonhub/pull/2035 * @iwoov made their first contribution in https://github.com/looplj/axonhub/pull/2290 * @octo-patch made their first contribution in https://github.com/looplj/axonhub/pull/2332 * @xujiantop-crypto made their first contribution in https://github.com/looplj/axonhub/pull/2581 * @hahahahahayesyeseys made their first contribution in https://github.com/looplj/axonhub/pull/2500 * @iqiuzixuan made their first contribution in https://github.com/looplj/axonhub/pull/2462 * @Lopution made their first contribution in https://github.com/looplj/axonhub/pull/2580 * @Yibael made their first contribution in https://github.com/looplj/axonhub/pull/2605 * @zgq354 made their first contribution in https://github.com/looplj/axonhub/pull/2618 * @coulsontl made their first contribution in https://github.com/looplj/axonhub/pull/2615 **Full Changelog**: https://github.com/looplj/axonhub/compare/v1.0.0-beta10...v1.0.0-beta11
Related Repositories
Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models.
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
RAGFlow is a leading open-source Retrieval-Augmented Generation (RAG) engine that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs
The world’s fastest framework for building websites.
:cherry_blossom: A command-line fuzzy finder