The Development Server is a Spring Boot-based web application that provides an interactive development environment for testing and debugging ADK agents. It runs locally on port 8080, serves a browser-based UI, and enables real-time bidirectional communication with agents via WebSocket. This server is packaged in the google-adk-dev module and is started either directly through the Spring Boot application or via the Maven plugin.
For information about the Maven plugin that launches this server, see Maven Plugin. For details about the browser UI served by this server, see Browser Development UI.
The Development Server is implemented in the google-adk-dev Maven module, which depends on the core ADK framework and Spring Boot components.
The google-adk-dev module is defined in dev/pom.xml1-183 with the following key characteristics:
| Property | Value |
|---|---|
| Artifact ID | google-adk-dev |
| Parent | google-adk-parent |
| Packaging | JAR (with Spring Boot executable repackaging) |
| Main Dependencies | Spring Boot Web, Spring Boot WebSocket, google-adk core |
Key Dependencies:
The module uses the Spring Boot Maven Plugin to create an executable JAR:
This produces two artifacts:
google-adk-dev-${version}.jar - Standard JAR for Maven dependenciesgoogle-adk-dev-${version}-exec.jar - Executable JAR with embedded TomcatSources: dev/pom.xml1-183 dev/pom.xml132-157
The Development Server serves a static browser-based UI built with Angular and Material Design. The UI files are packaged into the JAR during the build process.
The browser UI is located in the dev/browser/ directory and is packaged using a custom Maven resources configuration:
This configuration places the browser files at:
browser/ at the rootBOOT-INF/classes/browser/The browser UI entry point is dev/browser/index.html1-27 which loads:
Sources: dev/pom.xml114-129 dev/browser/index.html1-27
The Development Server is a Spring Boot application that orchestrates agent execution, manages WebSocket connections, and serves the browser UI.
Sources: dev/pom.xml47-111 dev/browser/index.html1-27
The Development Server uses WebSocket for real-time bidirectional communication between the browser UI and agent execution runtime. This enables streaming agent responses, tool invocations, and event updates.
The WebSocket endpoint is typically configured at /ws/agent and handles:
The WebSocket protocol supports multiple message types for different interaction patterns:
| Message Type | Direction | Purpose |
|---|---|---|
message | Client → Server | User input to agent |
event | Server → Client | Agent execution events |
toolCall | Server → Client | Tool invocation notification |
toolConfirmation | Client → Server | User approval for tool execution |
stateUpdate | Server → Client | Session state changes |
error | Server → Client | Error notifications |
complete | Server → Client | Conversation completion |
Sources: dev/pom.xml58-60
The Development Server can be launched via the google-adk-maven-plugin, which provides a convenient Maven goal for starting the server with project-specific agents.
The Maven plugin depends on the Development Server module and uses it to launch the Spring Boot application:
maven_plugin/pom.xml44-55 shows the plugin's dependency on google-adk-dev:
Projects can add the plugin and launch the server with a single command:
This command:
Example configuration from contrib/samples/configagent/pom.xml53-58:
Sources: maven_plugin/pom.xml1-199 contrib/samples/configagent/pom.xml1-61
The Development Server sits between the core ADK framework and developer-facing tools:
Sources: pom.xml29-41 dev/pom.xml47-52 maven_plugin/pom.xml44-55 contrib/langchain4j/pom.xml56-65
The Development Server uses Spring Boot 3.4.1 with standard Spring MVC and WebSocket configuration patterns.
The parent POM defines the Spring Boot version:
This version is imported via Spring Boot BOM at pom.xml96-101:
The Development Server runs on port 8080 by default. This is the standard Spring Boot embedded Tomcat port and can be overridden with:
server.port property in application.propertiesSERVER_PORT environment variable--server.port=9090Sources: pom.xml43-76 dev/pom.xml29-46
The Development Server includes comprehensive observability support through OpenTelemetry, enabling tracing, metrics, and logging for agent execution.
The server includes the full OpenTelemetry SDK stack:
| Dependency | Purpose |
|---|---|
opentelemetry-api | Core tracing and metrics API |
opentelemetry-sdk | SDK implementation |
opentelemetry-sdk-common | Common SDK utilities |
opentelemetry-exporter-otlp | OTLP exporter for traces/metrics |
opentelemetry-sdk-logs | Logging support |
opentelemetry-sdk-trace | Distributed tracing |
These dependencies are defined in dev/pom.xml84-106
For more details on telemetry configuration and usage, see Telemetry and Observability.
Sources: dev/pom.xml84-106 pom.xml50 pom.xml89-94
Several sample projects demonstrate how to use the Development Server for agent development.
The Hello World sample (contrib/samples/helloworld/pom.xml1-111) shows the minimal setup:
Main Class: com.example.helloworld.HelloWorldRun (contrib/samples/helloworld/pom.xml41)
The Config Agent sample (contrib/samples/configagent/pom.xml1-61) demonstrates YAML-based agent configuration:
The City-Time-Weather tutorial (tutorials/city-time-weather/pom.xml1-52) shows a complete agent with multiple tools:
Main Class: com.google.adk.tutorials.CityTimeWeather (tutorials/city-time-weather/pom.xml31)
All these samples use the Maven plugin to launch the Development Server:
Sources: contrib/samples/helloworld/pom.xml1-111 contrib/samples/configagent/pom.xml1-61 tutorials/city-time-weather/pom.xml1-52
The Development Server optionally supports Agent-to-Agent (A2A) protocol integration through a Maven profile.
The A2A profile is defined in dev/pom.xml161-181:
To run the Development Server with A2A protocol support:
This enables:
For details on A2A protocol integration, see Agent-to-Agent Communication.
Sources: dev/pom.xml160-181
The Development Server includes Apache HttpClient 5 for making HTTP requests, which is used for:
The dependency is defined at dev/pom.xml72-74:
The version is managed by the parent POM at pom.xml74:
Sources: dev/pom.xml72-74 pom.xml269-272
The Development Server includes the Eclipse Compiler for Java (ECJ) to support dynamic compilation of agent code during development.
The ECJ dependency is defined at dev/pom.xml80-82:
Dynamic compilation enables:
The ECJ version is managed in the parent POM at pom.xml62:
Sources: dev/pom.xml80-82 pom.xml249-252
The Development Server includes Graphviz for Java to generate visual representations of agent hierarchies and execution flows.
Graphviz is used to render:
The version is defined at pom.xml61:
Sources: dev/pom.xml76-78 pom.xml244-247
The Development Server module includes Spring Boot Test support for integration testing.
This provides:
@SpringBootTest annotation for full application context testingMockMvc for testing REST endpointsAdditionally, Google Truth is included for assertions at dev/pom.xml66-70
Sources: dev/pom.xml62-70
The LangChain4j integration module depends on the Development Server to provide a unified development experience for agents that bridge ADK and LangChain4j ecosystems.
contrib/langchain4j/pom.xml62-65:
This dependency allows LangChain4j-based agents to:
For details on LangChain4j integration, see LangChain4j and Spring AI Integration.
Sources: contrib/langchain4j/pom.xml50-126
The Development Server build produces two JAR artifacts:
Filename: google-adk-dev-${version}.jar
Contents:
browser/ directory with Angular UIUsage: Maven dependency for projects extending the Development Server
Filename: google-adk-dev-${version}-exec.jar
Contents:
BOOT-INF/classes/BOOT-INF/classes/browser/ with Angular UIBOOT-INF/lib/ with dependency JARsUsage: Direct execution via java -jar google-adk-dev-${version}-exec.jar
The repackaging is performed by the Spring Boot Maven Plugin configuration at dev/pom.xml132-157
Sources: dev/pom.xml113-159
Refresh this wiki
This wiki was recently refreshed. Please wait 7 days to refresh again.