Author, debug, and operate Kelos resources (Task, Workspace, AgentConfig, TaskSpawner) on Kubernetes. Use when working with Kelos CRDs or the kelos CLI.
Use this skill when you need to author, debug, or operate Kelos resources (Task, Workspace, AgentConfig, TaskSpawner) on a Kubernetes cluster.
Install the controller and CRDs into a Kubernetes cluster:
kelos install
Uninstall:
kelos uninstall
Initialize a local config file at ~/.kelos/config.yaml:
kelos init
Kelos defines four custom resources:
| Resource | Purpose |
|---|
| Task | A single agent run — prompt, credentials, optional workspace and config |
| Workspace | A git repository to clone for the agent |
| AgentConfig | Reusable instructions, skills, agents, MCP servers |
| TaskSpawner | Automatically creates Tasks from GitHub issues, Jira tickets, or cron |
A Task runs an AI agent with a prompt. Key fields:
spec.type (required): claude-code, codex, gemini, opencode, or cursorspec.prompt (required): The task promptspec.credentials (required): type (api-key or oauth) and secretRef.namespec.workspaceRef.name: Reference to a Workspacespec.agentConfigRef.name: Reference to an AgentConfigspec.branch: Git branch mutex — only one Task with the same branch runs at a timespec.dependsOn: Task names that must succeed firstspec.ttlSecondsAfterFinished: Auto-delete after completion (seconds)spec.model: Model overridespec.podOverrides: Resource limits, timeout, env vars, node selectorTask status phases: Pending -> Running -> Succeeded or Failed.
Tasks with unmet dependencies enter Waiting.
A Workspace defines a git repository for the agent:
spec.repo (required): Git URL (HTTPS, git://, or SSH)spec.ref: Branch, tag, or commit to checkoutspec.secretRef.name: Secret with GITHUB_TOKEN (PAT) or GitHub App credentials (appID, installationID, privateKey)spec.remotes: Additional git remotes (name must not be origin)spec.files: Files to inject into the repo before the agent starts (e.g., CLAUDE.md, skills)An AgentConfig injects reusable instructions and tools into Tasks:
spec.agentsMD: Instructions written to the agent's config (e.g., ~/.claude/CLAUDE.md). Additive — does not overwrite repo filesspec.plugins: Plugin bundles with skills and sub-agents
plugins[].name: Plugin name (directory namespace)plugins[].skills[].name / .content: Skill definitions (become SKILL.md)plugins[].agents[].name / .content: Agent definitions (become <name>.md)spec.skills: skills.sh ecosystem packages
skills[].source: Package in owner/repo formatskills[].skill: Optional specific skill namespec.mcpServers: MCP server configurations
stdio, http, and sse transport typesheadersFrom / envFrom with a secretRef for sensitive valuesA TaskSpawner auto-creates Tasks from external sources:
spec.when.githubIssues: Discover from GitHub issues (labels, state, assignee, author, commentPolicy, priority labels)spec.when.githubPullRequests: Discover from GitHub PRs (labels, state, reviewState, author, draft, commentPolicy, priority labels)spec.when.cron: Trigger on a cron schedulespec.when.jira: Discover from Jira (project, JQL filter, secret with JIRA_TOKEN)spec.when.githubIssues.commentPolicy / spec.when.githubPullRequests.commentPolicy: Comment-based workflow control with authorization
triggerComment: Command that must appear for the item to be included (e.g., "/kelos pick-up")excludeComments: Commands that exclude items; when combined with triggerComment, the most recent authorized command winsallowedUsers: Restrict comment control to specific GitHub usernamesallowedTeams: Restrict to GitHub teams in org/team-slug formatminimumPermission: Require at least this repo permission (read, triage, write, maintain, admin)spec.taskTemplate: Template for spawned Tasks (same fields as Task spec)
promptTemplate and branch support Go text/template variables: {{.ID}}, {{.Number}}, {{.Title}}, {{.Body}}, {{.URL}}, {{.Labels}}, {{.Comments}}, {{.Kind}}, {{.Time}}, {{.Schedule}}spec.pollInterval: Polling frequency (default 5m)spec.maxConcurrency: Limit concurrent running Tasksspec.maxTotalTasks: Lifetime task creation limitspec.suspend: Pause/resume without deleting# Simple task
kelos run -p "Fix the login bug" --type claude-code
# With workspace and agent config
kelos run -p "Add tests" --workspace my-ws --agent-config my-ac
# With model override and branch
kelos run -p "Refactor auth" --model opus --branch feature/auth
# Watch task progress
kelos run -p "Fix bug" -w
# Create a workspace
kelos create workspace my-ws \
--repo https://github.com/org/repo.git \
--ref main \
--secret github-token
# Create an agent config with inline skill
kelos create agentconfig my-ac \
--skill review="Review the PR for correctness and security" \
--agents-md @instructions.md
# Create an agent config with skills.sh package
kelos create agentconfig my-ac \
--skills-sh anthropics/skills:skill-creator
# Create an agent config with MCP server
kelos create agentconfig my-ac \
--mcp github='{"type":"http","url":"https://api.githubcopilot.com/mcp/"}'
# Dry-run to preview YAML
kelos create agentconfig my-ac --skill [email protected] --dry-run
# List resources
kelos get tasks
kelos get taskspawners
kelos get workspaces
# View details
kelos get task my-task -d
kelos get task my-task -o yaml
# Stream logs
kelos logs my-task -f
# Suspend / resume a spawner
kelos suspend taskspawner my-spawner
kelos resume taskspawner my-spawner
# Delete
kelos delete task my-task
Config file at ~/.kelos/config.yaml:
oauthToken: <token> # or apiKey: <key>