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

Agents and devices

Every app, device or bot that signed in to your memory. Each one can be limited or revoked on its own.

Bot token{{ icon("plus", 16) }}Connect agent
{% for row in rows %}{% set a = row.a %}
{{ icon('agents' if a.kind == 'bot' else 'device', 19) }}
{{ a.name }}{{ a.kind }}
{% if row.client %}Client “{{ row.client }}”{% elif a.kind == 'bot' and not a.oauth_client_id %}Bot token{% else %}Added {{ a.created_at|when('%Y-%m-%d') }}{% endif %}
{% if a.revoked_at %}revoked {{ a.revoked_at|when('%Y-%m-%d') }} {% else %}active{% endif %}
Can reach
{% if row.ceiling is none %}everythingall {% else %}{% for sid, lvl in row.ceiling|dictsort %}{{ sid }}{{ lvl }}{% else %}{{ row.summary }}{% endfor %}{% endif %}
Last used {{ a.last_used_at|ago }}{% if a.last_ip_prefix %} from {{ a.last_ip_prefix }}{% endif %}Added {{ a.created_at|when('%Y-%m-%d') }}
{% if not a.revoked_at %}
Edit name and access
{% for s, role in scopes %}{% set cur = (row.ceiling or {}).get(s.id, '') %}
{{ s.id }}{% if role != 'owner' %} shared · {{ role }}{% endif %}
{% endfor %}

{% endif %}
{% else %}
No agents yet.
{% endfor %}

Connect a new agent

Every client signs in with your email and then asks you, on a consent page, what to call it and what it may reach.

Claude Code
claude mcp add --transport http memory {{ issuer }}/mcp
Codex
codex mcp add memory --url {{ issuer }}/mcp
claude.ai, Claude apps
Settings → Connectors → Add custom connector{{ issuer }}/mcp
ChatGPT and other MCP clients
Add a remote MCP server with OAuth{{ issuer }}/mcp

To check it worked, ask the agent to call memory_scopes; its “last used” time above updates right away.

Token for a bot without OAuth

For unattended bots that can’t complete a browser sign-in. The bot can only reach the scopes you pick here.

{% for s, role in scopes %}
{{ s.id }}{% if role != 'owner' %} shared · {{ role }}{% endif %}
{% endfor %}

Needs a fresh check that it’s you.

{% endblock %}