One machine, no login
A laptop, one person, nothing to sign in to. The whole product in two processes.
The wizard does this for you. This page is what it does, for when you would rather do it yourself.
This is the standalone install: one machine, one person, no accounts anywhere. It is two processes and about five minutes.
The engine
nils --registry ~/nils/registry key add nils # passphrase on stdin
nils --registry ~/nils/registry init --key nils
nils serve --auth off --bind 127.0.0.1:8437 \
--registry ~/nils/registry --pack-dir ~/nils/packs
The desk
# ~/nils/desk/nils-desk.toml
bind = "127.0.0.1:7200"
origin = "http://127.0.0.1:7200"
mode = "off"
store = "nils-desk.sqlite"
[engine]
url = "http://127.0.0.1:8437"
cd ~/nils/desk && nils-desk serve --config nils-desk.toml
Open http://127.0.0.1:7200. There is no login: you are the local person, hold every grant and see everything in records. A fresh install opens on Get started, the steps that make it ready for real work.
Reaching it from another machine on the same network
Sometimes you want the desk on the laptop but the browser on a tablet. Bind it wider and name the address it will be reached at:
bind = "0.0.0.0:7200"
origin = "http://192.168.1.20:7200"
also_origins = ["http://127.0.0.1:7200"]
In
offmode there is no login, so anyone on that network who finds the port has the whole registry. Do this only on a network you trust, and put it back to127.0.0.1afterwards. If more than one person needs it, uselocalmode instead: it is barely more work and it asks for a password.
Keeping them running
Two user services, as in the engine’s page; the desk’s is the same shape:
# ~/.config/systemd/user/nils-desk.service
[Unit]
Description=NILS desk
After=nils-engine.service
[Service]
ExecStart=/usr/local/bin/nils-desk serve --config %h/nils/desk/nils-desk.toml
WorkingDirectory=%h/nils/desk
Restart=on-failure
[Install]
WantedBy=default.target
Updated 16 October 2026