{% extends "base.html" %} {% block title %}Integrations · {{ assistant }}{% endblock %} {% block main_class %}form{% endblock %} {# A connected account under its service: works, or what does not and how to fix it. #} {% macro account_row(connection, provider_id, choices_label=None, editable=False) %} {% set problems = connection.capabilities | rejectattr("ok") | list if connection.capabilities else [] %}
{{ connection.account }}
{% if connection.checked_at %}Tested {{ connection.checked_at | localtime }}{% else %}Not tested yet{% endif %}
{% if not connection.capabilities %}○ Not tested {% elif problems %}✕ {{ problems | length }} {{ "problem" if problems | length == 1 else "problems" }} {% else %}✓ Connected{% endif %} {# The account's actions in one menu, so the list stays calm: only states stand out. #}
{% if problems %} {% endif %}
{% endmacro %} {# A service's logo: its brand icon in myOrb's color, or its letters. #} {% macro logo(letters, icon=None) %} {% if icon %} {% else %}{% endif %} {% endmacro %} {# How often a service's data is fetched and how many requests it got in the last hour, as numbers in the middle of its row. #} {% macro pace(stats) %} {# Two slots in fixed places, so the numbers line up from service to service. #}
{% if stats and stats.shown %} {% if stats.every and stats.options %} {# A choice: the tile opens the paces to choose from. #} {% elif stats.every %}
{{ stats.every | replace("every ", "") }}Refreshes every
{% else %}
{% endif %}
{{ stats.requests }}{% if stats.limited %} {{ stats.limited }}× limited{% endif %}Requests · last hour
{% endif %}
{% endmacro %} {% block content %}
Settings

Integrations

{% if message %}
✓ DONE{{ message }}
{% endif %} {% if error %}{% endif %}

Connected sources

{{ logo("G", "google") }}
GoogleGmail · Calendar · YouTube
{% if not client %}myOrb connects through your own Google Cloud OAuth client. Setting it up takes about 10 minutes and is free.{% elif not connections %}The OAuth client is set up. Connect your Google account.{% else %}Email, calendar and YouTube subscriptions of your Google accounts.{% endif %}
{{ pace(google_pace if connections else none) }}
{% if not client %}○ Not set upSet up Google {% else %} {% if not connections %}○ No account{% endif %} OAuth client
{% endif %}
{% for connection in connections %}{{ account_row(connection, "google") }}{% endfor %}
{% for provider, accounts in providers %}
{{ logo(provider.logo, provider.icon) }}
{{ provider.name }}{% if accounts | length > 1 %}{{ accounts | length }} connected{% endif %}
{{ provider.summary }}
{{ pace(paces[provider.id]) }}
{% if not accounts %}○ Not connected{% endif %} {% if not accounts or provider.multiple %}{{ "+ Add " ~ provider.account_noun if accounts else "Connect" }}{% endif %}
{% for connection in accounts %}{{ account_row(connection, provider.id, provider.choices_label, editable=True) }}{% endfor %}
{% endfor %}

Features

{% for name, settings in plugin_settings %}
{{ name }}
{{ settings.summary }}
{% endfor %}
MusicWelcome screen
Built-in ambient sound, or a YouTube video, playlist or live stream.
VoiceRead aloud
{% if voice.azure %}Microsoft Azure Speech reads the brief.{% else %}The browser's own voices read the brief, or natural voices from Microsoft Azure Speech.{% endif %}
{% if voice.azure %}✓ Azure Speech{% endif %}Settings
{{ logo("AI", "anthropic") }}
ClaudeDaily brief
{% if claude %}Writes your brief every day at {{ claude.brief_time }} with {{ model_name(claude.model) }}.{% if claude_spent %} {{ claude_spent[1] }}{{ "%.2f" | format(claude_spent[0]) }} in the last 30 days.{% endif %}{% else %}Writes a short daily brief from your calendar, email and tasks, with your own Anthropic API key.{% endif %}
{% if claude %}✓ ConnectedSettings {% else %}○ Not set upConnect Claude{% endif %}
{% endblock %}