by kelos-dev
Kelos - The Kubernetes-native framework for orchestrating autonomous AI coding agents.
# Add to your Claude Code skills
git clone https://github.com/kelos-dev/kelosKelos lets you define your development workflow as Kubernetes resources and run it continuously. Declare what triggers agents, what they do, and how they hand off — Kelos handles the rest.
Kelos develops Kelos through seven TaskSpawners run 24/7: triaging issues, planning implementations, fixing bugs, responding to PR feedback, testing DX, brainstorming improvements, and tuning their own prompts. See the full pipeline below.
Supports Claude Code, OpenAI Codex, Google Gemini, OpenCode, Cursor, and custom agent images.
Kelos orchestrates the flow from external events to autonomous execution:
You define what needs to be done, and Kelos handles the "how" — from cloning the right repo and injecting credentials to running the agent and capturing its outputs (branch names, commit SHAs, PR URLs, and token usage).
Kelos is built on four resources:
AGENTS.md, CLAUDE.md), plugins (skills and agents), and MCP servers.TaskSpawner watches external sources (e.g., GitHub Issues) and automatically creates Tasks for each discovered item.
polls new issues
TaskSpawner ─────────────▶ GitHub Issues
│ ◀─────────────
│
├──creates──▶ Task: fix-bugs-1
└──creates──▶ Task: fix-bugs-2
No comments yet. Be the first to share your thoughts!
Kelos develops itself. Seven TaskSpawners run 24/7, each handling a different part of the development lifecycle — fully autonomous.
| TaskSpawner | Trigger | Model | Description |
|---|---|---|---|
| kelos-workers | GitHub Issues (actor/kelos) | Opus | Picks up issues, creates or updates PRs, self-reviews, and ensures CI passes |
| kelos-pr-responder | GitHub Pull Requests (generated-by-kelos, changes_requested) | Opus | Re-engages on PR review feedback and updates the existing branch incrementally |
| kelos-planner | GitHub Issues (/kelos plan comment) | Opus | Investigates an issue and posts a structured implementation plan — advisory only, no code changes |
| kelos-triage | GitHub Issues (needs-actor) | Opus | Classifies issues by kind/priority, detects duplicates, and recommends an actor |
| kelos-fake-user | Cron (daily 09:00 UTC) | Sonnet | Tests DX as a new user — follows docs, tries CLI workflows, files issues for problems found |
| kelos-fake-strategist | Cron (every 12 hours) | Opus | Explores new use cases, workflow improvements, and integration opportunities |
| kelos-self-update | Cron (daily 06:00 UTC) | Opus | Reviews and tunes prompts, configs, and workflow files — the pipeline improves itself |
Here's a trimmed snippet of kelos-workers.yaml — enough to show the pattern:
apiVersion: kelos.dev/v1alpha1
kind: TaskSpawner
metadata:
name: kelos-workers
spec:
when:
githubIssues:
labels: [actor/kelos]
excludeLabels: [kelos/needs-input]
priorityLabels:
- priority/critical-urgent
- priority/important-soon
pollInterval: 1m
maxConcurrency: 3
taskTemplate:
model: opus
type: claude-code
branch: "kelos-task-{{.Number}}"
promptTemplate: |
You are a coding agent. You either
- create a PR to fix the issue
- update an existing PR to fix the issue
- comment on the issue or the PR if you cannot fix it
...
The key pattern is excludeLabels: [kelos/needs-input] — this creates a feedback loop where the agent works autonomously until it needs human input, then pauses. Removing the label re-queues the issue on the next poll.
See the full manifest at self-development/kelos-workers.yaml and the self-development/ README for setup instructions.
AI coding agents are evolving from interactive CLI tools into autonomous background workers — managed like infrastructure, not invoked like commands. Kelos provides the framework to manage this transition at scale.
dependsOn and pass results (branch names, PR URLs, token usage) between pipeline stages. Use TaskSpawner to build event-driven workers that react to GitHub issues, PRs, or schedules.kubectl, manage via the kelos CLI or declarative YAML (GitOps-ready), and integrate with ArgoCD or GitHub Actions.Get running in 5 minutes (most of the time is gathering credentials).
kind create cluster
This creates a single-node cluster and configures your kubeconfig automatically.
curl -fsSL https://raw.githubusercontent.com/kelos-dev/kelos/main/hack/install.sh | bash
go install github.com/kelos-dev/kelos/cmd/kelos@latest
kelos install
This installs the Kelos controller and CRDs into the kelos-system namespace.
Verify the installation:
kubectl get pods -n kelos-system
kubectl get crds | grep kelos.dev
Kelos also publishes a Helm chart as an OCI artifact in GHCR.
To install Kelos with Helm:
helm upgrade --install kelos oci://ghcr.io/kelos-dev/charts/kelos \
-n kelos-system \
--create-namespace \
--version <version>
This installs the controller and, by default, the Kelos CRDs.
For CRD migration, adopting existing CRDs into Helm ownership, and advanced chart usage, see the Helm chart README.
kelos init
Edit ~/.kelos/config.yaml:
oauthToken: <your-oauth-token>
workspace:
repo: https://github.com/your-org/your-repo.git
ref: main
token: <github-token> # optional, for private repos and pushing changes
Claude OAuth token (recommended for Claude Code):
Run claude setup-token locally and follow the prompts. This generates a long-lived token (valid for ~1 year). Copy the token from ~/.claude/credentials.json.
Anthropic API key (alternative for Claude Code):
Create one at console.anthropic.com. Set apiKey instead of oauthToken in your config.
Codex OAuth credentials (for OpenAI Codex):
Run codex auth login locally, then reference the auth file in your config:
oauthToken: "@~/.codex/auth.json"
type: codex
Or set apiKey with an OpenAI API