Configuration
Configuration#
Nixi can be configured via CLI flags, environment variables, or config files.
Priority Order#
Configuration is loaded in this order (highest priority wins):
- CLI flags –
--url,--model,--api - Environment variables –
NIXI_LLM_URL,NIXI_MODEL, etc. - User config –
~/.config/nixi/config.toml - System config –
/etc/nixi/config.toml(written by the NixOS module) - Defaults
User config overrides the system config, so you can use the NixOS module for base settings and tweak per-user.
CLI Flags#
--url LLM server URL (default: http://localhost:11434)
--model Model name (default: qwen3:30b-a3b)
--api API type: auto, ollama, openai (default: auto)
--version Print version and exit
The serve subcommand accepts additional flags:
nixi serve [flags]
--port Web UI port (default: 6494)
--host Bind address (default: 0.0.0.0)
--url LLM server URL
--model Model name
--api API type
Other subcommands:
nixi version Print version
nixi auth Check web UI auth status
nixi auth --set Set web UI password (prompts for input, empty for random)
Environment Variables#
| Variable | Description | Default |
|---|---|---|
NIXI_LLM_URL | LLM server URL | http://localhost:11434 |
NIXI_MODEL | Model name | qwen3:30b-a3b |
NIXI_API | API type (auto/ollama/openai) | auto |
NIXI_CONTEXT_SIZE | Context window size | 32768 |
NIXI_DATA_DIR | Data directory | ~/.local/share/nixi/ |
NIXI_THEME | TUI theme (dark/light) | dark |
NIXI_WEB_PORT | Web UI port | 6494 |
NIXI_WEB_HOST | Web UI bind address | 0.0.0.0 |
NIXI_CONTAINER_RUNTIME | Container runtime (auto/podman/docker) | auto |
Config File#
The user config lives at ~/.config/nixi/config.toml (or $XDG_CONFIG_HOME/nixi/config.toml). The install script creates this automatically:
[llm]
url = "http://localhost:11434"
model = "qwen3:30b-a3b"
api_type = "auto"
context_size = 32768
[paths]
data_dir = "~/.local/share/nixi/"
[containers]
container_runtime = "auto" # "auto", "podman", or "docker"
[ui]
theme = "dark"
[web]
port = 6494
host = "0.0.0.0"
password_hash = "$2a$10$..." # set via 'nixi auth --set'
Note: Never edit
password_hashdirectly. Usenixi auth --setto generate valid bcrypt hashes.
API Auto-Detection#
Nixi auto-detects whether your LLM server speaks Ollama or OpenAI protocol:
- Port
11434– assumed Ollama - Port
1234– assumed OpenAI (LM Studio) - Otherwise – probes
/api/tags(Ollama) and/v1/models(OpenAI)
Supported servers: Ollama, LM Studio, llama.cpp, vLLM, and any OpenAI-compatible API.
Your choice of model directly affects Nixi’s ability to use tools reliably. See Tools – LLM Models for guidance on model selection.
Context Size Defaults#
For local models, Nixi sets context size based on model size:
| Model size | Context | Example |
|---|---|---|
| 7B or smaller | 16K | qwen3:7b |
| 30B | 32K | qwen3:30b-a3b |
| 70B+ | 64K | qwen3:72b |
Remote servers control their own context size.
Node Configuration#
Remote nodes are configured with [[nodes]] sections in the config file:
[[nodes]]
name = "web-server"
host = "192.168.1.10"
user = "nixi"
mode = "managed"
[[nodes]]
name = "monitoring"
host = "192.168.1.30"
user = "nixi"
mode = "monitored"
| Field | Description | Default |
|---|---|---|
name | Friendly name for the node | (required) |
host | SSH hostname or IP address | (required) |
user | SSH user | nixi |
mode | managed (full control) or monitored (read-only) | managed |
Nodes can also be adopted interactively using the /adopt TUI command, which handles SSH key setup. See Multi-Node for the full guide.
NixOS Module Options#
The NixOS module writes a system-level config to /etc/nixi/config.toml. User config at ~/.config/nixi/config.toml overrides it, and nodes adopted via /adopt are saved to the user config.
services.nixi = {
enable = true;
package = inputs.nixi.packages.x86_64-linux.default;
user = "nixi"; # default
group = "nixi"; # default
llmUrl = "http://localhost:11434";
model = "qwen3:30b-a3b";
apiType = "auto";
contextSize = 32768;
dataDir = "/var/lib/nixi";
nodes = [
{ name = "web-server"; host = "192.168.1.10"; }
{ name = "monitoring"; host = "192.168.1.30"; mode = "monitored"; }
];
web = {
enable = true; # start the web UI daemon as a systemd service
port = 6494; # default
host = "0.0.0.0"; # default
};
};
See Web UI for the full web daemon guide.