# Core concepts

> Workspaces, roles, X accounts and their states, the VPS agent, jobs and what each job outcome means.

Source: https://x.builera.app/docs/en/concepts
Last checked: 2026-10-25

## Workspace {#workspace}

A workspace holds X accounts, VPS machines, proxies, contacts, campaigns, settings and the team that works on them. Nothing is shared between workspaces. If you belong to several, switch with the workspace menu (**Switch to**). Switching asks first if you have unsaved changes, and drafts or selections from the old workspace don't carry over.

## Members and roles {#members-and-roles}

Invite people from **Settings → Members → Invite a member → Create invite**. The invite link is valid for 7 days, and the person must sign in with the invited email address.

| Role | What they can do |
|---|---|
| **Owner** | Everything, including deleting the workspace, inviting Owners, changing roles and removing members. |
| **Manager** | Workspace settings, VPS and proxies, saved sign-in details and X Chat passcodes, erasing contacts, managing every integration, and all day-to-day work. Can invite Managers, Operators and Viewers. |
| **Operator** | Day-to-day work: run X accounts, open Remote view, contacts, campaigns, tasks, posts and inbox replies. |
| **Viewer** | Read only. |

Anyone may create an MCP or API connection, and that connection always acts with the creator's **current** role — never more. See [Connect an AI agent](/docs/en/connect-ai-agent).

## X accounts {#x-accounts}

An X account in X-Buddy is one of your personal X accounts, running in its own Chrome on one of your VPS machines, behind its own proxy. It has three independent kinds of state:

- **Safety state** — **Healthy**, **Throttled**, **Restricted**, **Verification required**, **Locked** or **Suspended**. Only Healthy and Throttled X accounts receive work. X-Buddy only ever lowers this state on its own; raising it again needs you (see [Limits, run hours & safety](/docs/en/limits-and-safety#safety)).
- **Session** — signed in, signed out or expired. A signed-out X account is not a safety problem: sign it in again in Remote view.
- **Paused** — your own switch. A paused X account runs nothing; its waiting jobs stay queued until you resume it.

**Test mode (no proxy)** runs an X account on the VPS's own IP. It exists for testing only; don't use it for real X accounts.

**Groups** collect X accounts (up to 200 per group, names unique in the workspace) so you can target them together in tasks, playbooks, campaigns and the API. Groups don't change limits.

## Browser profile {#browser-profile}

Each X account has exactly one browser profile (its "fingerprint"): created once, stored by X-Buddy, matched to its proxy's location, never randomised and never shared with another X account. This is what keeps several X accounts on one VPS from looking like one device.

## VPS and agent {#vps-and-agent}

The **agent** is the X-Buddy program on your Windows VPS. It opens Chrome for your X accounts, does the work and reports back. It only makes outgoing HTTPS calls, so the VPS can sit behind NAT. One VPS can run several Chrome windows at once — see [VPS & agent](/docs/en/vps-and-agent).

## Jobs {#jobs}

Everything X-Buddy does on X is a **job**: follow someone, send a message, publish a post, read a profile. Jobs wait in a queue on the X-Buddy server; the agent asks for work and receives one job per X account at a time.

Before a job is handed out, one check (the **gate**) looks at everything that could stop it: the X account's safety and session, run hours, limits, proxy, VPS version and more. If something blocks it, the job is **held** — waiting, not failed — and the screen shows why. When the cause clears, the job wakes up by itself. Every reason is listed in [Troubleshooting](/docs/en/troubleshooting#held-jobs).

## Job outcomes {#job-outcomes}

| Outcome | Meaning |
|---|---|
| **Succeeded** | Done and confirmed on X. |
| **Failed** | Didn't happen. Some failures retry automatically: after about 1, 4 and 16 minutes, at most 4 attempts in total. |
| **Unknown** | X may already have done it. X-Buddy never repeats it blindly — it checks X first (see [Unknown outcomes](/docs/en/troubleshooting#unknown-outcomes)). |
| **Unverified** | X-Buddy acted but couldn't confirm the result. This is not proof that nothing happened. |
| **Needs review** | A person must decide: **Done on X**, **Retry** or **Stop**. |
| **Cancelled** | You stopped it before it ran. Cancelling a running job only asks the VPS to stop; it can still finish. Cancelling never undoes something already done on X. |

## Text and AI {#text-and-ai}

X-Buddy is an executor. Every message, reply and post it sends is word for word what you or your template wrote; template fields like a name are filled in, nothing else. There is no built-in AI that writes for you. If you want AI, connect your own agent over [MCP](/docs/en/connect-ai-agent).

## Speed data {#speed-data}

To know whether X-Buddy feels fast or slow for real people, your browser sends one small packet of measurements when you leave a page (published site only). It contains only: the metric name (time to show the main content, delay after a click, layout shift…), the number, the kind of page (for example "X account detail page", not its real address), phone or computer, connection type, language and a build id. No name, email, workspace, X account, real page address, IP address or anything you looked at.

- Each page sends at most one packet; the whole platform accepts at most 100 measurements a minute and 5,000 a day, the rest are dropped.
- Measurements are kept 14 days, then deleted automatically.
- Only platform admins with two-step sign-in can see them, and only as totals per page group (never single page loads).
- Collection can be switched off for the whole platform at any time.

## Service status {#service-status}

The public [Service status](/status) page shows only shared services: the website, the database, the newest VPS agent release and the API — never your workspace, X accounts or people.

- The page appears at once; the numbers fill in a moment later.
- A measurement is reused for up to 30 seconds. An answer up to 5 minutes old can be shown immediately with the time it was measured and the label **Updating** while a fresh measurement runs.
