Nexus Orchestrator

Roadmap & Release History · v1.2.0 live

Planned
#
Ollama Backend Abort
Stopping Ollama generation server-side when the client disconnects. Not a Nexus bug: on client disconnect Nexus already closes the upstream connection immediately (reader.cancel() tears down the socket mid-stream — verified). The runner keeps generating because Ollama / llama.cpp does not check for a closed connection between tokens (ollama#2876, llama.cpp#24496). No Nexus-side fix is possible; it resolves automatically once upstream honors the closed connection.
Blocked — upstream Ollama Backend
#
Dockerfile Non-Root User
Run the container as a non-root user via a PUID/PGID entrypoint pattern. Currently blocked because Unraid host volumes are root-owned and a simple USER nexus instruction breaks volume writes on first run. Requires an entrypoint script that chowns the data directory before dropping privileges.
Blocked — Unraid compat Docker
#
ENCRYPTION_SECRET Migration
ENCRYPTION_SECRET is currently derived from ADMIN_API_KEY when not explicitly set. Decoupling them requires a documented migration path for existing installs — re-encrypting stored config and conversations without data loss during the transition.
Migration risk Backend Security
Release History
Completed
v1.2.0 — live
URL Fetch Tool
fetch_url LLM tool added alongside web_search. Fetches a URL server-side, strips HTML to plain text (scripts, styles, comments removed; entities decoded; block tags → newlines), returns up to 50 KB to the model. Gated by the existing SearXNG globe toggle — no new UI required. Tool-calling path refactored from a single-call branch to a multi-turn agentic loop (up to 4 tool calls per turn): model can chain web_searchfetch_url on a result → answer. Both Ollama-native and OpenAI-compat message shapes handled. SSRF-protected (cloud metadata blocked; LAN allowed). 15-second per-fetch timeout. New standalone module fetchUrl.ts with 26 unit tests.
New feature Backend Frontend 26 tests
Dead Code Cleanup
Removed unused imports, dead state, no-op code, and dead exports across server.ts, useConfig.ts, vite.config.ts, useConnection.ts, useConversations.ts, ProviderConfig.tsx, and db.ts. No behaviour changes.
Refactor
Code Block Horizontal Scroll
Code blocks in chat responses now scroll horizontally when content is wider than the container. Copy and language badge buttons repositioned inside the block so they remain reachable regardless of scroll position. whiteSpace: pre prevents line wrapping that previously hid overflow content.
Bug fix Frontend
Provider URL Canonicalization
On every config save, any CategoryModel.providerUrl not matching a known provider is rewritten to the first provider URL. Fixes stale hostnames persisting in category pools after a provider is renamed — routing failures were intermittent because the old URL still resolved on some requests.
Bug fix Backend
CVE Patches
express-rate-limit bumped to ^8.5.1 (GHSA-v2v4-37r5-5v8g — XSS via ip-address package). overrides.postcss: ^8.5.10 added to patch transitive dependency (GHSA-qx2v-qp2m-jg93 — CSS stringify XSS). npm audit reports 0 vulnerabilities.
Security Dependencies
MCP Tool Support
External MCP servers are now available as LLM tools alongside web_search and fetch_url. Configured per user in the Models tab (up to 10 servers). Tools prefixed <server>__<tool>. 5-minute TTL cache with manual refresh. Agentic loop cap raised 4 → 8. SSRF blocking, header validation, bearer token redaction. 32 tests.
New feature Backend Frontend Security
v1.1.9 — live
Thinking Toggle
Server sends think: true to confirmed Ollama instances via native /api/chat. message.thinking chunks synthesized into <think> tags server-side. Models that natively emit <think> tags (DeepSeek R1) parsed identically client-side. Collapsible purple section above the response, scrollable max height. Global default in System tab; per-chat override via Brain icon. Models that reject think: true (400) retry silently without it. FAST category always excluded.
New feature Backend Frontend Ollama-native
Ollama Detection Fix
Health check now probes /api/tags before /v1/models. Previously Ollama's OpenAI-compatible endpoint responded first, causing misidentification as a generic provider and routing to /v1/chat/completions instead of /api/chat — which meant think: true was never sent.
Bug fix Backend Ollama-native
Docker Image Size Reduction
All frontend/build/type packages moved to devDependencies. npm prune --production added to Dockerfile builder stage. Unused node-fetch dependency removed (Node 20 has native fetch). Runtime dependencies reduced to 7 packages. Image size: 127 MB → ~86 MB.
Improvement Docker
Community Standards
Added CONTRIBUTING.md (getting started, project structure, commit format, PR guidelines, design principles), SECURITY.md (supported versions, reporting via GitHub private advisories, scope definitions), and GitHub issue templates (bug report, feature request; blank issues disabled).
Community Docs
v1.1.8
Copy Code Button
Hover-to-reveal Copy button on all code blocks. 2-second "Copied" feedback with check icon.
UXFrontend
FAST Category Routing Fix
FAST restricted to pure micro-interactions only (greetings, yes/no, trivial arithmetic). Any prompt requiring knowledge retrieval or explanation now routes to GENERAL.
Bug fixBackend
Security Hardening
CORS origin echo; SSRF metadata blocklist expanded; security headers (CSP, HSTS, X-Frame-Options); rate limit on password change; session sweep (hourly) + cap (10/user); body limits (1 MB global, 20 MB chat); trust proxy; admin settings Zod schema; password complexity; cookie npm package; error leakage prevention; API key decoupled from admin password.
SecurityBackend
v1.1.7
Collapsible Settings Sections + Tab Persistence + Discovered Models Redesign
All Models tab sections collapse/expand with localStorage persistence. Active tab persists across page refresh. Discovered Models replaced with a provider-grouped collapsible list; size pills colour-coded by parameter tier. Mixed content fix: removed hardcoded localhost URL from frontend bundle.
UXFrontend
v1.1.6
OpenAI-Compat Provider Fixes + Slow-Loading Timeouts
Health check and model discovery probe /v1/models correctly for /v1-suffixed base URLs (llama-swap, LM Studio). Per-attempt chat timeout raised to 300s (CHAT_TIMEOUT_MS env var). Loading-retry backoff extended to 5 retries × 30–150s.
Bug fixBackend
v1.1.5
Multiple Local Providers
Configure Ollama, llama-swap, llama.cpp, and any other OpenAI-compatible endpoints simultaneously. localProviders: [{ name, url, key }] replaces the single localUrl/localKey pair. CategoryModel = { name, providerUrl } stores the provider URL at assignment time. Existing configs migrate automatically on first load.
New featureBackendFrontend
v1.1.4
Web Search Sources Display
Collapsible Sources panel below assistant response shows the SearXNG results used — title (link), URL, snippet.
UXFrontend
v1.1.3
SearXNG Web Search via Tool Calling
LLM-driven web_search tool. Configure SearXNG URL in Models tab. Always-on toggle or per-chat globe icon. Server handles full agentic loop and streams the final response. FAST category skips tool injection.
New featureBackendFrontend
v1.1.2
Request Queuing
Per-user FIFO queue for chat requests. Max 5 pending per user; 6th returns 503. Client disconnects while queued are skipped.
ReliabilityBackend
v1.1.1
Session Isolation Fix
Signing out fully clears all in-memory state. Login modal cannot be dismissed when authentication is required. Session expiry (401) triggers the same full wipe as manual logout.
Bug fixSecurity
v1.1.0
Multi-User Support
Per-user accounts with isolated config, conversations, and projects. Username/password login, session-based auth (httpOnly cookies), admin user management (CRUD, password reset, registration toggle), per-user provider config and category mappings, change password, user menu in header. Existing single-user installs migrate automatically.
New featureBackendFrontend
v1.0.6 – v1.0.9
Conversation Pagination · Router Caching · FAST + SECURITY Categories · Streaming Buffer · Projects · Error Boundaries
Paginated sidebar (50/page, lazy-loaded messages). In-memory LRU router cache (100 entries, 5 min TTL, off by default). FAST category for trivial one-liners; SECURITY category for vulnerability assessment, CTF, pentesting. Streaming chunk buffer fixes silent token loss on split TCP reads. Router cache toggle persistence fix. Full conversation export endpoint. Projects: named folder organisation, inline rename, right-click assign, delete with keep/remove option. React error boundaries per tab.
New featuresBug fixesBackendFrontend
v1.0.0 – v1.0.5
Initial Release — Core Orchestration
Intelligent intent routing (8 categories), hybrid local/cloud orchestration, MIME-based attachment routing, vision + document support, model fallback chain, model loading retry, stop generation button, Ollama auto-detection, SQLite storage (WAL mode), AES-256-GCM encryption, same-origin CORS, SSRF protection, httpOnly session cookies, KaTeX LaTeX rendering, Pino structured logging, Zod input validation on all endpoints, rate limiting, Vitest test suite, provider-agnostic (no hardcoded cloud defaults), Docker + Unraid community template.
Initial releaseBackendFrontendDocker