Using the console

A tour of the whole loop — enrol a machine, deploy a database, read the plan, connect to it.

This page is the path through the product once. Each step links to the page that goes deeper.

Signing in

The installer printed the address and a generated password:

Console   http://203.0.113.10:8080
Sign in   admin@localhost / <generated>

Lost it? quorumkit password on the host prints it again — until you change it, at which point it stops being in .env at all. Change it, then point a domain at the host.

That first account is the owner: the root of the installation rather than a rung on any team's ladder. Some things — outgoing mail, the ACME delegation, the control plane's own version — are only reachable by it, and an admin of every team still cannot open them.

How things are arranged

A PostgreSQL deployment named orders, on its Overview section, showing status, engine, shape and TLS.
  1. 1Where you can be — The installation and the team: machines, storage, monitoring, who has access. It follows the team picker above it.
  2. 2One deployment's own sections — Everything about this database lives here — how to connect, its data, its nodes, its backups. Destroy is at the bottom, on its own.
  3. 3Team, project, deployment — The trail is also the switcher: each segment opens a picker for its own level.
  4. 4Nothing happens without this — Plan renders the change. It is the only route to a machine, and it changes nothing by itself.
A real deployment, still a draft: created, not yet provisioned.

Two containers, and the distinction is load-bearing rather than organisational:

  • A team owns machines and people. Servers are enrolled into a team, and roles are held in a team.
  • A project owns deployments and the access to them. Projects isolate: a credential sealed for one project does not open a deployment in another.

The picker at the top of the rail switches team. Everything in the rail follows it, except Settings, which belongs to the installation and does not move.

1. Enrol a machine

Servers → Add server mints a single-use token and prints a one-liner to run as root on the new host. Nothing needs to be open to the internet on that machine — the agent dials out. See adding servers.

Once it reports in, its page shows the host's real facts: cores, memory, disks, kernel, the Docker version, which agent it is running.

Enrol at least three machines before you build anything replicated. A two-node set has no majority — with one node down the remaining one cannot tell "my peer is gone" from "I am the one cut off" — so QuorumKit refuses that shape rather than letting you build something that cannot fail safely.

2. Create a deployment

Clusters → New deployment, inside a project. The dialog asks for the engine, its version, the shape, and which machines:

EngineVersionsShapes
PostgreSQL17, 16standalone · replicated (odd number of nodes)
MySQL8.4standalone · group replication
MongoDB7, 6standalone · replica set (3+, never 2)
Standalone
one endpoint
primary

one machine

Replicated
one endpoint
primaryreplicareplica

quorum elects the primary

Both shapes publish one address. Moving from standalone to replicated changes what is behind that address, not what your application connects to.
The New deployment dialog: name, engine, topology, version, server and pooled port.
  1. 1Engine, shape, version — Three choices that decide everything else. The shapes offered are the ones that engine can actually be run in — a two-node MongoDB set is not in the list.
  2. 2Which machines — Only servers this project can reach. A replicated shape asks for one per node and spreads them across failure domains where it can.
  3. 3It says so itself — “Creates a draft. Nothing is provisioned until a plan is approved.”
  4. 4Create draft — Writes desired state and nothing else. The machines are untouched until you approve a plan.

Creating it deploys nothing. It writes a draft desired state, and the machines are untouched.

3. Read the plan

Describe→
Plan→
Approve→
Apply→
Running
←drift re-enters at Describe
Approval is the only step a person has to be present for, and drift returns to the beginning: a repair becomes desired state before it becomes a change.

A plan is not a summary — it is the change itself, rendered. The containers with their images and limits, the config files with their contents, the firewall rules, the DNS records, and everything to be destroyed, counted separately and never folded into a total.

A plan to converge a PostgreSQL deployment: fifteen changes across one server, listed individually.
  1. 1Counted, not summarised — Fifteen changes across one machine. A destroy would be counted separately here, never folded into that total.
  2. 2What each step does — create, update, destroy — per row, so the shape of the change is readable before any of the detail is.
  3. 3Down to the file — Every config file by full path, with its mode and size. Secrets appear as references, never as values — the plan is safe to read and to paste.
  4. 4The only gate — Until this is pressed, nothing has been asked of any machine.
A real plan for a standalone PostgreSQL deployment. Click to read it at full size.

If nothing differs, the plan says no changes. That is an answer, not an error.

Read plan and apply for why nothing in the product skips this — including restores, failovers and destruction.

4. Apply it

Approving runs the plan machine by machine. The console shows the phase running now with that step's own log, and ticks each one off. It can be minimised while it runs and tells you when it finishes; close the tab and it is still there when you come back, because the work belongs to the deployment rather than to your browser.

If a step fails, the run stops there. Nothing rolls forward past an error, and you are told which machine and which command. Re-planning from the resulting state produces a plan that finishes the job.

5. Connect to it

The deployment's Connect tab carries the strings to paste, one per way in, labelled for what each is for — writes, reads, per-instance. The password is revealed on request, and revealing it is audited.

For a replicated deployment the address does not name a member. It names the deployment, and it survives a failover: the primary can move without your connection string changing.

6. Browse the data

The Data tab is a SQL and document console in the browser — tables, columns, indexes, and a query editor.

It does not use the deployment's own credentials. It mints a login per person and per session, carrying exactly the databases that person may open, and drops it when the session goes idle. A viewer gets a read-only role, so the console cannot be used to write by somebody whose role does not permit it.

A brand-new MongoDB deployment has no databases until something writes to one — MongoDB creates a database on first write. The console offers the deployment's own database anyway, and typing a collection name and inserting is what brings it into being.

7. Back it up

Backups covers policy, the schedule, and restore. There is no cron expression to write: the schedule is a builder, and it means the hour you meant in the timezone you meant.

Restores are gated the same way everything else is — a restore renders a plan, including point-in-time recovery, and you approve it before anything is overwritten.

Backups can go to more than one place at once: a local repository and object storage, with the restore source chosen per restore. A deployment spread over several machines must use object storage — a local repository belongs to the machine that wrote it, and a replica cannot restore from a chain it cannot reach.

8. Watch it

Monitoring carries the metrics the control plane already collects; Alerts turns them into rules with contact points. Notifications also land in the bell in the header, and the notifications page answers "what happened" rather than only "what needs attention now".

9. Decide who reaches what

Access is per team, and grants go as narrow as a single deployment:

RoleWhat it means
viewerReads what it is granted. A viewer with no grants reaches nothing.
editorChanges desired state and approves plans.
adminThe top of a team: destructive work, and granting access.

owner is deliberately absent from that ladder — it is the root of the installation, not a rung inside a team.

10. Keep it current

Agents update themselves to match the control plane; there is nothing to do for them.

The control plane tells you when a newer release exists — Settings → Version — and installs it when you say so. See updating, including the one host-side command an installation older than that feature needs first.

On this page