kage
Original:🇺🇸 English
Translated
Autonomous AI Project Agent & Cron Task Runner. Orchestrates repetitive AI-driven engineering tasks with state persistence (Memory) and advanced workflow controls.
2installs
Sourceigtm/kage
Added on
NPX Install
npx skill4agent add igtm/kage kageTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →kage - Autonomous AI Project Agent
kageCore Features
- Autonomous Workflow: Decomposes tasks into Markdown checklists and tracks progress via Memory.
- Execution Modes: (default),
continuous(run once and deactivate),once(stop when AI signals completion).autostop - Hybrid Task Types: AI-driven prompts (Markdown body) or direct shell commands (front matter).
command - Concurrency Control: ,
allow(skip if running),forbid(kill old and restart).replace - Time Windows: or
allowed_hours: "9-17".denied_hours: "12" - State Persistence: .
.kage/memory/{task}/{date}.json - Connectors: Integrate with Discord/Slack/Telegram for task notifications (always on) and optional bi-directional chat ().
poll = true - Layered Config: >
.kage/config.local.toml>.kage/config.toml> defaults.~/.kage/config.toml
CLI
- — Setup global directories and
kage onboard.kage cron - — Initialize in current directory.
kage init - — Execute a specific task immediately.
kage run <task> - — Compile a prompt task into a sibling
kage compile <task>override..lock.sh - — Execute the scheduler loop once (used by cron/launchd).
kage cron run - — List execution runs in a relative-time table; add
kage runsfor detailed timestamps.--absolute-time - — Inspect run metadata and log paths.
kage runs show <exec_id> - — Stop a running execution.
kage runs stop <exec_id> - — Open raw logs for the latest run of a task, or merge all task logs when omitted.
kage logs [<task>] - — Open raw logs for a specific run.
kage logs --run <exec_id> - — List tasks with short project names, effective type, and provider/command.
kage task list - — Detailed task configuration, including the current prompt hash.
kage task show <name> - — List all configured connectors.
kage connector list - — Show setup guide for a connector (discord, slack, telegram).
kage connector setup <type> - — Manually trigger polling for all connectors.
kage connector poll - — Diagnose config and environment.
kage doctor - — Run pending install-time migrations manually.
kage migrate install - — Open web dashboard.
kage ui - — Open the Textual terminal dashboard with logs, tasks, connectors, and settings tabs.
kage tui
Shell completion covers positional task/run arguments as well, so , , , , , , and can all suggest concrete values after . reports whether those completion scripts are installed.
kage run <task>kage compile <task>kage logs [<task>]kage task run <name>kage task show <name>kage runs show <exec_id>kage stop <exec_id>kage completion install bash|zshkage doctorIf a prompt task has a sibling compiled lock like , kage executes that lock instead of the Markdown prompt body only while the stored still matches the current prompt body. If the prompt body changes, the lock becomes stale and must be regenerated with . , , and the UI all surface whether the lock is fresh, stale, or missing, and prints the current prompt hash.
.kage/tasks/nightly.lock.shprompt_hashkage compile <task>kage doctorkage task listkage task show <name>In , prompt tasks render as or , stale compiled locks are highlighted, the project column uses only the leaf directory name, and inherited providers show up explicitly as values like . The built-in command template runs by default.
kage task listPromptPrompt (Compiled)gemini (Inherited)codexcodex exec --yolo ...Connector poll replies are recorded as normal runs. Use to find them and to inspect raw AI CLI output.
kage runs --source connector_pollkage logs --run <exec_id>Install-time migrations are discovered automatically from . New migration modules added there are picked up by both and .
src/kage/migrations/install/kage migrate installinstall.shkage tuiTask File Template (.kage/tasks/*.md
)
.kage/tasks/*.mdmarkdown
---
name: <Task Name>
cron: "<cron expression>"
provider: <provider name> # e.g. codex, claude, gemini, opencode, copilot, aider
mode: continuous # continuous | once | autostop
concurrency_policy: allow # allow | forbid | replace
timeout_minutes: 60 # minutes (optional)
working_dir: ../../workspace # optional; relative to this task file, or absolute path
timezone: "Asia/Tokyo" # e.g. "UTC", "Asia/Tokyo" (optional)
allowed_hours: "9-17" # e.g. "9-17,21" (optional)
denied_hours: "0-5" # e.g. "0-5,12" (optional)
notify_connectors: ["discord"] # list of connector names (optional)
active: true
---
# Task: <Title>
<Describe what the AI agent should do here.>Shell-Command Task Variant
markdown
---
name: <Task Name>
cron: "<cron expression>"
command: "<shell command>"
shell: bash
working_dir: ../../workspace
---Connectors
Connectors integrate with external chat services. Sending (task notifications via ) is always enabled as long as credentials are configured. Polling (bi-directional chat) is controlled by the flag.
notify_connectorspolltoml
[connectors.my_discord]
type = "discord"
poll = false # Set to true to enable bi-directional chat
working_dir = "~/my-project" # Optional: execution directory for this connector
bot_token = "..."
channel_id = "..."⚠️ Security Warning: Settingallows anyone in the channel to interact with the AI, which has full access to your PC's file system and tools. Only enable polling in private/trusted channels.poll = true
Configuration Hierarchy
- (Git-ignored overrides)
.kage/config.local.toml - (Project-shared)
.kage/config.toml - (User-global)
~/.kage/config.toml - Library Defaults
- Background Loop: Runs via (cron/launchd).
kage cron install