Skip to content

feat: Agent harness integration — SLIM daemon client, channel discovery, and A2A bridging #1786

Description

@Tehsmash

Overview

This issue proposes a set of capabilities to make SLIM a first-class transport layer for autonomous agents. The goal is to define the components and workflow an agent needs to: discover SLIM infrastructure via the Agntcy ai-catalog/directory, join channels, exchange messages with other participants, and bridge those messages into agent-native protocols (e.g. A2A).


Motivation

Agents operating in multi-agent environments need a secure, low-latency way to:

  • Find and connect to shared communication channels
  • Receive invitations and queue messages asynchronously
  • Route messages to other agents using their preferred protocol

Right now SLIM has strong primitives (channels, sessions, SLIMRPC) but no cohesive story for how a standalone agent process bootstraps into this ecosystem and uses it as a persistent background transport.


Proposed Flow

1. Agent is configured with:
   - Address of its local SLIM node
   - Address of the Agntcy ai-catalog/directory

2. Agent starts the SLIM client daemon under a chosen identity
   (certificate / JWT / shared secret — whatever auth the node requires)

3. Agent queries ai-catalog to locate a channel-manager service

4. Agent (via daemon) sends a SLIMRPC message to the channel-manager:
   - List available channels

5. Agent picks a channel and requests an invitation

6. Channel-manager sends an invite; the daemon:
   - Accepts the session automatically, OR
   - Queues the invite for explicit acceptance
   - Notifies the agent (signal / callback / IPC event)

7. Daemon joins the channel and begins receiving messages:
   - Messages are queued locally
   - Agent is notified of new messages

8. Agent acts on messages:
   - Reads them directly from the daemon queue
   - OR pipes a sub-client (e.g. A2A CLI) to the channel to consume/produce messages
   - OR uses the channel as a transport to deliver A2A messages to a specific named participant

9. Agent can also use ai-catalog to find other individual agents and send them
   direct SLIM messages (e.g. "please request an invite to channel X")

Key Gap: SLIM Client Daemon

The most important missing piece is a SLIM client daemon — a long-lived background process that an agent can start to maintain a persistent SLIM identity and connection.

Responsibilities

Capability Description
Identity management Start with a given identity (cert/token) and maintain it across reconnects
Session handling Accept or queue incoming session invitations; notify the agent
Channel subscription Subscribe to one or more channels and buffer inbound messages
Outbound messaging Accept send requests from local clients via IPC (socket/pipe/stdin)
Sub-client bridging Expose a local endpoint that protocol adapters (A2A, HTTP, etc.) can connect to
Offline queuing Buffer messages so agents can process them at their own pace

Interface options (to be decided)

  • Unix domain socket / named pipe — allows any local process to connect as a sub-client
  • Local HTTP/gRPC endpoint — language-agnostic; easy to integrate from Python/Go/JS agents
  • stdin/stdout pipe — simplest for CLI-driven agents
  • Event callback / signal — notify parent process when a new message or invite arrives

Related Components

Channel Manager CLI

Extend (or create) a CLI that an agent can invoke to:

  • channel-manager list — list channels exposed by a discovered channel-manager
  • channel-manager invite <channel> <identity> — request or send an invite
  • channel-manager participants <channel> — list current channel members

A2A ↔ SLIM Bridge

Allow an A2A client to use a SLIM channel as its transport:

  • SLIM channel carries A2A task envelopes as payloads
  • A2A CLI can address a specific participant in a channel by their SLIM name/identity
  • Inbound A2A tasks arrive via the daemon queue and are dispatched to the agent's A2A handler

ai-catalog Integration

Standardise the catalog record schema so agents can query for:

  • Channel managers (type: slim/channel-manager, endpoint: slimrpc://...)
  • Individual agents (type: agent, slim-identity: ...)

Open Questions

  1. Daemon lifecycle — should this be a standalone binary (slim-daemon) or a sub-command of slimctl?
  2. IPC protocol — which local interface is the right default for broad language support?
  3. Invite policy — auto-accept vs. explicit; should policy be per-channel or global?
  4. Message ordering / delivery guarantees — does the queue need sequence numbers? replay?
  5. Identity portability — can an agent export/import its SLIM identity so it survives restarts?
  6. ai-catalog schema — what fields are required for SLIM-capable services?

Acceptance Criteria (initial scope)

  • slim-daemon (or slimctl daemon) binary that maintains a persistent SLIM connection
  • Daemon exposes a local IPC endpoint for message send/receive
  • Daemon accepts session invites and queues them; notifies via configurable mechanism
  • CLI commands to list channels and request invites against a channel-manager
  • Basic A2A-over-SLIM example demonstrating end-to-end agent message exchange
  • ai-catalog record schema documented for SLIM channel-manager services

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions