{% extends "base.html" %} {% block title %}Role Catalog — Co-Worker Engine — ICDEV™{% endblock %} {% block content %}

Role Catalog

Loaded role templates available for Co-Worker team assembly. Definitions hot-reload from YAML every 60 s in dev.

← Teams
{{ roles | length }}
Total Roles
{{ roles | selectattr('trust_tier', 'equalto', 'green') | list | length }}
Green Trust
{{ roles | selectattr('trust_tier', 'equalto', 'yellow') | list | length }}
Yellow Trust
{{ roles | map(attribute='steps') | map('length') | sum if roles else 0 }}
Total Steps
{% if roles %}
{% for role in roles %}
{{ role.display_name }}
{{ role.role_id }} · v{{ role.version }}
{{ role.trust_tier | upper }} trust
{% if role.description %}

{{ role.description }}

{% endif %}
{% if role.llm_function %} LLM fn: {{ role.llm_function }} {% endif %} {% if role.genesis_reflex %} Reflex: {{ role.genesis_reflex }} {% endif %} Default: {{ role.default_count }} Max: {{ role.max_instances }}
{% for step in role.steps %}
{{ loop.index }} {{ step }}
{% endfor %}
{% for perm in role.tool_permissions %} {{ perm }} {% endfor %} {% if not role.tool_permissions %} none {% endif %}
{% endfor %}
{% else %}

No role templates loaded.

Add a .yaml file to args/ace/roles/ to define a role.

{% endif %}

Adding a New Role

1. Create a YAML file

args/ace/roles/<role_id>.yaml

The file name must match the role_id field. Required fields: role_id, steps, trust_tier, tool_permissions. The loader hot-reloads within 60 s with no restart needed.

# args/ace/roles/my_analyst.yaml role_id: my_analyst display_name: My Analyst description: Short description of what this role does. version: "1.0" trust_tier: yellow # yellow | green | orange | red default_count: 1 max_instances: 2 steps: - gather_data - analyze - report communication: protocol: a2a listen_topics: [task.assigned] emit_topics: [task.completed] llm_function: code_generation # see args/llm_config.yaml for valid values tool_permissions: - Read - Grep genesis_reflex: kanban

After saving the file, this page refreshes automatically within 60 s. To force an immediate reload, restart the Flask dev server or call RoleLoader().reload() programmatically.

{% endblock %}