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 (HF_TOKEN)
The Settings panel's "Add model from Hugging Face" search/download is proxied through the backend (not called directly from the browser), so a private/gated HF repo can be searched by setting HF_TOKEN in the environment the backend runs in - e.g. a backend/.env file (loaded automatically via dotenv):
HF_TOKEN=hf_...
Never put this in settings.json - it's excluded from Settings on purpose, since GET /api/settings returns the whole object straight to the browser.