Skip to content
This documentation covers the kagent 1.0 alpha. For the latest 0.x release, see the 0.x docs.

For the complete documentation index, see llms.txt. Markdown versions of all docs pages are available by appending .md to any docs URL.

Launch the UI

Page as Markdown

Open the kagent dashboard, then read the agents, conversations, and Agent Substrate capacity that it reports.

The kagent UI is a read-and-write console for everything the controller knows about: the agents you defined, the conversations the agents hold, and the Agent Substrate capacity that those conversations run on. The kagent chart installs the UI alongside the controller, so a cluster that follows Install kagent already runs a UI instance.

Before you begin

  1. Install kagent in your cluster.

  2. Confirm that the UI service exists.

    kubectl get svc -n kagent kagent-ui

    Example output:

    NAME        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
    kagent-ui   ClusterIP   10.96.174.203   <none>        8080/TCP   3m
    

Open the dashboard

The UI service is a ClusterIP by default, so it is reachable only from inside the cluster. Forward it to your machine with the kagent CLI or with kubectl. Both routes end at the same address, http://localhost:8082.

  1. Run the dashboard command to forward the service and open the dashboard in your default browser.

    kagent dashboard

    Example output:

    kagent dashboard is available at http://localhost:8082
    Press the Enter Key to stop the port-forward...
    
  2. When you are done, press Enter in the terminal to stop the port-forward.

Note

kagent dashboard opens a browser only on macOS. On Linux and Windows the command prints the kubectl port-forward command and exits, so follow the port-forward steps instead.

The dashboard opens on a summary of what the controller has loaded. A fresh installation reports no agents and no conversations, and already counts the model configuration and the Model Context ProtocolModel Context ProtocolAn open protocol for exposing tools and resources to a model. kagent reaches an MCP server through a RemoteMCPServer resource, and an AgentTemplate binds individual tools from it.Learn more (MCP) servers that the chart installed.

The kagent dashboard after a fresh installation
Figure: The kagent dashboard after a fresh installation
The kagent dashboard after a fresh installation
Figure: The kagent dashboard after a fresh installation

Explore the UI

The left menu groups the console by the resource each page reads, so the page you want follows from the resource you are asking about.

PageShows
DashboardCounts of agents, model configurations, MCP servers, and discovered tools, plus recent conversations.
AgentsEvery AgentTemplateAgentTemplateA Kubernetes custom resource defining what an agent does: its model, system prompt, tools, skills, and plugins. It runs only once a Harness accepts it.Learn more and HarnessHarnessA Kubernetes custom resource defining how an agent is allowed to run: its runtime, workload image, WorkerPool and snapshot storage, and which AgentTemplates it accepts.Learn more pairing, and the conversations held with each.
SchedulesAgents that run automatically, each execution starting a new conversation.
ModelsThe ModelConfigModelConfigA Kubernetes custom resource naming one model at one provider, along with the credentials to reach it. An AgentTemplate references one by name, and every agent compiled from that template calls the model that it names.Learn more resources that agents name, and the providers behind them.
MCP ServersConnected RemoteMCPServerRemoteMCPServerA Kubernetes custom resource pointing at a Model Context Protocol server that the cluster can reach. It is the only server kind that an AgentTemplate tool binding accepts.Learn more resources and the tools discovered from each.
PromptsPrompt libraries, which hold reusable fragments that an AgentTemplate includes in its instructions.
SubstrateWorkerPools, Actors, and Workers, read from both Kubernetes and the Agent Substrate API.

Start at the Agents page to review the agents and their backing pairs of AgentTempate and Harness resources. The page lists the derived pairs across its Agents, Templates, and Harnesses tabs.

The Agents page, listing agents, templates, and harnesses
Figure: The Agents page
The Agents page, listing agents, templates, and harnesses
Figure: The Agents page

Note

The agents list is derived, not authored. kagent builds it from the AgentTemplate and Harness resources that already exist, so an agent appears when a Harness accepts a template rather than when you create an Agent resource. kagent 1.0 has no Agent custom resource. To create the pair, see Create your first agent.

Read a conversation

Opening an agent and sending a message creates an AgentInstanceAgentInstanceA running, conversational pairing of a Harness and an AgentTemplate. Unlike the two, it is not a Kubernetes resource: kagent's gRPC API creates it and its database tracks it.Learn more, which is one conversation scheduled onto a Substrate ActorActorThe sandboxed unit of compute, provided by Agent Substrate, that runs an AgentInstance's conversation loop. Every AgentInstance is backed by one.Learn more. The conversation view shows the transcript, the tool calls the agent made along the way, and the controls that branch the conversation.

