Skip to main content

Module 24: Spring Boot Client

Use the autoconfigured ACP client in a Spring Boot application. Connect to agents with just properties — no manual transport or client construction.

Prerequisites

What You’ll Learn

  • Injecting AcpSyncClient from autoconfiguration
  • Configuring the client transport via application.properties
  • Property-driven transport selection (stdio vs WebSocket)

Dependencies

Same starter as the agent side:

The Client

The autoconfigured AcpSyncClient is injected like any Spring bean:

Configuration

application.properties:
The autoconfiguration detects the stdio.command property and creates a StdioAcpClientTransport that launches the agent as a subprocess.

What the Autoconfiguration Does

  1. Detects transport properties — stdio.command triggers stdio transport; websocket.uri triggers WebSocket
  2. Creates AcpSyncClient and AcpAsyncClient — configured with timeout and client capabilities
  3. Manages shutdown — DisposableBean calls closeGracefully() on context close

Transport Selection

The autoconfiguration picks the transport based on which properties are set:
Properties SetTransport Created
spring.acp.client.transport.stdio.commandStdioAcpClientTransport
spring.acp.client.transport.websocket.uriWebSocketAcpClientTransport
spring.acp.client.transport.type=stdioExplicit stdio selection
spring.acp.client.transport.type=websocketExplicit WebSocket selection

Build & Run

Client Configuration Properties

PropertyDefaultDescription
spring.acp.client.request-timeout30sRequest timeout
spring.acp.client.transport.typeauto-detectstdio or websocket
spring.acp.client.transport.stdio.command—Command to launch agent
spring.acp.client.transport.stdio.args—Command arguments
spring.acp.client.transport.stdio.env.*—Environment variables
spring.acp.client.transport.websocket.uri—WebSocket URI
spring.acp.client.transport.websocket.connect-timeout10sConnection timeout
spring.acp.client.capabilities.read-text-filetrueAdvertise file read capability
spring.acp.client.capabilities.write-text-filetrueAdvertise file write capability
spring.acp.client.capabilities.terminalfalseAdvertise terminal capability
View on GitHub