---
title: "Own Agent"
id: "1720"
type: "page"
slug: "own-agent"
published_at: "2026-09-20T20:36:26+00:00"
modified_at: "2026-09-21T01:36:28+00:00"
url: "https://xedant.com/agents/multiagent/docs/own-agent"
markdown_url: "https://xedant.com/agents/multiagent/docs/own-agent.md"
excerpt: "MultiAgent can get an own agent — a personal AI assistant whose interface is built…"
---

# Own Agent

[https://xedant.com/agents/multiagent/docs/own-agent.md](https://xedant.com/agents/multiagent/docs/own-agent.md)

MultiAgent can get an **own agent** — a personal AI assistant whose interface is built right into the MultiAgent pages: you talk to it in a chat without switching between programs. At the bottom of the sidebar there is a block summarizing your active chats, the global chat panel opens from any page, and the assistant has a queue of ready-made prompts, voice input and sound notifications. Connecting it is a one-time setup: you set the agent’s address and key at startup, and everything works. There are no settings screens in the interface and no data stored on the MultiAgent side.

## Connecting the assistant

The assistant is connected with environment variables — technical startup parameters you set once in the settings file at install time. There are two independent directions, each with its own key:

- **MultiAgent → agent (outgoing)** — `AGENT_API_URL` (the agent’s address) and `AGENT_API_KEY` (the key the agent accepts from its automated clients). This pair is what turns on the chat panel and the sidebar block. The key is stored only on the MultiAgent server and never reaches the browser;
- **Agent → MultiAgent (incoming)** — `MULTIAGENT_API_KEY`: the key to the program interface `/api/agent/*`, through which the assistant itself manages MultiAgent’s servers, agents and tools.

The two directions are independent: to simply chat with the assistant, the outgoing pair “agent address + key” is enough; and the assistant can manage MultiAgent even with the chat turned off.

## Sidebar and chat panel

The assistant’s interface is embedded in every MultiAgent page. At the bottom of the permanent sidebar sits the assistant block: a summary of active chats (timer, token usage and cost — updated in real time), a warning if the connection to the agent has dropped, and the **Prompts (N)** button — how many ready-made prompts are waiting in the queue — plus a **Chats** button.

The chat panel is a bottom drawer that opens from any page. This is where you talk to the agent: model and skill pickers (color-coded), the prompts button, a microphone for voice input, the agent’s answers in real time, queue message cards (editable, pausable, cancellable), usage statistics — tokens, cost, speed — and the **“Open in new window”** button, which opens the same chat in the agent itself. The model and skill you pick are remembered and become the defaults for new chats.

Every request to the agent goes through the MultiAgent server — the browser never talks to the agent directly, so the agent key never leaves the server. Live updates are delivered over a persistent connection: the server keeps one connection to the agent and forwards events to every open browser. The connection is opened on demand and rebuilds itself after a break.

## Prompt queue

The prompt queue is a list of ready-made requests (“prompts”) the agent runs one after another. The queue belongs to the agent itself — MultiAgent only displays it: the “text + model + skill” rows are read from and saved to the agent’s settings, and nothing is stored on the MultiAgent server. Sending a row manually creates a chat with that row’s model and skill and opens it in the chat panel right away; the new chat’s title length follows the agent’s own setting — the maximum title length. The **AutoSend** settings (on/off, the maximum number of simultaneously active chats, the check interval, auto-redirect to the new chat, “Send during peak hours”, “Auto-commit before sending”, “AutoFix disabled until done”) are the agent’s settings too: its internal dispatcher runs the piled-up prompts on its own, even with the browser closed. How many prompts are waiting shows on the Prompts button in the sidebar.

The queue will not send a half-typed row: when it drains — the last row sent or deleted — **AutoSend turns itself off**. An empty queue shows a draft row, so the first prompt is written without clicking “New prompt”. The dialog footer tells you how many prompts are waiting and in what order they will go: “{count} prompt(s), bottom first”. Edits from two open tabs never overwrite each other — the rows merge line by line.

## Voice input and sounds

The panel’s input field has a microphone: speak your message and it is sent to the agent as plain text. Background chats (the ones processed while you have the panel closed or are in another chat) announce completion with a sound notification — an open chat plays none. The first time you use local recognition, short hints appear next to the microphone while it prepares — “installing ffmpeg” and “loading model”: preparation starts the moment recording begins, so the first transcription doesn’t wait for the download. Voice input and license checks work the same way as in the chats of MultiAgent’s regular agents.

## Chat labels

To sort the chat list by topic, a chat can carry a **label** — a short name with its own color and icon. Labels are managed in the “Manage chat labels” dialog, which opens from the chat list’s filter or from the label menu on a chat itself: there you can create a label, rename it, and give it a color and an icon from the shared Material Symbols set. One label per chat — a chat either has one label, showing what it is for, or none.

- **Assigning and removing** — a label is assigned by clicking its icon on the chat row, and removed from the label menu in the chat panel header. Assigning a label alone doesn’t reorder or promote the chat in the list;
- **List filter** — the chat list can show only chats with a chosen label, together with the usual text search;
- **Visible to everyone at once** — labels live on the agent itself, and every change immediately reaches all open browsers — no page reload needed. Renaming a label changes it on every chat that carries it; deleting one removes it from all chats at once.

## When the assistant is not configured or unreachable

The assistant block appears only when both `AGENT_API_URL` and `AGENT_API_KEY` are set. On load, the app checks whether the agent is reachable and behaves accordingly:

- **Not configured** — there is no “New chat” button, the panel shows “Agent not configured”, and the sidebar warns about the missing variables;
- **Configured, but the agent is unreachable** — the interface is in place, and a persistent warning strip appears above the lower part of the sidebar with the last error from calling the agent: the first successful response clears it;
- **Key not set** — any call to the agent’s program interface answers with the “Agent API not configured” error.

Sending messages and configuring the prompt queue check the product license: if it has expired or is invalid, MultiAgent answers with an error and the app opens the license renewal dialog.

## The other direction: the assistant manages MultiAgent

The assistant can manage MultiAgent itself: create servers, deploy agents and tools, watch their state. All it needs is MultiAgent’s address and key — it learns the available commands from the `/api/agent` catalog (MultiAgent publishes the list of its own capabilities) and acts like any other automated client. The operations it starts show in the same progress feed as your own.

## As a product

When MultiAgent is deployed as a product from the catalog (the `multiagent` template), the assistant connects automatically: at install time you pick the linked agent (the default is “Create new agent”), and both pairs of variables are written for you, with no manual setup — one pair into the app’s configuration, the other into the linked agent’s configuration. Details on the [Products](/agents/multiagent/docs/products)
 page.

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