Your settings
Account
- Name
- {{ user.name }}
- {{ user.email }}
- Role
- {{ user.role }}
- Groups
- {% if user.groups %} {% for group in user.groups %}{{ group.name }} {% endfor %} {% else %} None {% endif %}
What you can do
{% if user.is_admin %} You are an administrator, so every permission applies. {% else %} From the instance baseline plus whatever your groups add. {% endif %}
-
{% for key, granted in can.items() %}
-
{{ icon("check" if granted else "x", "icon--sm") }}
{{ key }}
{% endfor %}
Default model
What a new chat starts with. Existing chats keep their model.
{% if models %} {% else %}No models are available to you yet.
{% endif %}Available to you
In the order an administrator arranged them.
-
{% for model in models %}
-
{{ model_avatar(model, cls="nav-item__avatar") }}{{ model.label }} {% if model.description %}{{ model.description }}{% endif %}{% for name, on in (model.capabilities_json or {}).items() %} {% if on %}{{ name }}{% endif %} {% endfor %} {% if model.pinned %}pinned{% endif %}
{% endfor %}
Theme
Saved to this browser and to your account, so it follows you.
{# A loop rather than two buttons, because an administrator can define more. The names come from the branding snapshot, so a theme renamed on Customization is renamed here without this template knowing there was ever a fixed pair. #}Timezone
What time a model is told it is, and the zone anything you schedule runs in. Leave it unset to follow the server.
{# A plain form posting to its own route, not the composer's pattern: this page has no htmx target to swap into and a redirect back is what stops a refresh re-submitting it. #} {% if saved == "timezone" %}Saved. It is {{ local_now }} where you are.
{% elif error == "timezone" %}That is not a timezone this server knows about.
{% else %}It is currently {{ local_now }} where you are.
{% endif %}Notifications
A reply, a filed report or a scheduled run arriving while you are looking at something else. In the page always; from the browser as well if you allow it here.
{# A button rather than a checkbox, and that is not a style choice: the browser refuses `requestPermission` unless it is called from something somebody pressed. A checkbox restored on load and acted upon would be silently declined. ui.js writes the label and the line below it, because the true state lives in the browser's own permission and not in anything rendered here. #}Checking what this browser allows…
Kept per browser, because the permission is. Nothing is shown while you are looking at the page — the toast is there for that.
Install as an app
Runs in its own window, without browser chrome. Everything still comes from your server — there is no offline mode beyond a page saying so.
{# Revealed by app.js only when the browser actually offers an install. Firefox and desktop Safari never do, and a button that does nothing is worse than no button. #}Only offered over HTTPS or on localhost, and not at all in some browsers. On iOS, use Share → Add to Home Screen.
What models remember about you {{ memories|length }}
Short facts, shown to every model you talk to on every turn — so they are few and short on purpose. Anything longer belongs in a note. Nothing here is shared with anyone else, ever.
{% if memories %}-
{% for memory in memories %}
- {% if memory.author == "model" %} remembered {% endif %} {% endfor %}
Nothing yet. A model with the memory tool adds to this when you tell it something worth keeping.
{% endif %}Add one
One fact per record, at most {{ memory_limit }} characters. Never put a password or a key here — it is sent to the model with every message.
Change password
Every other session is signed out when the password changes. You stay signed in here.