{% extends "_layout.html" %} {% set active = "dashboard" %} {% block title %}beaver-gateway · dashboard{% endblock %} {% block content %}

Agents

{% if agents %} {% for a in agents %} {% endfor %}
NameTypeModelExposed MCPs
{{ a.name }} {{ a.__class__.__name__ }} {{ a.model }} {% for em in a.expose_mcps %}{{ em.name }}{% if not loop.last %}, {% endif %}{% else %}{% endfor %}
{% else %}

No agents configured.

{% endif %}

MCP namespaces

{% if mcps %} {% for m in mcps %} {% endfor %}
NameKind
{{ m.name }} {{ m.kind }}
{% else %}

No MCP servers configured.

{% endif %}

Endpoints

{% if endpoints.agents or endpoints.mcps %}

Beaver stores only an Argon2 hash of each token, so the plaintext can't be reconstructed. Paste the value you saved at creation; if you've lost it, mint a new one. Below: pick a token to see which endpoints its scope covers, paste the secret to fill it into URL / curl, then click Copy.

{% if endpoints.agents %}

Agents — POST /v1/messages

{% for ep in endpoints.agents %} {% endfor %}
AgentModelURL
{{ ep.agent }} {{ ep.agent_type }} {{ ep.model }} {{ ep.url }}
{% elif endpoints.anthropic_base is none and agents %}

Agents are declared but no AnthropicMessagesFrontend is configured — add one to Gateway(frontends=[...]) to expose them over HTTP.

{% endif %} {% if endpoints.mcps %}

MCP — streamable HTTP

{% for ep in endpoints.mcps %} {% endfor %}
NamespaceKindURL
{{ ep.namespace }} {{ ep.kind }} {{ ep.url }}
{% elif endpoints.mcp_base is none and mcps %}

MCP servers are declared but no McpServerFrontend is configured — add one to Gateway(frontends=[...]) to expose them over HTTP.

{% endif %} {% if endpoints.markdown %}

Markdown — POST /chat

VaultDefault agentURL
{{ endpoints.markdown.vault_path }} {% if endpoints.markdown.log_all_chats %} log_all_chats · {{ endpoints.markdown.logged_subdir }}/ {% endif %} {% if endpoints.markdown.default_agent %} {{ endpoints.markdown.default_agent }} {% else %} — (request must set agent or frontmatter) {% endif %} {{ endpoints.markdown.url }}
plugin base: {{ endpoints.markdown.base }}
{% endif %} {% else %}

Nothing exposed yet — declare agents / MCPs and the matching frontends (AnthropicMessagesFrontend, McpServerFrontend) in your config.

{% endif %}

Recent activity

{% if audit %} {% for row in audit %} {% endfor %}
TimeActorKindAgentDetail
{{ row.ts | fmt_dt }} {{ row.actor }} {{ row.kind }} {{ row.agent_name or "—" }} {{ row.detail_json | fmt_detail }}

Full log →

{% else %}

Nothing logged yet.

{% endif %}
{% endblock %}