Skip to content

Nova AI Assistant

Nova is Eight.ly's built-in AI that manages your server through natural language. Ask it to list containers, check storage health, create VMs, or explain system status — Nova figures out what you're really asking, goes and looks at the box's real state, and answers in plain language.

Where to find it: Sidebar > Nova

What Nova can do

Nova has 41 tools organized across six categories:

Category Example tools
Docker List containers, inspect, start/stop/restart, view logs, pull images
Storage Pool status, drive health, SMART data, SnapRAID sync status
VMs List VMs, create, start/stop, snapshots, resource usage
LXC List containers, lifecycle actions (start/stop/restart)
File Sharing List SMB shares, list NFS exports
System CPU/memory/disk usage, uptime, network interfaces, firewall rules, health overview, installed Nova models, App Store search, timezone

Example queries

Docker

  • "What containers are running?"
  • "Show me the logs for the plex container"
  • "Restart the nginx container"
  • "How much memory is Jellyfin using?"
  • "Pull the latest image for homeassistant"

Storage

  • "How much disk space is left?"
  • "Show me the SMART status for /dev/sda"
  • "Is my SnapRAID array in sync?"
  • "Which drive has the most errors?"
  • "What's the health of my storage pool?"

System

  • "What's using the most CPU right now?"
  • "Show me network interfaces and their IPs"
  • "How long has the server been up?"
  • "What's the system temperature?"
  • "Give me a health overview of the system"

VMs and LXC

  • "Create a new VM with 4 cores and 8GB RAM"
  • "List all VMs and their status"
  • "How much memory is my Ubuntu VM using?"
  • "Take a snapshot of the debian-dev VM"
  • "Show me LXC container resource usage"

Models

Nova pairs a fixed tool router with a voice you pick. The router figures out which tool to run; the voice turns the result into a natural reply. You only ever choose the voice — the router installs automatically alongside it.

The tool router (installed automatically)

Model Role
Nova Router 1.5B (Qwen 2.5-Coder 1.5B) Decides which tool to call for whatever voice you pick. Hidden internal component, auto-installed with any voice, never chosen on its own.

Before the router even runs, a fast built-in intent classifier (plain code, not a model) decides whether a query needs a tool at all. General-knowledge and conversational queries skip the router entirely and go straight to the voice.

Voices

Pick one voice. Each one installs the Nova Router 1.5B alongside it automatically.

Voice Base Notes
Nova Talker 2B Gemma 2 2B Recommended default. Tiny and fast (1.6 GB), runs on any CPU or GPU.
Nova Talker 4B Qwen 3 4B Richer answers than the 2B, still fits an ~8 GB GPU.
Nova Talker 12B Gemma 4 12B (QAT q4) Premium, far smarter replies. Experimental, GPU only — needs ~8 GB VRAM.

Model comparison

Voice Parameters Disk Usage Min RAM Best for
Nova Talker 2B 2B ~1.6 GB 4 GB The default — fast, accurate, runs anywhere
Nova Talker 4B 4B ~2.4 GB 6 GB Richer answers on modest hardware
Nova Talker 12B 12B ~7.0 GB 8 GB + ~8 GB VRAM Best quality, GPU-only (experimental)
Nova Router 1.5B 1.5B ~1.6 GB 4 GB The tool router — installed automatically, not chosen

You only install a voice

Installing any voice also pulls the Nova Router 1.5B automatically — they work in tandem behind the scenes. The Nova Talker 2B is the recommended default: it uses little RAM and runs on any CPU or GPU.

Installing models

Click the model button in the Nova header (or press Cmd+K) to download and manage models. Models download directly as GGUF files — the talkers and router come from Eight.ly's own Hugging Face account, and everything runs locally once downloaded; nothing is re-fetched per query.

  • Models are stored in /var/lib/eightly/nova/models/
  • Download progress is shown in real-time on the Models page
  • You can delete unused models to reclaim disk space
  • Only one voice can be active at a time — switching voices takes a few seconds as the new model loads into memory

Architecture

graph LR
    A[User Query] --> B[Intent Classifier - Go]
    B -->|no_tool| C[Voice - Nova Talker]
    B -->|tool/maybe| D[Nova Router 1.5B]
    D --> E[Tool Execution]
    E --> F[Result Humanization]
    F --> C
    C --> G[Response]
  1. Your query hits the intent classifier — fast built-in matching, not a model
  2. If no tool is needed, it goes straight to your chosen voice (Nova Talker)
  3. If a tool is needed, the Nova Router 1.5B selects and calls the right tool
  4. The tool result is humanized and passed to your voice for a natural response

Multi-Modal Input

