{% extends "base.html" %} {% block title %}Settings — Waikiki{% endblock %} {% block content %}

Settings

{% if msg %}{% endif %} {% if error %}{% endif %} {# --- Capabilities ------------------------------------------------------- What this install can actually do, before you press anything. Every row that can be fixed carries a button; every row that can't says why, in words, with the setting that changes it. Doorman deliberately has neither: it is the user's own app and Waikiki never installs or starts it. #}
Capabilities (what this Waikiki can do right now) {% if pending %}

Before Waikiki does this

{{ pending.detail }}

{% if pending.host %}

This one downloads code and runs it. The installer script comes from {{ pending.host }} and runs with your account’s permissions. Waikiki verifies the signature on its own updates before running them; it cannot do that for somebody else’s installer, and it won’t pretend otherwise.

{% endif %}
Exactly what will run
{{ pending.runs }}
Cancel
{% endif %}

Waikiki never installs or starts Doorman — that row is here to say what is in play, not to switch it on.

Theme
Content (this wiki)

Renders custom HTML/CSS snippets and embeds like <video>/<iframe>. On by default — all content here is local and only editable by you and your local agent. Uncheck to escape HTML in this wiki instead.

Retention (this wiki)
AI generation (the editor's Generate button)

Local generation needs Ollama running (ollama serve) with the model pulled (ollama pull phi3).

Chat (chat with an article)

Chat shells out to a local CLI. Install the claude or gemini command and make sure it's signed in.

Images (generate an image)

claude writes the prompt, then this CLI (e.g. agy or gemini) renders a PNG into the article's own folder — images for one article share a folder so the CLI can keep them visually consistent. Use the ✨ button in the editor.

Logging (all wikis)

The access log records every request and CLI/MCP call (hour-stamped files, swept after this many hours). View it under Help → Access log.

Embedding model (RAG)

Active: {{ active_provider }} · {{ active_model }}

{% if library %} {% for m in library %} {% endfor %}
{{ m.provider }} {{ m.model }} {% if m.provider == active_provider and m.model == active_model %} active {% else %}
{% endif %}
{% endif %}

Add a model

Paste a HuggingFace slug and click Add. It downloads, becomes active, and all pages are re-embedded. Changing the vector size is handled automatically.

{% for s in catalog %}{% endfor %}
Share on your network (all wikis)
{% if share_enabled and share_lan_urls %}

Others on your network can reach it at: {% for u in share_lan_urls %}
{{ u }}{% endfor %}
Restart Waikiki after turning sharing on or off — the network port is opened at startup.

{% if bonjour_on %} 📡 Discoverable via Bonjour — it appears automatically on Macs and iPhones on this network (Safari → Bonjour bookmarks, or dns-sd -B _http._tcp), so guests don't need to type the IP address. {% elif bonjour_available %} Bonjour advertising starts with the app — restart to announce this wiki on the network. {% else %} Bonjour advertising is unavailable on this system (dns-sd not found); hand out the address above instead. {% endif %}

{% endif %}

What guests can do. Anyone who signs in with the password can read and edit pages. They cannot open Settings, manage wikis or elements, view logs, or use Chat and image generation — those run programs on this computer, so they stay with you.

Know the limits. This is a single shared password over plain HTTP, meant for a home or office network you trust — not hardened multi-user security. Anyone on the network who has the password can edit every wiki, and traffic isn't encrypted. It's off by default.

Backups (all wikis)
{% if backup_list %} {% for b in backup_list %} {% endfor %}
{{ b.when }} {{ b.wikis | length }} wiki(s) {{ (b.bytes / 1048576) | round(1) }} MB
{% else %}

No backups yet — one runs automatically, or take one now.

{% endif %}

Snapshots of every wiki, taken safely while the app is running. Images live inside each wiki's database, so a snapshot is a complete copy. They're written to {{ backup_dir }}.

To restore: quit Waikiki, then use Manage wikis → Open on a .db file from a backup folder — it opens as a separate wiki, so you can compare before replacing anything. These are local copies: they protect against corruption and mistakes, not against losing the machine. Keep a copy elsewhere too.

Doorman ({{ 'the app showing this window' if doorman.embedded else 'optional' }})
{% if not doorman.embedded %} {% endif %}
{% if doorman.embedded %}

Locked on: Waikiki is running inside Doorman’s own window, so Doorman is unmistakably here and is the host. Open Waikiki on its own to make the integration optional again.

{% endif %} {% if doorman.running %}

Detected at {{ doorman.url }}{% if doorman.version %} (version {{ doorman.version }}){% endif %}. {% if doorman.voices %}Better voices are available for Listen and “Say this word”.{% endif %} {% if doorman.ask %}Generation and chat are answered by {{ doorman.ask.agent }} in Doorman.{% endif %} {% if doorman.image %}Images are rendered by {{ doorman.image.model }} in Doorman.{% endif %}

{% if not doorman.ask or not doorman.image %}

{% if not doorman.ask %}Generation and chat{% endif %} {%- if not doorman.ask and not doorman.image %} and {% endif %} {%- if not doorman.image %}Images{% endif %} still use this machine’s own models and CLIs — this Doorman doesn’t offer that yet, which is normal and needs nothing from you.

{% endif %} {% else %}

Not running. Everything works without it — this only adds nicer speech, and hands generation, chat and images to the agents you have already set up there, when Doorman happens to be open.

{% endif %}

Doorman is a separate app. Waikiki never starts or installs it, and every feature here works without it.

Updates (version {{ update.current }}) {% if update.updatable %}
{# last_available, not last_seen: an offer only when the release is both newer and signed, so this can't propose a downgrade or an install that would fail verification. #} {% if update.last_available %}

Waikiki will back up every wiki, then quit and restart itself to finish. Save anything you're mid-way through first.

{% endif %} {% else %}

Automatic updates are unavailable for this install: {{ update.reason }}.

{% if not update.signing_key_pinned %}

This build has no update signing key pinned, so it can't verify that a download really came from you. Updating is disabled rather than trusting an unverified download — see waikiki/updater.py.

{% endif %} {% endif %}

Your wikis live outside the app bundle, so an update replaces code only and never touches your content. A backup runs first anyway: a newer version can migrate a wiki forward, but an older one can't read it back.

Style reference images (this wiki)

Images that define this wiki's art style. During image generation they're handed to the image CLI with --add-dir so it can study and match them. Folder: {{ style_refs_dir }}

{% if style_refs %}
{% for r in style_refs %}
{{ r }}
{% endfor %}
{% else %}

No reference images yet.

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