TotalBase
Settings

General

The instance itself: its address and name, appearance, the database connection, maintenance and email.

In the admin: Settings › General

Settings holds the instance's own configuration, in five groups: General, Access, Security, Data API and Features. These pages list every setting with its label, key, default and limits; the key is what the API, the MCP server and get_settings use.

How settings pages work

  • Changes are a draft until you Save, in the footer; Cancel drops them. A group is saved whole or not at all.
  • A setting that differs from its default shows Modified, with Restore default. Saving a value equal to the default removes it.
  • A setting that depends on a switch that's off is dimmed: No effect while "…" is off.
  • The Settings sidebar's search finds any setting by its label, description or key.
  • Some settings apply only after the server restarts; their page says so.

General

Settings › General › General

General holds the instance's identity, language and date formats.

Instance

SettingKeyDefault
Public URLsystem.public_urlemptyThe address people reach the instance at, such as https://ops.acme-field.example. Invitation, reset and sign-in links are built from it, never from the request's host. Empty: the TOTALBASE_PUBLIC_URL environment variable. An absolute http(s) URL, no query or fragment
Instance namesystem.instance_nameTotalBaseHow the instance names itself: beside its mark, in the browser tab and in the emails it sends. 1 to 64 characters
Logosystem.logoempty (TotalBase's mark)Your mark in the rail, the sign-in page and public pages. A public image from Files; PNG or SVG with transparency works best

Language

SettingKeyDefault
Default languagesystem.languageenEnglish or Español: the interface for users who chose none, and for pages with no user (sign-in, reset, embeds). Data is never translated

Date & time

SettingKeyDefault
Timezonesystem.timezoneemptyThe organization's time zone: dates and times are shown in it, and "this month" is counted in it. Empty: each viewer's browser time zone
Users can choose their own timezonesystem.timezone_user_choiceoffOff: everyone uses the Timezone above. Needs a Timezone set
Default date formatsystem.date_formatemptyA pattern such as dd/MM/yyyy. Empty: the browser's format
Default time formatsystem.time_formatemptySuch as HH:mm
Default date/time formatsystem.datetime_formatemptySuch as dd/MM/yyyy HH:mm

Each user can override the language and formats in My account › Preferences.

Appearance

Settings › General › Appearance

Appearance sets how the instance looks to everyone: its colors, its sign-in page and any CSS of your own. All of it is public: it reaches the browser before anyone signs in.

Preview, in the header, applies the unsaved colors and CSS to your window, without saving; Stop preview goes back.

Appearance: the Company panel sign-in page, with Acme's headline.
Appearance: the Company panel sign-in page, with Acme's headline.

Color

SettingKeyDefault
Primary colorappearance.primary_colorempty (TotalBase's blue)The accent of buttons, links and highlights, as #rrggbb. Lighter and darker shades for light and dark mode are derived from it
Neutral colorappearance.neutral_colorslateThe grays of text, borders and backgrounds: Bluish gray (slate), A hint of blue (gray), Cool, nearly pure gray (zinc), Pure gray (neutral), Warm gray (stone)

Sign-in

SettingKeyDefault
Sign-in pageappearance.login_layoutSPLITWhat surrounds the sign-in card: Default (TotalBase), Simple, Company panel or Image. Simple, Company panel and Image show your logo, with a small Powered by TotalBase
Card positionappearance.login_card_positionRIGHTLeft, center or right: where the Image layout's card sits on a wide screen
Background imageappearance.login_backgroundemptyThe Image layout's and the Company panel's background: a public image from Files, 1920 px wide or more
Headlineappearance.login_headlineemptyYour words on the sign-in page, up to 120 characters
Introappearance.login_introemptyUnder the headline, up to 300 characters

Custom CSS

SettingKeyDefault
Custom CSSappearance.custom_cssemptyCSS applied last, on every page. Up to 64 KB, no @import

The editor offers ready-made themes (Navy, Slate, Graphite, Forest, Ocean, Plum, Paper) and Examples: font size, typeface, corner radius, background and text colors, the rail's and side panel's colors, header backgrounds, the App only, sign-in pages only.

Write against the stable hooks: the --ui-* color tokens, .dark, html[data-surface] and [data-shell]. Other class names can change between versions.

If a CSS change breaks a page, open it with ?safe-css at the end of the address: it loads without your CSS, so you can fix it.

Connector

Settings › General › Connector

Connector sets how TotalBase connects to PostgreSQL, and how it follows changes you make to the schema outside it.

Connection pool

TotalBase keeps a pool of connections to PostgreSQL, shared by every request, workflow and background job. These four settings apply after the server restarts; until then the page shows the value still in use.

SettingKeyDefaultRange
Maximum connectionspool.max202-1000Keep it under PostgreSQL's max_connections, minus what other clients use
Idle timeoutpool.idle_timeout_ms30000 ms≥ 1000An unused connection is closed after this
Connection timeoutpool.connection_timeout_ms5000 ms≥ 100How long a request waits for a free connection
Maximum connection lifetimepool.max_lifetime_ms3600000 ms (1 h)≥ 0A connection is replaced after this. 0: never

Schema sync

TotalBase keeps a picture of your schema (tables, columns, constraints) read from PostgreSQL's catalog. These settings decide when it's read again.

SettingKeyDefaultRange
Watch for schema changescatalog.watch_interval_seconds15 s0-3600Checks for changes made outside TotalBase (psql, a migration tool) and syncs when it finds some. 0: off
Scheduled synccatalog.refresh_interval_minutes10 min0-1440A full re-read, as a safety net. 0: off
Sync after SQL Console runscatalog.auto_refresh_after_ddlonRe-reads after each SQL Console run. Changes made in Database › Tables always sync
Sync descriptions with COMMENT ONcatalog.track_commentsonA resource's description and its COMMENT ON fill each other

Sync resources, in Database, re-reads it at once.

Maintenance

Settings › General › Maintenance

Maintenance shows the size and vacuum state of every table, from PostgreSQL's own statistics, and runs VACUUM, ANALYZE and REINDEX without opening a SQL client. It has no settings: PostgreSQL's autovacuum does most of this on its own, and this page is for when it hasn't.

Maintenance: Acme's tables by size, vehicle_positions with many dead rows.
Maintenance: Acme's tables by size, vehicle_positions with many dead rows.

The list

Column
Tablewith Partitioned, Materialized view, or a lock for a table TotalBase's role doesn't own (Owned by …), which it can't maintain
Size
Rows, Dead rowsdead rows are left by updates and deletes until a vacuum reclaims them
Last vacuum, Last analyze

Largest first. Needs attention shows only tables with at least 1000 dead rows that are 10% or more of the table, or with rows but never analyzed. Acme's vehicle_positions, purged every night, is the usual one.

The footer shows the number of tables, the database's name and size, and the PostgreSQL version.

Running maintenance

  • Run maintenance, in the header: Vacuum tables with dead rows, Analyze tables never analyzed, Rebuild invalid indexes, each with how many tables it covers.
  • Select tables and choose Vacuum, Analyze or Reindex.
  • A table's panel has the same three actions, and Reindex per index.
Action
Vacuumreclaims dead rows and refreshes the planner's statistics
Analyzeonly refreshes the statistics
Reindexrebuilds every index, concurrently

They run in the background, without blocking the table. A batch over several tables shows its progress and can be stopped; while it runs, Maintenance shows Running in the sidebar. Each run is recorded in the audit log.

A table's panel

Clicking a table shows its last five maintenance runs and their status, its size (total, table, indexes, TOAST), its rows and every vacuum and analyze date, and each index: its size, whether it's primary, unique or invalid, how often it has been used, and its definition. An index never used since the statistics were reset is a candidate to drop.

SMTP

Settings › General › SMTP

SMTP is the mail relay TotalBase sends through: system emails such as invitations and password resets, and workflows' Send email steps. Without a host and a from address, sending fails with 409 SMTP_NOT_CONFIGURED.

SettingKeyDefault
SMTP hostsmtp.hostemptyEmpty: SMTP isn't configured
SMTP portsmtp.port5871-65535. Usually 587 (STARTTLS) or 465 (implicit TLS)
Use implicit TLSsmtp.secureoffTLS from the start, instead of STARTTLS
SMTP usernamesmtp.usernameemptyEmpty for a relay without authentication
SMTP password (secret key)smtp.password_secret_keynoneThe key of a secret holding the password: it's never stored in plain text
From addresssmtp.fromemptyThe sender of every email, such as Acme Field Services <ops@acme-field.example>

Testing

Both buttons use the saved settings: save first.

  • Test connection connects and authenticates without sending anything: Connection works or Connection failed with the server's answer.
  • Send test email sends one to the address you give (yours by default).