Nova accepts more than text — attach images and documents to your queries.

Image attachments

Click the paperclip icon in the composer and select Image. Nova encodes the image as base64 and passes it to Ollama's vision pipeline. Useful for:

  • "What's in this screenshot?" — paste error screenshots for diagnosis
  • "Read this label" — photograph a drive label or hardware serial number

Image size limit: 12 MB.

Document attachments

Attach PDF, DOCX, RTF, TXT, Markdown, CSV, JSON, YAML, or log files. Nova extracts the text server-side and inlines it into the prompt:

  • Plain text formats (TXT, MD, CSV, JSON, YAML, LOG) are read directly, no extraction needed.
  • Primary for everything else: Apache Tika, if running as a sidecar — supports DOC, ODT, EPUB, spreadsheets, and 1,400+ formats.
  • Fallback: pdftotext and pandoc for PDF/DOCX/RTF (installed by default). Legacy .doc files need Tika — there's no local fallback for that one.

Document size limit: 50 MB. Attached files show as pills with thumbnails and a remove button.

Running Tika for full format support

For the widest document format support, deploy Apache Tika from the App Store or run it manually:

docker run -d -p 9998:9998 apache/tika:latest
Nova auto-detects Tika and routes documents through it when available.

Ephemeral mode

Click the ghost icon in the composer to enable ephemeral mode. Ephemeral chats are not saved to the server — useful for one-off questions you don't need in your history.

Export to Markdown

Click the export button on any chat to download the conversation as a Markdown file.

Chat Management

  • Chat history — open the history drawer with the sidebar button (or Cmd+/)
  • New chat — Cmd+N starts a fresh conversation
  • Model picker — Cmd+K switches between installed models
  • Close — Esc closes the current panel

Streaming responses

Nova streams responses in real-time using NDJSON. You'll see the response build word by word. Tool calls show inline activity cards with:

  • The tool being called
  • Warnings for mutating tools
  • Hover-only tok/s performance stats

Advanced Usage

Nova maintains conversation context within a session, so you can ask follow-up questions:

  • "What containers are running?" ... "Which one is using the most memory?" ... "Restart that one"
  • "Show me disk usage" ... "Which filesystem is that on?" ... "What's the SMART status for that drive?"

Nova resolves references like "that one" and "it" from the conversation history. Start a new chat (click the + icon) to reset context if Nova seems confused.

Safety

Mutating tools (actions that change state like deleting containers or modifying storage) are blocked by default. When Nova detects a destructive request, it returns UI guidance instead of executing the action — telling you where to go in the dashboard to perform the action manually.

This prevents accidental data loss from ambiguous queries while still letting Nova be useful for read-only operations and system monitoring.

Feedback

Every Nova response carries a feedback control — mark a reply helpful or not, and it's appended to nova-feedback.jsonl on the server (/var/lib/eightly/nova/feedback/). This local log is what informs future tuning of Nova's routing and voices; nothing is sent off-box.

Memory

Click Memory in the Nova header to see what Nova remembers about you — short facts it's picked up in conversation ("remember that my media VM is called plex-vm") or that you've typed in directly. Add a note, delete one, or clear everything. This is separate from chat history: memory is what Nova carries into every new conversation, not a record of past chats.

Chat history vs. the audit log

Two distinct records — don't confuse them:

  • Chat history — open the drawer with the sidebar button in the Nova header, or Cmd+/. It's your conversation record — past chats, ready to reopen or export. (Ephemeral chats are never saved here.)
  • The audit log is the system-wide audit trail — every login, container/VM change, share and storage mutation, and every tool call Nova makes, with its arguments and outcome (including a mutating call it refused to run). Find it at Settings > Security > Audit Log. This is the record to consult for "what changed and who did it."

Troubleshooting

Model won't download

  • Check that your server has internet access (ping huggingface.co from the terminal) — models download directly from Hugging Face
  • Verify you have enough free disk space for the model (see the comparison table above)
  • If behind a corporate proxy, the download may need proxy configuration

Slow responses

  • Check which voice is loaded — larger voices (Nova Talker 12B) are slower and need a GPU
  • Monitor CPU/RAM usage during queries. If the system is swapping, the model is too large for your RAM
  • The first query after a model load is always slower (cold start). Subsequent queries are faster

Tool call failures

  • Nova may select the wrong tool if your query is ambiguous. Rephrase with more specifics (e.g., "list Docker containers" instead of "list containers" if you have both Docker and LXC)
  • If a tool returns an error, Nova will show the error message. Check that the underlying service (Docker, libvirt, etc.) is running
  • Reopen the conversation from chat history to review what tool was called and what it returned