Install Kontext from a published release and run a keyless echo AgentRun without cloning the repository.

Quickstart (no clone)

Install a tagged release on an existing Kubernetes cluster, then run a keyless echo AgentRun. You need kubectl and permission to create CRDs, cluster-scoped RBAC, a Namespace, a Deployment, a Service, a NetworkPolicy, and a MutatingWebhookConfiguration. You do not need Docker, kind, or a repository clone.

Install

VERSION=v0.1.0-alpha.2
kubectl apply -f \
  "https://github.com/MFS-code/Kontext/releases/download/${VERSION}/install.yaml"
kubectl rollout status deployment/kontext-controller-manager \
  --namespace kontext-system \
  --timeout=120s

The release manifest pins the operator and trusted reporter images by digest. It installs the admission registration and webhook Service. The controller creates and rotates the namespaced TLS Secret and repairs the registration's CA bundle. See Releases for upgrade and uninstall procedures.

Run an echo AgentRun

Create a file named run.yaml:

apiVersion: kontext.dev/v1alpha1
kind: AgentRun
metadata:
  name: review
spec:
  goal: "Summarize the failure modes in this release"
  provider: echo
  model: echo-model
  runtime:
    image: ghcr.io/mfs-code/kontext-echo:v0.1.0-alpha.2
  budget:
    wallclock: 5m

Apply it and watch the workload:

kubectl apply -f run.yaml
kubectl get agentrun review -w
kubectl logs -f run-review
kubectl get agentrun review -o jsonpath='{.status.result}{"\n"}'

kubectl logs is the operational stream from the runtime container. It is not a special "reasoning" channel. .status.result is the bounded terminal summary projected onto the custom resource.

Reuse a Task template

Create a Task Agent and a sparse invocation:

apiVersion: kontext.dev/v1alpha1
kind: Agent
metadata:
  name: echo-task
spec:
  mode: Task
  goalTemplate: "Summarize ${subject}"
  provider: echo
  model: echo-model
  runtime:
    image: ghcr.io/mfs-code/kontext-echo:v0.1.0-alpha.2
---
apiVersion: kontext.dev/v1alpha1
kind: AgentRun
metadata:
  name: echo-task-release
spec:
  agentRef:
    name: echo-task
  parameters:
    subject: this release

Creating the Agent alone starts no Pod. Creating the sparse AgentRun causes admission to render the goal and copy the Agent's execution fields into one immutable, owned snapshot. Inspect the stored form with kubectl get agentrun echo-task-release -o yaml.

Run on a schedule

Save this Scheduled Agent as scheduled.yaml. It runs on the next future minute:

apiVersion: kontext.dev/v1alpha1
kind: Agent
metadata:
  name: echo-scheduled
spec:
  mode: Scheduled
  goal: Emit one deterministic echo result for this scheduled slot.
  provider: echo
  model: echo-model
  runtime:
    image: ghcr.io/mfs-code/kontext-echo:v0.1.0-alpha.2
    command: ["/entrypoint.sh"]
  schedule:
    expression: "* * * * *"
    timeZone: Etc/UTC
    concurrencyPolicy: Forbid
    startingDeadlineSeconds: 60
kubectl apply -f scheduled.yaml
kubectl get agent echo-scheduled -w
kubectl get agentruns -l kontext.dev/agent=echo-scheduled

Creating the Agent anchors scheduling at the current time, so the first run arrives on a future cron slot. The Scheduled workload guide covers suspension, history limits, overlap, and scheduler status.

Clean up this demo

kubectl delete agentrun review --ignore-not-found=true
kubectl delete agentrun echo-task-release --ignore-not-found=true
kubectl delete agent echo-task --ignore-not-found=true
kubectl delete agent echo-scheduled --ignore-not-found=true

Uninstalling the control plane is covered in Releases. Deleting the CRDs also deletes every Agent and AgentRun.

Next