Skip to content

Services

This page follows a row on the Services page from its source to its button in a client window. It ends with declaring a row by hand. The badge on the page reads the healthy count against the total, 3 of 4 healthy for example.

Kinds and buttons

KindGroup on the pageWhere it comes fromThe client's button
WebWebthe Gitea module, or a declarationOpen
PortsPortsa container's published port, or a declarationConnect
AIAIthe hub's AI gatewayConfig, then Apply
FilesFilesthe Samba module, or a declarationConfig, then Mount
Remote desktopsnonea machine sharing its own desktopConnect

The Services page with its four groups

The client window with the five panels

The page has four groups; a shared desktop is listed on clients and in the machine's drawer only. A row shows whether the source is serving or not serving and whether the hub finds it reachable or unreachable. A chip reads module when a module published the row and declared when a declaration did.

Discovered entries

A module enabled on a device publishes without a declaration. The Samba module publishes each share as published by the samba module on that host. The Gitea module publishes its address, and a container publishes each host port it exposes. The hub's AI gateway publishes its endpoint. A machine publishes its desktop while sudo nagent rdp start is running on it; the entry disappears when the share stops.

Declare a service by hand

A declaration publishes something the hub does not manage: a web page, a TCP port, or an SMB share on another server.

  1. Select Declare service.
  2. Fill Name and pick the Kind: Web, Port or File.
  3. Fill Host and Port; a web kind adds a scheme and a path, and a file kind takes 445 when the port is left blank.
  4. For a file kind, type a share name, or select Scan host to list the server's shares; each listed share is published as its own row.
  5. Select Declare.

The declare service form

A host of 127.0.0.1, 0.0.0.0, ::1 or localhost means the hub itself, and each machine receives it as the address it reaches the hub on. Test probes a declared row, and Delete removes the declaration with every row it published; the machine it points at is untouched.

Each kind in the client

PanelWhat the button does
WebOpen opens the link in the default browser.
PortsConnect relays the port to 127.0.0.1 on the computer; Disconnect closes the relay.
AIConfig picks the models per tool, Apply points the tools at the gateway or restores them.
FilesConfig takes the share's login and a path or drive letter, Mount attaches it, Unmount detaches it.
Remote desktopsConnect opens the RustDesk viewer on that desktop.

The Ports panel forwarding a port

The Files panel's config form

The Files panel with the share mounted

An unreachable row is greyed in the client and reads not reachable now. Each panel has a page of its own under Client in the sidebar.

What the agent provides

The pages under Agent each enable one capability on a managed machine, and the pages that publish do so through the groups on this page:

PageWhat it does on a machine
Terminalsopens a root shell, in tabs
Filesbrowses, uploads, downloads and moves files
Sambaserves SMB shares, published under Files
Gitearuns a private git server, published under Web
Containersruns declared containers, their host ports published under Ports
ZFSbuilds pools and datasets, and shares a dataset through Samba

Neutrino · personal developer infrastructure