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.