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.