Inventory
What NikOS installs
Twelve roles run on every install. Fifteen more are opt-in, and nothing in them is downloaded unless you ask. Every item below maps to a role you can read in the repository.
Core roles
These run on every install.
| Role | What it installs |
|---|---|
base | nala, git, curl, wget, build-essential, python3-pip, python3-venv, flatpak, gnupg, ca-certificates, dialog, xfconf, inkscape, openssh-server, tmux, pipx, sqlite3, unzip. Sets timezone, locale and NTP, adds the Flathub remote, deploys a default .tmux.conf. |
desktop | The Xubuntu desktop package set, LightDM and its GTK greeter. Detects an existing GNOME install, hands display-manager.service to LightDM, and sets the account's default session. |
theming | Nord GTK theme and icons, a generated wallpaper, GRUB theme, Plymouth boot splash (GPL-3.0-or-later, derived from Xubuntu's theme), an autostart entry that applies the wallpaper across every connected monitor, and dark Firefox, Chromium and Google Chrome in the desktop colour (existing profiles only). |
github-setup | GitHub CLI from GitHub's apt repository, plus the first-run wizard for auth, SSH keys and git identity. |
ai-stack | Ollama as a user service, the default model, Miniforge, the nikos-ai conda environment, PyTorch (CPU), and llama.cpp binaries. |
editors | VS Code from Microsoft's apt repository, plus the extension set. |
cloud-ai-cli | Gemini CLI, GitHub Copilot CLI, shell-gpt and glances via pipx. Provides the Node the npm-only CLIs run on: the system one when it is new enough, otherwise a pinned Node under your home through nvm. |
agent-dev | The agent frameworks, ML libraries and image analysis stack in the conda environment, plus Claude Code. |
dev-tools | distrodeck, image-view, git-lantern, ai-runner and mkcert, cloned into ~/.local/share/nikos-tools and built. |
network | Network tooling; adds you to the wireshark group. Tagged network. |
music | Music production tools and Ardour via Flatpak. Tagged music. |
education | Education tools and draw.io desktop via Flatpak. Tagged education. |
Optional bundles
Installed with nikos add <name>, or selected from the installer menu.
| Bundle | Contents |
|---|---|
neovim | Neovim with a minimal init.lua |
java | OpenJDK 21 (LTS) by default; nikos_java_versions adds 17 or 25 |
bun | The Bun JavaScript runtime |
zsh | Zsh with the Starship prompt |
podman | Rootless container runtime |
redis | Redis server and the Python client |
postgres | PostgreSQL with pgvector and psycopg2-binary |
mongodb | MongoDB Community 8.2 on 127.0.0.1:27017, mongosh, the Atlas CLI and pymongo |
qdrant | Qdrant vector database as a user systemd service on port 6333 |
k8s-tools | kubectl and Helm |
act | Run GitHub Actions workflows locally |
fabric | The Fabric AI pattern CLI |
jev | Jev client: the official TypeSafe SDK, hash-pinned, and a jev command. Bring your own API key (jev login). |
bitnet | BitNet.cpp 1-bit inference, built from source. Provides bitnet-cli. |
mistral-rs | mistral.rs, a Rust OpenAI-compatible LLM server |
monitoring | Netdata metrics dashboard |
openclaw | The OpenClaw LLM gateway CLI |
The Python AI environment
A conda environment named nikos-ai, built on Miniforge. Python is a range
(>=3.11,<3.14) rather than a fixed minor, so conda resolves whatever actually solves
against the package set.
| Group | Packages |
|---|---|
| Deep learning | torch, torchvision, torchaudio (CPU builds), transformers, accelerate |
| Agent frameworks | langchain, langchain-community, langchain-openai, llama-index, llama-index-llms-ollama, openai, anthropic, instructor |
| Retrieval | sentence-transformers, chromadb, qdrant-client, datasets, evaluate |
| Image analysis | opencv-contrib-python, pillow, scikit-image, imageio, pytesseract, timm |
| Data and notebooks | jupyter, jupyterlab, pandas, numpy, scikit-learn, matplotlib, litecli |
| Serving | fastapi, uvicorn, httpx |
OpenCV's wheels are dynamically linked, so libgl1, libglib2.0-0t64,
libsm6, libxext6 and ffmpeg are installed alongside them.
Tesseract arrives with orientation detection and nine language packs by default; set
nikos_tesseract_languages: ["all"] for all 160-plus.
Ollama models
Models come in modules, and each module pulls one model per role: the one this machine can
run. The model per role and class of machine is the fleet's approved set, in
ai-models.env. The default module is always pulled; the others with
nikos add ollama-text, -reasoning, -coding, -vision,
-embedding, or ollama-models for every role.
| Module | Role | small | standard | large | xlarge |
|---|---|---|---|---|---|
| default, text | general | qwen3.5:2b | qwen3.5:4b | qwen3.5:9b | qwen3.5:9b |
| text | creative | qwen3.5:4b | gemma4:latest | gemma4:latest | gemma4:latest |
| text | extract | qwen3.5:2b | qwen3.5:4b | qwen3.5:9b | qwen3.5:9b |
| text | classify | qwen3:1.7b | qwen3:1.7b | qwen3:1.7b | qwen3:1.7b |
| reasoning | reasoning | qwen3.5:4b | qwen3:8b | qwen3:8b | gpt-oss:20b |
| coding | code | qwen3.5:4b | qwen2.5-coder:7b | qwen2.5-coder:7b | qwen3-coder:30b |
| vision | vision | qwen3-vl:4b | qwen3-vl:4b | qwen3-vl:8b | qwen3-vl:8b |
| embedding | embed | nomic-embed-text | nomic-embed-text | nomic-embed-text | nomic-embed-text |
The class is measured: small has less than 11 GiB of memory and of GPU memory;
large has a GPU with 11 GiB or 30 GiB of memory; xlarge has a GPU
with 15 GiB (reasoning) or 23 GiB (code); standard is the rest. Disk and memory
are checked before each pull, and a model that does not fit falls back one class.
nikos_ai_model_tier names the class instead; nikos models shows it.
nikos update pulls the default and the selected modules, and first offers to remove
installed models that are not approved for this machine, one question per model. Without a terminal it
lists them and removes nothing. nikos add model <name> installs any other model, and
updates keep it.
VS Code extensions
Continue, GitHub Copilot, Leak Lock, GitLens, Python, Jupyter, the Nord theme, Remote SSH, Docker
and REST Client. Edit nikos_vscode_extensions to change the set.
The nikos command
nikos setup # run the full playbook
nikos update # move to the newest release, then re-run
nikos update --ref X # update to a specific branch or tag
nikos add <name> # install an optional bundle or model group
nikos status # version, Ollama models, installed roles
nikos doctor # check for broken configs and missing deps
nikos clean [--apply] # free disk from unused caches; never volumes
nikos log [N] # tail the latest playbook log
nikos log list # list available logs