Ship AI teams like you ship services.
ark-operator brings AI agents into Kubernetes as first-class resources. Define your team. Deploy it. Operate it with every tool you already know.
$ kubectl apply -f research-agent.yaml
arkagent.arkonis.dev/research-agent created
$ kubectl get arkagents
NAME MODEL REPLICAS READY AGE
research-agent llama3.2 5 5 2m
$ kubectl apply -f research-team.yaml
arkteam.arkonis.dev/research-team created
$ kubectl get arkteam -n my-teams
NAME PHASE LAST RUN AGE
research-team Ready 2m
$ kubectl get arkrun -n my-teams
NAME TEAM PHASE TOKENS AGE
research-team-x4kpz research-team Running 1,204 8s
Agents running overnight with no budget cap. Prompts changed by editing a file on a server. No rollback. No visibility. No alerts.
Sound familiar?
Containers had the same problem. The answer was a new abstraction layer, not a better script.
One file. An entire AI team.
Define roles, models, and delegation in one YAML file. Each role gets an isolated queue. The operator wires everything together.
kind: ArkTeam
metadata:
name: research-team
spec:
entry: coordinator
roles:
- name: coordinator
model: llama3.2
systemPrompt: |
Break down the task and delegate to
researcher and writer as needed.
canDelegate: [researcher, writer]
- name: researcher
model: llama3.2
systemPrompt: "Research topics thoroughly."
- name: writer
model: llama3.2:1b
systemPrompt: "Write clear, concise articles."
$ kubectl apply -f research-team.yaml -n my-team
arkteam.arkonis.dev/research-team created
$ kubectl get arkteam -n my-team
NAME PHASE ENTRY AGE
research-team Ready coordinator 30s
$ kubectl get arkrun -n my-team
NAME TEAM PHASE TOKENS AGE
research-team-9vkzp research-team Succeeded 5,103 21s
First-class primitives for agents
ARKONIS extends the Kubernetes API with six new resource types.
ArkAgent
like Deployment — manages a pool of agent
replicas
▼
Manages a pool of agent instances running the same model, system prompt, and MCP tool servers. Handles scheduling, scaling, and semantic health checking.
spec:
replicas: 5
model: llama3.2
systemPrompt: |
You are a research analyst...
mcpServers:
- name: web-search
url: https://search.mcp.internal/sse
ArkService
like Service — routes tasks to available
agents
▼
Routes incoming tasks to available agent instances. Decouples task producers from the agent pool with configurable load balancing: round-robin, least-busy, or random.
spec:
selector:
arkAgent: research-agent
routing:
strategy: least-busy
ports:
- protocol: A2A
port: 8080
ArkSettings
like ConfigMap — shared prompt config
▼
Reusable prompt fragments and model settings. Reference from multiple ArkAgents to keep configuration in one place and out of application code.
spec:
temperature: "0.3"
outputFormat: structured-json
promptFragments:
persona: "Expert analyst..."
outputRules: "Always cite sources."
ArkMemory
like PVC — persistent agent memory
▼
Configures a persistent memory backend for agent instances. Agents remember context across many tasks, not just within a single conversation. Supports Redis and vector stores.
spec:
backend: vector-store
vectorStore:
provider: qdrant
endpoint: http://qdrant:6333
collection: research-memories
ArkTeam novel primitive — pipeline DAGs and autonomous agent teams ▼
The unified execution primitive. Run agents as a deterministic
DAG pipeline, an autonomous delegation team, or both. Inline
roles auto-create managed ArkAgent CRs. Each role
gets an isolated queue so tasks never bleed across team
boundaries.
spec:
entry: coordinator
roles:
- name: coordinator
model: llama3.2
systemPrompt: "Coordinate the team."
canDelegate: [researcher, writer]
- name: researcher
arkAgent: researcher-agent
- name: writer
arkAgent: writer-agent
ArkEvent
like CronJob / Ingress — event
triggers
▼
Fires team pipelines on a schedule, on inbound webhook calls, or when another team produces output. One trigger can fan-out to multiple downstream teams in parallel.
spec:
source:
type: cron
cron: "0 9 * * 1-5"
targets:
- team: daily-briefing-team
Operate with what you know
Agents are Kubernetes resources. kubectl, RBAC,
namespaces, Helm, ArgoCD — none of that changes. Promoting a new
system prompt is a pull request. You already know how to run
this.
Teams with real structure
Define who delegates to whom. A coordinator that routes to researchers and writers. Enforced at the infrastructure level, not buried in a prompt where it can be overridden or ignored.
Events and automation built in
ArkEvent fires pipelines on a cron schedule, on
inbound webhooks, or when another team produces output. Fan out
one trigger to multiple teams. No glue code required.
ark-dashboard
A real-time web UI for your cluster. Monitor agents and teams,
visualize pipeline DAGs, trigger runs, retry failed steps, and
tail agent logs — without touching kubectl.
Single Go binary, zero dependencies. Streams live state directly from the Kubernetes watch API — no polling, no refresh.
→ ark-dashboard repository$ go install github.com/arkonis-dev/ark-dashboard@latest
$ ark-dashboard --namespace my-teams
Serving on http://localhost:8080
Semantic health checks
Standard liveness probes check whether a process is running. That's not enough for agents. An agent can be running fine while consistently producing wrong output.
ARKONIS introduces semantic readiness probes that periodically send a validation prompt to the agent and verify the response. Kubernetes stops routing tasks to agents that fail the check.
livenessProbe:
type: semantic
intervalSeconds: 30
GET /healthz
Process is up
GET /readyz
Agent produces correct output
Agents are workloads.
It's time to manage them like it.
Run the quickstart locally in under a minute — no cluster, no API key. Or deploy to Kubernetes and start operating agents the same way you operate everything else.