---
title: "Factory Home Page"
id: "1723"
type: "page"
slug: "home-page"
published_at: "2026-09-20T20:36:26+00:00"
modified_at: "2026-10-22T16:38:23+00:00"
url: "https://xedant.com/agents/multiagent/docs/home-page/"
markdown_url: "https://xedant.com/agents/multiagent/docs/home-page.md"
excerpt: "The factory home page is the single bookmark every app on the factory opens from.…"
---

# Factory Home Page

[https://xedant.com/agents/multiagent/docs/home-page/.md](https://xedant.com/agents/multiagent/docs/home-page/.md)

**The factory home page** is the single bookmark every app on the factory opens from. Instead of memorizing the address of each agent and tool, you visit one page and see their cards. It is a static board: MultiAgent builds it from its own database and uploads it to the machine, where the factory’s Nginx serves it at the root `/`. It needs no container of its own — the installed Nginx is enough — and the page keeps no state at all.

The page is **one self-contained file**: the background picture, every icon, the mark and the font are embedded into the HTML, so a copy opened from disk with the network off renders exactly like the served one. A night factory skyline covers the screen behind **flat translucent cards** that brighten while the pointer is over them, and a centered **“Agent Factory”** heading with the factory mark sits above the grid — the same mark the MultiAgent interface shows for factories. The browser-tab icon is that mark too, and the tab title stays the short “Agents” word. At the bottom the page carries a small link to the brand’s own website.

The page’s language follows the **factory’s brand** — there is no separate language selector. An English-brand factory renders English and a Russian-brand one renders Russian, whatever language the management interface itself uses; switching the brand on the factory’s General tab rebuilds the installed board in the new language on its own.

The page has no sign-in of its own. Everything is decided by the central login: when it is on, the root is gated together with the other protected apps; when it is off, the page is open. This way one account unlocks both the board and every app on it.

## The “Home page” tab

The tab sits just to the right of the Nginx tab — Nginx is installed first, otherwise there is nowhere to install the board. The tab holds the install, the apply button (a rebuild and re-upload), the page’s public address and the number of cards; there are no login and password fields — the page is static and has no sign-in of its own.

## What is on the board

The cards are what MultiAgent tracks in its own database. One card per agent, product and tool with an address, with the projects’ real logos: agents carry the Agent logo, apps the logo of their template, tools their own. When there is no logo, the card gets a small square with the first letter of the name. An app card’s caption drops the word “App”: “Analytics App” becomes “Analytics” — the card says what the app is, not that it is an app. That is only the caption on the board: the record in the interface keeps its full name.

- **Extra link icons** — the top-right corner of an agent’s or app’s card shows the icons you set on its “Links” tab: hover to see a tooltip with the link’s title;
- **The corner button row** — common actions live not as cards but as icon buttons in the top-right corner of the board, over the grid. From left to right: **“Git”** — only while Forgejo runs on the factory, leading to its public subfolder; **“QR login”** — only while central login is on; and always **“Logout”** on the far right — it ends the central-login session, signs out of every agent and product (their tokens are deleted) and returns to the board. One click ends every session on the factory at once, instead of leaving each app separately. The corner buttons do not count as apps: they are not part of the card count on the tab;
- **Same tab** — a card opens in the same tab, and the browser’s back button returns to the board.

## QR login

The **“QR login”** button opens a page with a large code, and below it the same link for copying (one click puts it on the clipboard). On a phone it is enough to point the camera at the code, or to open the link you were sent: the device signs into the central login and lands on the board right away — no password to type. The link can be copied and sent to a person: they sign in the same way, without a password.

**Each code is single-use and lives for 24 hours** — whichever happens first. One code’s death never touches the others: the factory keeps up to **ten live codes** at once, and each opening of the page shows the next one in turn — the one you just saw will not repeat. So you can hand out access to several people or devices, and one person’s sign-in does not cancel the others.

A code that has already been used or has expired says so on the page and offers a link back to the board; a fresh one is issued by the **“Login link”** button in the factory card header — every click mints a new code, and when all ten slots are taken the oldest one gives way. You can return to the board from the code page with the **“Home”** button in its corner.

The logout page is arranged the same way: it first asks for confirmation, and nothing ends until you answer. It looks like the board itself — the same background — but the buttons differ: **“Cancel”** is plain and goes back without touching anything, while **“Logout”** is red and ends the sessions.

## The board is always current

You never edit the page by hand: MultiAgent rebuilds it on every change that touches the line-up of apps — an agent or tool deployed, a record renamed, a link added, the central login turned on or off. The build also runs at the end of every Nginx apply — even when the route configuration itself did not change. That is why a missed update never stays missed: the board catches up with the current state on the next apply. The manual apply button does the same at once, when you need to catch up. Uploads are frugal: the rendered files are compared byte by byte with what the machine already holds, and only the files that actually changed are sent.

If an older home page used to run on the factory, the install cleanly removes its predecessors — the retired board container and its folder — and puts the new one in place; every step is visible in the progress feed.

## Access and priorities

The board is served at the factory’s root, and the app subfolders always take priority: an agent with the slug `settings` is served at `/settings/`, while the home page keeps working at the root. The board is just static files handed out by Nginx: if Nginx is stopped, the board goes down with it, but the app containers themselves keep running untouched.

[← Back to documentation](/agents/multiagent/docs)
