{% extends "base.html" %} {% block title %}Settings - Memorizz{% endblock %} {% block head %}{% endblock %} {% block content %} {% from '_ui.html' import page_header, empty_state, id_chip %} {% set summary = settings_summary %} {{ page_header('Settings', 'Manage provider credentials and the saved defaults that the UI, CLI and MCP server load.', 'System') }} {% if message %}
{{ message }}
{% endif %} {% if error %}
{{ error }}
{% endif %} {% for warning in config_warnings %}
{{ warning }}
{% endfor %}
Keys configured{{ summary.keys_set }}of {{ summary.keys_total }}
Active provider{{ provider_type or '—' }}
Saved default provider{{ summary.saved_backend or 'Not set' }}
Default LLM{{ summary.llm_provider or 'Not set' }}{% if summary.llm_model %}{{ summary.llm_model }}{% endif %}
Embeddings{{ summary.embedding_provider or 'Not set' }}{% if summary.embedding_model %}{{ summary.embedding_model }}{% endif %}
Sandbox{{ summary.sandbox or 'Off' }}
Browser control{{ summary.browser or 'Off' }}

How saving works

Save target
{{ env_file_path }}
Active UI memory provider
{{ provider_type }}

Leave a field blank to keep its value. Saving updates this process's environment, but does not reconnect existing agents or switch their memory provider. Reconnect through Connect; restart CLI/MCP processes to load saved defaults. No memory is migrated.

Precedence: process exports > project .env > Memorizz .env. A project setting may override this save after restart; use memorizz config set KEY --project to edit it explicitly. Keep credential files out of version control; on POSIX, saves use owner-only permissions (0600).

{% for section in settings_sections %} {% set item = summary.sections[loop.index0] %}

{{ section.title }}

{% if section.description %}

{{ section.description }}

{% endif %}
{{ item.set }} of {{ item.total }} set
{% if section.provider_checks %}
{% for check in section.provider_checks %}
{{ check.label }} {% if check.ready %} Ready {% else %} Needs setup {% endif %}

{{ check.message }}

{% endfor %}
{% endif %}
{% for field in section.fields %}
{% if field.is_set %} Set {% else %} Not set {% endif %}
{% if field.field_type == 'select' %} {% if field.env == 'MEMORIZZ_DEFAULT_LLM_MODEL' %} {% else %} {% endif %} {% elif field.field_type == 'text' %} {% elif field.field_type == 'timezone' %} {% elif field.field_type == 'checkbox' %}
{% else %} {% endif %} {% if field.hint %}

{{ field.hint|safe }}

{% endif %} {{ field.env }}
{% endfor %}
{% endfor %}
Blank fields keep their saved value.
{% set apps_view = connected_apps %}

Connected apps

Cloud apps such as Grok Bot and ChatGPT dots can use this memory. You approve each app with a pairing code, and all the apps you approve share one memory.

{{ apps_view.apps|length }} connected
{% if apps_view.error %}{% endif %}
{% if not apps_view.read_only %}{% endif %} {% for app in apps_view.apps %} {% if not apps_view.read_only %}{% endif %} {% endfor %}
AppMemory ofCanConnectedLast usedDisconnect
{{ app.app_name }} {{ app.memory_of }} {{ app.can }} {{ app.last_used }}
{{ empty_state('No apps are connected yet', 'Put your memory online, then sign in from the app with a pairing code.') }}

Pairing code

{% if apps_view.read_only %}

This UI is read-only, so apps can't be approved or disconnected here. In a terminal, memorizz mcp apps pair makes a code and memorizz mcp apps revoke disconnects an app.

{% else %}

Each code approves one app to use {{ apps_view.principal }}'s memory, or your local agents' if you choose to share it. It works once, for {{ apps_view.pairing_minutes }} minutes.

Read only: the app can look up memories but not save new ones.

Share with my local agents: the app uses the same memory as Claude Code, Codex and your other agents on this computer, in every project, including past sessions. It can change those memories too, unless it's read only.

{% endif %}

Set up

  1. Put your memory online. In a terminal, run {{ id_chip('memorizz mcp apps serve --tunnel', 40) }}, or pass --public-url https://… for a fixed address. Keep it running; it prints the server URL.
  2. Grok Bot. Connect apps → Add a custom connector → name it memorizz, type Remote HTTPS, paste the URL (leave the OAuth fields empty), and sign in with a pairing code.
  3. Grok. grok.com/connectors → New Connector → Custom → paste the URL, and sign in with a pairing code.
  4. ChatGPT dots. Plugins → + → Add custom MCP server (Developer mode) → paste the URL, choose OAuth, and sign in with a pairing code. Your dot uses your plugins.
  5. Claude. On claude.ai: Customize → Connectors → Add custom connector → paste the URL. In Claude Code: claude mcp add --transport http memorizz <URL>, then claude mcp login memorizz.

A --tunnel address changes every time it starts, so the apps must be connected again. Use --public-url with a fixed address to keep them.

{% endblock %} {% block scripts %} {% endblock %}