Core concepts
The eight words AccelerUp uses in a specific way, and how they fit together.
Everything in AccelerUp is built from a small set of objects. Learn these eight and the rest of the product explains itself.
Organisation
The tenant. Every row of data in AccelerUp belongs to exactly one organisation, and every query is scoped to the caller's. Users, services, servers, alerts, dashboards, warehouse connections — all of it.
You almost never think about this, because most people belong to one. It matters in two places: API tokens are issued per organisation, and cross-organisation access is not a permission that can be granted — it does not exist.
User and role
A person who can sign in. Their role decides what they may do:
owner, admin, engineer, viewer. See
Roles and permissions — particularly the part about
which of the two stored roles is the one actually enforced.
Service
A thing that serves requests and can be up or down: an API, a website, a worker, a queue consumer. A service has a URL or a health endpoint, a check interval, an owning team, and a current status.
Services are the unit most of the product hangs off. An alert is usually about a service, an incident is usually about a service, and the dependency map is a graph of services.
Server
A machine. Servers are discovered in two ways: from a cloud/infrastructure integration, or by an agent that has been installed on them and dialled in.
A server is not a service. One server runs several services; one service runs on several servers. The two are linked so that "which servers is this service on" and "what is running on this box" are both one click.
Agent
accelerated — a small Go binary installed on a server. It dials out to
AccelerUp over a websocket (nothing needs to be open inbound), reports host
vitals, runs probes and
collectors, and — if its profile allows — accepts
commands and an interactive terminal.
The agent's profile (observe, operate, full) is set on the machine
and caps what the control plane may ask of it. The control plane cannot widen
it remotely; that is the point. See Access and grants.
Environment
Which deployment tier something belongs to: production, preprod, staging, and
whatever else you define. Environments are a first-class object
(org_environments), not a string on a page.
ResolveEnvironment is the only answer to "is this production?" anywhere
in AccelerUp. If a feature needs to know, it asks the environment model. Do
not add a per-page environment filter — extend the model.
See Environments.
Alert
A statement that a condition is currently true — "error rate on checkout is above 2%" — with a severity, a state, and a history. An alert has a fingerprint so that the same condition firing again updates the existing alert instead of creating a second one.
Alerts move through states: firing, recovering, resolved. What moves them is measurement, never the absence of one.
Incident
A human response to one or more alerts: who is handling it, a timeline of what was done, roles (commander, scribe, comms), and a post-mortem afterwards.
An alert is a machine noticing. An incident is people responding. They are separate because most alerts never become incidents, and some incidents start with a phone call rather than an alert.
Notification channel
Where a page is delivered: Slack, Telegram, email, PagerDuty, Opsgenie, Teams, SMS, voice, webhook. A channel has a kind (alerts, incidents, or both) which decides what gets routed to it.
Every delivery attempt is logged with its outcome, and failures are retried — see Notification delivery.
How they fit together
┌── Service ──┐ ┌── Server ──┐
│ check / │ │ agent │
│ health │ │ probes │
└──────┬──────┘ └─────┬───────┘
│ │
└────── reading ──────┘
│
rule evaluates
│
┌── Alert ──┐
│ fingerprint│
│ severity │
└─────┬─────┘
│
┌───────────────┴──────────────┐
│ │
notification channel Incident (optional)
(with retries) timeline, roles,
│ post-mortem
a person is toldThings that are not concepts
Worth naming, because people look for them:
- Project — there is no project object. Use environments and teams.
- Host group — servers are grouped by tag and by environment, not by a separate object.
- Dashboard folder — dashboards are flat with tags.
Where this behaviour lives: backend/internal/domain/org.go, backend/internal/domain/service.go, backend/internal/domain/environment.go. If the code and this page disagree, the code is right — please fix the page.
Part of Getting started — What AccelerUp is, the words it uses, and the first hour with it.