Runtime
Ollama (Vulkan)
Local LLM server on the RX 9070 XT via Vulkan (RADV). User-space install — no ROCm. Updated 2026-07-26.
Overview
| Item | Status |
|---|---|
| Binary | ~/.local/bin/ollama → ~/.local/lib/ollama/bin/ollama (v0.32.4) |
| Backend | Vulkan (libggml-vulkan.so), not ROCm/CUDA |
| GPU | AMD Radeon RX 9070 XT (RADV GFX1201), ~15.9 GiB VRAM |
| API | http://127.0.0.1:11434 (OpenAI-compatible at /v1) |
| Service | User unit ollama.service (enabled) |
| Default context | OLLAMA_CONTEXT_LENGTH=32768 |
Vulkan was chosen over ROCm for RDNA4: Mesa RADV already works, the Vulkan runner is small, and official Ollama ROCm packaging is optional here.
Models
| Tag | Size | Notes |
|---|---|---|
qwen3:8b |
~5.2 GB | Default for the ai CLI helper (fast one-shot bash commands). |
qwen3-coder:30b |
~18 GB | Qwen3-Coder-30B-A3B-Instruct (MoE, ~3.3B active). Smoke-tested ~43 tok/s; 49/49 layers on Vulkan. |
qwen3:30b-thinking |
~18 GB | Qwen3-30B thinking variant for interactive chat / heavier prompts. |
Models live under ~/.ollama/models.
How to use
# Chat
ollama run qwen3:8b
ollama run qwen3-coder:30b
ollama run qwen3:30b-thinking
# OpenAI-compatible endpoint (Cline / Continue / etc.)
# base URL: http://127.0.0.1:11434/v1
# model: qwen3-coder:30b
# Service
systemctl --user status ollama
systemctl --user restart ollama
journalctl --user -u ollama -f
ai CLI
Turns a natural-language question into an Omarchy bash command via local Ollama, shows it for confirmation, then runs it in your interactive shell. Requires the ai() function from ~/.bashrc (source ~/.bashrc or a new terminal after editing).
| Item | Value |
|---|---|
| Command | ai "…" — bash function in ~/.bashrc wrapping ~/scripts/ai.py |
| Model | qwen3:8b (hardcoded in the script) |
| API | http://127.0.0.1:11434/api/generate |
| History | Wrapper does history -s then eval; ↑ recalls the generated command (the ai "…" line sits one entry below) |
ai "Find the file test.txt in this directory structure"
# grey thinking (if any), then:
#
# <command>
#
# Run this command? [y/N]
The prompt asks for a paste-ready Omarchy bash command only. Thinking (API thinking field and/or <think> bodies) streams in light grey without tags; it is stripped before confirm/run. Markdown fences are stripped too. Blank line before and after the command. Anything other than y/yes skips. Needs systemctl --user start ollama if the service is down.
UI goes to /dev/tty so the bash wrapper can capture the accepted command on stdout. Calling ~/scripts/ai.py (or ~/.local/bin/ai) directly on a TTY still works, but runs via a subprocess and does not update shell history — use the bash function for that.
Recreate
- Download and extract Ollama into
~/.local/lib/ollama(includeslib/ollama/vulkan/libggml-vulkan.so):mkdir -p ~/.local/lib/ollama ~/.local/bin curl -fL https://github.com/ollama/ollama/releases/download/v0.32.4/ollama-linux-amd64.tar.zst \ | zstd -d | tar -x -C ~/.local/lib/ollama ln -sfn ~/.local/lib/ollama/bin/ollama ~/.local/bin/ollama - Install the user unit at
~/.config/systemd/user/ollama.service(see File index), then:systemctl --user daemon-reload systemctl --user enable --now ollama - Pull models:
ollama pull qwen3:8b,ollama pull qwen3-coder:30b, and optionallyollama pull qwen3:30b-thinking - Install the helper script and bash wrapper:
Thenchmod +x ~/scripts/ai.py # optional fallback (no history): ln -sfn ~/scripts/ai.py ~/.local/bin/ai # in ~/.bashrc (interactive section): ai() { local cmd status cmd="$(~/scripts/ai.py "$@")" status=$? (( status == 0 )) || return "$status" [[ -n $cmd ]] || return 0 history -s "$cmd" eval "$cmd" }source ~/.bashrc(or open a new terminal). - Confirm Vulkan: look for
library=Vulkanand the 9070 XT injournalctl --user -u ollama.
Do not install the ROCm addon unless you deliberately switch backends. Arch packages ollama + ollama-vulkan are an alternative system install path (needs sudo).
File index
| Path | Role |
|---|---|
~/.local/bin/ollama | Launcher symlink |
~/.local/lib/ollama/ | Binary + CUDA/CPU/Vulkan libs |
~/.config/systemd/user/ollama.service | User service (OLLAMA_VULKAN=1, ctx 32k) |
~/.ollama/ | Models and cache |
~/scripts/ai.py | Backend: Ollama qwen3:8b; UI on /dev/tty; prints accepted command on stdout when captured |
~/.bashrc (ai()) | Interactive wrapper: capture → history -s → eval |
~/.local/bin/ai | Optional symlink → ~/scripts/ai.py (direct TTY use; no shell history) |