{% extends "base.html" %} {#- Settings → Agents: which claude a run on a card starts, how it is signed in, whether relaybay's hooks and MCP server are in the user's settings, and the owner's switch for sign-ins that are not a subscription. Expects: available, claude, claude_setting, login, login_line, layers, login_any, fix_command, limits (turns at once, MB a turn needs), config_limits (config.toml's), free_mb (None: not readable here), optional message, error. -#} {% block title %}Agents · relaybay{% endblock %} {% block crumbs %}/Settings/Agents{% endblock %} {% block content %}

Agents

{% with tab = "agents" %}{% include "_settings_tabs.html" %}{% endwith %} {% if message %}

{{ message }}

{% endif %} {% if error %}{% endif %}

Runs on cards

A card's Agent block starts your own unmodified claude on this machine, under your own sign-in, one turn at a time. relaybay never signs in for you and never reads credentials; it asks claude auth status for the sign-in method only.

{% if not available %}

Runs need a server started by relaybay serve or the program.

{% else %}
claude
{% if claude %}{{ claude }}{% else %}not found on PATH or in the usual install folders{% endif %}{% if claude_setting %} (claude_path in config.toml){% endif %}
Sign-in
{{ login_line }}{% if login and not login.logged_in %} Sign in in a terminal: {{ fix_command }}.{% endif %}
{% if layers %}
Hooks
{{ layers.hooks_detail }}{% if layers.hooks_source == "run" %} (each run adds them with --settings){% endif %}
MCP
{{ layers.mcp_detail }}{% if layers.mcp_source == "run" %} (each run adds it with --mcp-config){% endif %}
{% if layers.refusal %}
{{ layers.refusal }}
{% endif %} {% endif %}
{% endif %}

Limits

Before each turn of a run: a free slot (turns running now over all runs) and enough free memory. Otherwise the turn waits in the queue with its reason, on the card and in the Inbox, and starts by itself when a slot frees or memory recovers; Start anyway starts it past both. This machine has {% if free_mb is none %}free memory relaybay cannot read (no check is made){% else %}{{ "%.1f"|format(free_mb / 1024) }} GB free now{% endif %}.

config.toml: max_running_turns = {{ config_limits[0] }}, min_free_memory_mb = {{ config_limits[1] }}; what you save here wins over them.

Sign-in methods

By default a run starts only under a subscription sign-in. With an API key, usage is billed to the key; a third-party provider bills elsewhere.

{% endblock %}