{% extends "base.html" %}{% from "_icons.html" import icon %} {% block title %}Resources{% endblock %}{% block body %} {% include "_infrastructure_nav.html" %}

Resources

+ Add resource

Manage the systems and endpoints your agents can reach.

{% if rows %}
{% endif %}
{% for r in rows %} {% if group!='none' and loop.changed(resource_groups[r.id]) %}
{{ resource_groups[r.id] }}
{% endif %}
{{ icon(r.kind) }}

{{ r.name }}

{{ 'Omada' if r.config.get('adapter') == 'omada' else r.kind | upper }} · {% if r.kind == 'ssh' %}{{ r.config.user }}@{{ r.config.host }}:{{ r.config.get('port', 22) }}{% elif r.kind == 'llm' %}{{ r.config.url }} · {{ (r.config.models or []) | length }} models · ${{ '%.2f' | format((r.config.limits or {}).get('max_budget', 2.0)) }} per lease{% elif r.config.get('adapter') == 'keywright' %}Built-in inventory and topology{% else %}{{ r.config.url }}{% endif %}
{{ icon('chevron') }}
{% if resource_assets.get(r.id) %}{{ resource_assets[r.id].name }}{% endif %}{{ {'open': 'Open access', 'approval': 'Approval required', 'locked': 'Locked'}.get(r.default_mode, r.default_mode) }}{% if r.kind == 'mcp' and r.config.tools_drift %}Tools changed · review{% endif %}{% if r.kind == 'ssh' and not r.config.host_key %}Host key not pinned{% endif %}{% if r.kind == 'llm' %}Billable{% if (r.config.health or {}).get('db') != 'connected' %}Budget enforcement unavailable · no key will be minted{% endif %}{% endif %}
{% if r.description %}

{{ r.description }}

{% endif %}
{{ icon('more') }}
{% else %}
{{ icon('mcp') }}

No resources yet

Choose an integration or set up a custom connection.

+ Add resource
{% endfor %}
{% if rows %}

Showing {{ rows|length }} resource{{ '' if rows|length == 1 else 's' }}

{% endif %}
About resource access

Default open = allowed & audited, approval = ask, locked = only explicit rules. Access modes do not indicate connection health. Use “Test connection” in a resource’s menu to check connectivity.

Permission paths: ssh/<name>/exec/<command>[/<subcommand>], mcp/<name>/tools/<tool> and llm/<name>/model/<model>.

{% endblock %} {% block scripts %} {% endblock %}