§01 · Start

Create your first Agent

From an installed control plane to a running Agent: set up the model provider, declare a Tool, create the Agent, then sign in and watch the first run fire.

Before you start

  • A reachable control plane and a running Exo Operator (see Deploy & operate).
  • The exo CLI installed. You'll sign in at step 4, when the work moves from the cluster to the platform.
  • kubectl access to the cluster. Agents are authored by applying a manifest, so creating one is a cluster-side operation. Running and connecting afterwards go through the platform, no kubeconfig needed.

1. Set up the model provider

The Agent resolves its model credentials from a provider the platform holds, so configure that first. In the dashboard, go to Connect → Providers → Add provider: pick Anthropic (Claude) for the ClaudeCode runtime used here, paste the API key, and tick Set as default provider. Validate checks the key before anything is saved.

The Add Provider dialog in the Exo dashboard with Anthropic (Claude) selected
The Agent in step 3 references this entry with provider.type: claude, or omits the block to use the tenant default.

2. Create a Tool

A Tool is a managed connection (a database, SSH host, HTTP endpoint, or Kubernetes cluster). The credential lives in a Secret and never leaves the cluster. Save this as first-tool.yaml:

first-tool.yaml· yaml
1apiVersion: v1
2kind: Secret
3metadata:
4 name: analytics-pg-creds
5 namespace: adaptive
6type: Opaque
7stringData:
8 password: REPLACE_ME
9---
10apiVersion: autonomic.sh/v1alpha1
11kind: Tool
12metadata:
13 name: analytics-postgres
14 namespace: adaptive
15spec:
16 type: postgres
17 description: "Analytics Postgres read-replica"
18 tags:
19 - databases
20 - postgres
21 - readonly
22 probe: true
23 config:
24 hostname: pg-analytics.prod.internal
25 port: 5432
26 username: autonomic_ro
27 databaseName: analytics
28 sslMode: require
29 credentialsRef:
30 name: analytics-pg-creds
31 key: password

Apply it and wait for the probe to pass. Ready means the reconciler reached the database with the credentials you gave it:

terminal· bash
kubectl apply -f first-tool.yaml
kubectl -n adaptive get tools

3. Create the Agent

A minimal Agent declares a runtime, a goal, a model, the managed provider its credentials come from, and the Tool it may call. Save this as first-agent.yaml:

first-agent.yaml· yaml
1apiVersion: autonomic.sh/v1alpha1
2kind: Agent
3metadata:
4 name: hello-agent
5 namespace: adaptive
6spec:
7 runtime: ClaudeCode
8 phase: Paused
9 goal:
10 inline: |
11 Connect to the analytics database and report the 5 most recent signups.
12 model:
13 name: claude-opus-4-7
14 provider: anthropic
15 provider:
16 type: claude
17 bootstrap:
18 skills:
19 - analytics-postgres

Apply it with kubectl:

terminal· bash
kubectl apply -f first-agent.yaml
kubectl -n adaptive get agent hello-agent

4. Log in to the platform

Everything so far went through kubectl. Running the agent goes through the platform, so this is where you sign in. Already signed in from Getting started? Skip ahead.

On managed service the endpoint defaults to https://exo.adaptive.live, so just run exo login — no --endpoint needed:

terminal· bash
exo login
exo whoami

To point the CLI at your own control plane, pass --endpoint:

terminal· bash
exo login --endpoint https://exo.example.com
exo whoami

5. Start the first session

List your agents to confirm it's there, then fire a session and drop into it to watch and interact with it:

terminal· bash
exo agent list
exo agent connect production/adaptive/hello-agent

Next steps