{#- The Agent block of a card: the user's own claude run on it. Expects: t (the task), view (the open or latest run, or None), form (the Start form when no run is open), running, error, choices, owner_modes, desktop_ok (relaybay can open the desktop app here), launching (that launch runs now). Refetched on live run events. -#} {%- macro hidden_csrf() -%}{%- endmacro %} {%- set base = "/p/" ~ t.project_slug ~ "/t/" ~ t.key ~ "/run" %}
{% if error %}{% endif %} {% if view %} {%- set r = view.run %}

{{ r.status }} {% if r.is_open and r.with_owner %}with the owner{% endif %} run {{ r.id }} · {{ r.model }} · {{ r.effort }} · {{ r.permission_mode }} · started by {{ r.started_by }}

{% if r.status_reason %}

{{ r.status_reason }}

{% endif %} {% if r.is_open and r.with_owner %}

With you in the Claude desktop app since : relaybay starts no turn, texts sent wait until Back to the program.

{% endif %}
Folder
{{ r.cwd }}
{% for w in view.worktrees %}
{{ w.repo_name }}
{{ w.path }} {% if w.created_by_run %}new worktree on {{ w.branch }}; copied: {{ w.copied|copy_summary }}{% if w.removed_at %} removed {% elif w.kept_reason %} kept{% if w.kept_at %} by your answer{% elif w.question_id %}, question {{ w.question_id }}{% endif %} {{ w.kept_reason }}{% endif %}{% else %}the repository itself{% endif %}
{% endfor %}
relaybay
hooks {{ "from your user settings" if r.hooks_source == "user" else "added by the run (--settings)" }}; MCP {{ "from your user settings" if r.mcp_source == "user" else "added by the run (--mcp-config)" }}
{% if r.session_name %}
Session
{{ r.session_name }}
{% endif %}
Claude session
{{ r.claude_session_id or "not known yet" }}{% if r.desktop_link %} open in the Claude desktop app{% endif %}
Tokens
{{ "{:,}".format(view.totals.tokens) }} (input {{ "{:,}".format(view.totals.input_tokens) }}, output {{ "{:,}".format(view.totals.output_tokens) }}, cache read {{ "{:,}".format(view.totals.cache_read_tokens) }}, cache write {{ "{:,}".format(view.totals.cache_write_tokens) }})
{% if view.turns %} {% for turn in view.turns %} {% if turn.report_id or turn.events %} {% endif %} {% endfor %}
#Sent byQueuedOutcomeTokensDeniedReport
{{ turn.seq }} {{ turn.sent_by }} {{ turn.state|replace("_", " ") }}{% if turn.result_subtype and turn.result_subtype != "success" %} ({{ turn.result_subtype }}){% endif %} {{ "{:,}".format(turn.tokens) }} {% if turn.denials %}{{ turn.denials }}{% if turn.denied_tools %} {{ turn.denied_tools|join(", ") }}{% endif %}{% else %}0{% endif %} {% if turn.report_id %}{% with state = turn.report_state, size = turn.report_size %}{% include "_report_badges.html" %}{% endwith %} {{ turn.report_summary }}{% else %}none{% endif %}
{#- Folded: the report and the lines load when it is opened. -#}
Report and events of turn {{ turn.seq }} ({{ turn.events }} line{{ "s" if turn.events != 1 }})

Loading…

{% endif %} {% if r.is_open %}
{% if r.status == "queued" and not r.with_owner %}
{{ hidden_csrf() }}

Starts the waiting turn past the slot limit and the memory check (journaled); a brake is released only in the banner.

{% endif %} {% if running %}
{{ hidden_csrf() }}
{% endif %} {% if r.with_owner or (r.claude_session_id and not running and r.status != "running") %} {% if view.worktrees|rejectattr("path", "equalto", r.cwd)|list %}

In the desktop app only {{ r.cwd }} is a working folder (--desktop takes no --add-dir); add the run's other folders there with /add-dir.

{% endif %} {% endif %} {% if r.with_owner %} {% if launching %}

Opening the desktop app…

{% else %} {% if r.desktop_link %}Go to the session in the desktop app{% endif %}
{{ hidden_csrf() }}

Close or leave the session in the desktop app before Back to the program: relaybay's turns and your typing there would write to one session.

{% endif %} {% elif r.claude_session_id and not running and r.status != "running" %} {% if r.desktop_link %}Go to the session in the desktop app{% endif %} {% if desktop_ok %}
{{ hidden_csrf() }}
{% elif not r.desktop_link %}

Open the session in a terminal in its folder: claude --resume {{ r.claude_session_id }}

{% endif %} {% endif %}
{{ hidden_csrf() }}
{{ hidden_csrf() }}
From the next turn on{% if running or r.status == "running" %} (changes between turns: a turn is running){% endif %}
{{ hidden_csrf() }}
{% endif %} {% endif %} {% if form %}
{{ hidden_csrf() }}

Starts your own claude on this machine under your own sign-in, one turn at a time; its hooks report to this card.

{% if form.login_line %}{% endif %} {% if form.layers %}

{{ form.layers.line }}

{% endif %} {% for why in form.refusals %}

{{ why }}

{% endfor %} {% if form.repos %} {%- set first_linked = (form.repos|selectattr("id", "in", form.task_repo_ids)|first) %}
Repositories (each one other than the working folder is passed with --add-dir) {% for repo in form.repos %} {%- set mode = form.repo_modes.get(repo.id, "self") if repo.id in form.task_repo_ids else "" %} {% endfor %}
{% if form.copy_line %}

{{ form.copy_line }}

{% endif %} {% endif %}

Allowed tools: {{ form.defaults.allowed_tools }}{% if form.defaults.chrome %} · with --chrome{% endif %} (the project's agent defaults on Stands & access).

{% endif %}