{% extends "base.html" %} {% block title %}Settings & checks — Video to LLM{% endblock %} {% block content %} {# Defaults rather than hard dependencies. Jinja loads templates from disk on every request while route code lives in the running process's memory, so an upgraded checkout served by a server started before the upgrade renders a new template against an old context. Depending on a variable the old route never passed turns that into a 500 on a screen the user is trying to reach. `settings` is passed by every route, in every version, so it is the safe fallback for the form's current values. #} {% set draft = draft | default(settings, true) %} {% set problems = problems | default([], true) %} {% set health = health | default(none, true) %} {% set saved = saved | default(false, true) %} {% set root_blocker = root_blocker | default("", true) %} {% set running_port = running_port | default(settings.port, true) %}
How this computer is set up, and what is working.
| {{ check.title }} | {{ check.detail }} |
Saved. New jobs will use these settings.
Off unless you turn it on. A job without descriptions still produces pictures and a transcript, and you can add descriptions later without redoing anything.
{% if health %}| Is anything answering on this computer? | {{ "Yes" if health.reachable else "No" }} |
| Version | {{ health.runtime_version }} |
| Is the model installed? | {{ "Found" if health.model_available else "Not installed" }} |
| Can it read pictures? | {{ health.vision_status_label }} |
{{ health.detail }}
{% if health.remediation %}{{ health.remediation }}
{% endif %}
{% if health.advisory %}
{{ health.advisory }}
{% endif %}Only the numbered still pictures are sent — never your video and never its audio. You see what will be sent and roughly what it costs before anything leaves this computer, and sending stops at your cap.
{# The order matters and is not guessable: Check reads the *stored* key, so a key that has been typed but not saved gets a refusal that reads like a bad key. Saying the sequence once, here, is cheaper than explaining it in each row's error. #}Save a key first. Then press Check, and that service will be asked which models it offers — the Model box fills with real names to choose from. You can also type a model name yourself if you already know it.
{# Say what is true here, not both possibilities. Enumerating them made a reader on a Mac — where the Keychain is always available — conclude they would be retyping keys every session. The "session only" half is real, but only on a machine with no secure store: a headless Linux box, a container, an SSH session with no keyring daemon. #} {% if secure_store %} Keys are kept in this computer's secure store and stay there until you remove them. They are never written to a file, never shown back, and never included in any output or collection. {% else %} This computer has no secure store available, so a key can only be read from the environment and lasts for this session. To keep one, set the service's environment variable before starting. Keys are never written to a file, never shown back, and never included in any output or collection. {% endif %}
Runs on your processor. Nothing is sent anywhere, and the original timeline is always preserved — silences are marked rather than removed.
What a new collection starts with. Every one of these can still be changed on the collection itself.
Jobs here run for hours while you do something else. All of this happens on this computer — there is no push service, no email, and nothing is sent anywhere.
Two things are always on and need no permission: the tab title shows a count when something finishes, and any job that finished while you were away is listed at the top of the screen until you dismiss it.
Sensible defaults already. Worth changing only if something is going wrong, or if you know why you want to.