Skip to main content
DATABASE_URL is the only thing this app asks of its host. Every other setting lives in the database, which is what makes Admin → Configuration possible: every setting the instance stores, grouped into Instance, Email and Billing, with what each one does written next to the box you type it in. Change one and it takes effect on the next request. There is nothing to redeploy.

What is in there

Company logos and privacy. With logos on, each person’s browser asks twenty-icons.com for the icon, which means that service can see which companies are in their pipeline. Turn it off for an instance where that matters and everyone gets initials on a coloured tile instead. Nothing is stored or deleted either way.

How secrets behave

Secrets show masked and can only be replaced or cleared, never read back. No tool returns a raw key. Sending an empty value for a secret leaves it alone rather than clearing it — admin_delete_variable is how you clear one. Every change is one line in Admin → Log, with your name on it, values included for everything that is not a secret. A secret is recorded as having been set, never as its value.

Clearing one

Clearing a value resets it to the default the app ships with, and the button tells you what that default is before you press it. Clearing the Resend key stops every invitation email; clearing company_logos turns logos back on, because on is the default.
admin_delete_variable is the one settings call with no undo. Read admin_list_variables first to see what the default would be.

Adding your own

You can add a variable that nothing ships with. That is the escape hatch for a setting that exists before it has a form — a feature can read a key, and you can set it today rather than waiting for a screen. A key starts with a lowercase letter and continues in lowercase letters, digits and underscores, between 2 and 64 characters — anything else is refused. Variables added by hand come back marked known: false; they have no form in the app and are read by whatever feature asked for them.
Values of undeclared keys are written to the audit log in full, because the app has no way to know they are sensitive. Never put a secret in a key that is not declared as one.

By conversation

Where does the instance name live? And what is it set to?
Turn company logos off.
admin_list_variables is the whole of what a self-hosted instance stores as configuration, so it is the right first call when somebody asks where a setting lives or why the app is behaving a certain way. admin_set_variable and admin_delete_variable change and clear one. Prefer admin_set_email_config and admin_set_billing_config where they apply — they set the same values and also report whether that area now works. All 27 admin tools →