Settings
The Settings panel (⚙ in the app) exposes four groups; the same fields are readable/writable via GET/PUT /api/settings. Full shape: shared/src/settings.ts.
| Group | Settings |
|---|---|
| Connection | llamaNexusBaseUrl, apiPath (default /openai/v1), serverHeartbeatTimeoutSeconds, discoveryPort (UDP, default 50050 - restart required), workspaceRoot, bindHost (see Security), port |
| Model & Generation | defaultModel, defaultTemperature, defaultMaxTokens, systemPrompt, requestTimeoutSeconds, loadModelTimeoutSeconds, contextSize, autoCompactThreshold, autoCompactKeepMessages - plus the live model list (context size, loaded status, eject/remove buttons) and the Hugging Face search modal |
| Tool Calling | enableFileTools, enableBashTool, enablePlanningTool, enableAgentTool, maxAgentSteps, maxToolCallRepeats, maxToolChainDepth |
| Chat Appearance | timestampFormat, chatFontSize, chatCodeFontSize, chatMetaFontSize, uiFontSize |
Per-session sampling overrides (temperature, top_k/top_p, penalties, mirostat, stop sequences, ...) live in the chat view's "Tuning" sidebar instead - see shared/src/chat.ts's SessionParams; a session's own value always wins over the Model & Generation defaults above.
lastUsedModel is readable via GET /api/settings but backend-managed only (not in the PUT whitelist, not shown in the Settings UI) - it tracks whichever model most recently generated a reply and seeds the model for every newly created session.
Hugging Face gated repos
The Settings panel's "Add model from Hugging Face" search/download proxies through this backend to the configured LlamaNexus proxy (llamaNexusBaseUrl), which is what actually calls huggingface.co. A private/gated repo is searchable once HF_TOKEN is set on the LlamaNexus proxy itself (see Docker setup) - this backend doesn't read or store an HF token of its own, so there's nothing to configure here.
License key
License enforcement is currently disabled - chat sends work whether or not this is set. If set, the licenseKey setting (Connection group) registers this install against your LlamaNexus account's plan. It can also be set via the LLAMANEXUS_LICENSE_KEY environment variable (e.g. in docker-compose.yml), which takes precedence over the Settings value - GET /api/settings reports a licenseKeyFromEnv: true flag in that case, and the Settings UI disables the field accordingly. Either way the field is masked (type="password") in the UI and never echoed back in plaintext logs.
LLAMANEXUS_PORT/LLAMANEXUS_BIND_HOST environment variables override the port/bindHost settings the same way - useful for dodging a port conflict without touching settings.json.