A conversation with an agent, showing a tool call and a checkpoint
Figure: A conversation with an agent
A conversation with an agent, showing a tool call and a checkpoint
Figure: A conversation with an agent

Two controls under the transcript branch the conversation rather than continue it.

  • Checkpoint pins the snapshot that the AgentInstance most recently suspended to, and records how far the transcript advanced. Agent Substrate does not collect a pinned snapshot, so the point stays available to return to. To understand how pinning works, and why a turn must be complete first, see Checkpoints.
  • Fork creates a second AgentInstance from a checkpoint, continuing from the point that the checkpoint pinned. A forkForkA second AgentInstance created from a checkpoint, continuing the conversation from the point that the checkpoint pinned. A fork inherits the checkpoint's revision, so later edits to the AgentTemplate do not change what it runs, and new turns append only to the fork, leaving the original's history untouched.Learn more inherits the checkpoint’s RevisionRevisionThe compiled, immutable output of one Harness and AgentTemplate pairing, identified by a content digest. An AgentInstance runs the revision it was created from for its whole life, so editing either resource affects only instances created afterward., so later edits to the AgentTemplate do not change what it runs, and new turns append only to the fork. For the same operation over the gRPC API, see Fork the conversation into a second agent.

Note

A checkpoint is always taken at the latest turn boundary, so the UI offers Fork on your own most recent message and not on earlier ones.

Check Agent Substrate capacity

The Substrate page shows whether there is capacity for an agent to run. It reads WorkerPools and ActorTemplates from Kubernetes, and live Actors and Worker assignments from the Agent Substrate API.

The Substrate page, showing one worker pool and an idle worker
Figure: The Substrate page
The Substrate page, showing one worker pool and an idle worker
Figure: The Substrate page

Read the page from the top tiles down.

TileMeans
Worker poolsWorkerPoolsWorkerPoolA Kubernetes custom resource declaring how many Workers to keep running and which sandbox class they use. An operator must provision one before any Harness can create AgentInstances.Learn more that an operator has provisioned. No Harness can run an agent until at least one exists.
Templates readyActorTemplatesActorTemplateThe compiled, immutable definition that the kagent controller produces from a Harness and AgentTemplate pair. Every Actor is created from one.Learn more that have compiled and are ready to be instantiated.
Actors runningLive Actors, each one an AgentInstance holding a conversation.
Workers busyWorkersWorkerA pre-started, sandboxed pod that hosts at most one Actor at a time. Actors are multiplexed across a pool of Workers over time.Learn more currently assigned to an Actor, against the total provisioned.

A fresh installation reports one worker pool, no actor templates, and no actors, because nothing has created an agent yet. The Workers table still lists the pool’s worker as idle. That idle worker confirms that capacity is provisioned and waiting for the first agent.

Note

An empty Actors table on a cluster that does have agents indicates an issue at the level of the Agent Substrate API rather than at kagent. The page reports ate-api reported no actors in this scope when it reaches the API and gets an empty answer, so check the scope selector before investigating further.

Expose the UI outside the cluster

Port-forwarding suits local access and stops when you close the terminal. For a deployment that a team reaches, change how the chart publishes the service. Add any of the following values to the helm upgrade --install kagent command from Install kagent.

LoadBalancer service

To provision a cloud load balancer for the UI, set the service type.

ui:
  service:
    type: LoadBalancer

Then read the external address from the service.

kubectl get svc -n kagent kagent-ui

OpenShift route

On OpenShift clusters kagent creates an edge-terminated Route for the UI whenever the route.openshift.io/v1 API is present. The route is enabled by default through ui.route.enabled.

The default HAProxy timeout is raised to 120 minutes, because agent conversations hold long-lived streaming connections that a shorter timeout terminates mid-reply. To change it, set the annotation.

ui:
  openshiftRoute:
    annotations:
      haproxy.router.openshift.io/timeout: 60m

To front the UI with your own ingress instead, set ui.route.enabled: false to stop kagent creating the route.

Gateway API HTTPRoute

On a cluster that runs a Kubernetes Gateway API implementation such as kgateway, Istio, or Envoy Gateway, publish the UI through an HTTPRoute.

ui:
  httpRoute:
    enabled: true
    parentRefs:
      - name: my-gateway
        namespace: gateway-system
    hostnames:
      - kagent.example.com

The parentRefs field is required when enabled is true, and it must reference a Gateway that already exists. The HTTPRoute resource also requires the Gateway API custom resource definitions (gateway.networking.k8s.io/v1) in the cluster.

Next steps