NuFiDocs
NuFi Team boxInstalling the box

Installing the box

One command, four questions, a banner. About 25 minutes on a blank Ubuntu machine, most of it download.

Before you start

MachineUbuntu 24.04 or macOS. On Windows, run this inside WSL2 Ubuntu — the installer stops if you try it anywhere else. WSL2 puts the box behind a NAT the same way a virtual machine does, so other devices on the office network cannot reach it without a netsh interface portproxy forward; the from-home mesh works regardless. For a box the whole office reaches on the LAN, prefer a machine running Ubuntu or macOS directly.
NetworkFor a box that stays in one place, give it a fixed address (a DHCP reservation on the router, or a static IP). The box bakes its address into its certificate at install; if a plain DHCP lease later hands it a different one, <name>.local stops matching until you re-run nufi-box announce.
DockerEngine plus Compose v2. On Ubuntu the installer offers to install Docker for you; on macOS install Docker Desktop or OrbStack first.
gitAny recent one (2.25 or newer; Ubuntu 24.04 ships 2.43). On macOS the first git command offers to install the Command Line Tools if they are missing; on Ubuntu, sudo apt-get install -y git if git --version says nothing.
MemoryOn macOS, give the Docker VM at least 12 GB (Settings → Resources → Memory). The installer warns below 11 GB and carries on. The box itself uses about 3 GB running.
DiskBudget 30 GB. Most of it is the model and the images.

A GPU is optional. Without one the box answers from the CPU, which works and is slower; a machine serving a handful of people at once wants a GPU.

Get the box

The box is three folders of one repository: deploy/box, and beside it deploy/platform/scenarios — nufi-box flows install runs the routine builder studio/build_flows.py, which imports run_box and run from the folder above it — and deploy/platform/adapters/nufi-cron, which nufi-box schedule list needs. Together they are about 1 MB. A sparse clone fetches just those:

git clone --depth 1 --filter=blob:none --sparse https://github.com/dudaji-vn/nufi-app
cd nufi-app
git sparse-checkout set deploy/box deploy/platform/scenarios/studio deploy/platform/adapters/nufi-cron
cd deploy/box

This takes a few seconds on any link. Naming scenarios/studio in the set also brings the files at the root of scenarios/ (a sparse checkout always includes a folder's parents) and leaves out scenarios/demo, twenty megabytes of videos the box never reads.

Do not download the repository as one archive instead (curl … codeload.github.com … | tar -xz): it is about 200 MB, of which the box uses 1 MB, and on an office link that is ten to twenty minutes with nothing printed — curl -s is silent while it waits, so it looks stuck.

Install

./install-box.sh --yes

--yes takes every default. Drop it to be asked instead:

QuestionDefaultWhat it decides
Box namenufiYours to choose. Becomes the office address (<name>.local), the from-home address (<name>.box.<domain>) and the name on the certificate. Lowercase letters, digits and hyphens. Two boxes on one network or one coordinator must not share a name — see On the LAN and from home
Admin emailadmin@nufi.localThe one login you use across all four products
Departmentslegal,hr,ga,strategyOne drive folder, one team and one agent per name
Inference profileollama (macOS) or ollama-docker (Linux)Where the model runs

Inference profiles

ProfileWhere the model runs
ollamaOllama already on the host (macOS default)
ollama-dockerOllama in a container the box manages (Linux default)
remoteAnother machine on your network speaking the OpenAI API
cloudA hosted provider. The only profile where text leaves the building.

ollama and ollama-docker ask which model; the default is qwen2.5:7b. remote and cloud ask for a base URL and a key.

How long it takes

Measured, not estimated:

Blank Ubuntu 24.04, 4 vCPU, 8 GB, no Docker, nothing cached25 min 40 s from the first command to the banner
A machine that already has the images and the modelabout 75 seconds

Nearly all of the difference is download. Docker Engine goes on, the installer re-runs itself inside the new docker group, and the first image starts coming down within two minutes.

The banner is the result

  NuFi box "nufi" is up.

  Chat:        https://nufi.local:3080     (also https://<box-ip>:3080)
  Agents:      https://nufi.local:3001/choose
  Console:     https://nufi.local:3001
  Admin panel: https://nufi.local:3002
  Certificate: http://nufi.local/   ← laptops trust it once

  Admin login: admin@nufi.local / <generated password>
  Drives:      <data dir>/drives/<department>  → become that department's knowledge

  Day two:     nufi-box status | logs | drive add <name> | ca-cert | doctor

Four URLs, one login, and where the folders live. Write the admin password down now — it is generated during the install and it is in .env, which is created mode 0600 and holds every other secret the box has.

If something goes wrong

./nufi-box doctor

It checks the things that actually break and says what to do about each in plain words. Re-running ./install-box.sh is safe: it keeps the answers already on disk unless you override them explicitly.