Skip to main content
Glama
kagan-sh

Kagan - AI Orchestration Layer

by kagan-sh
README.md
<h3 align="center">
  <img src="https://raw.githubusercontent.com/kagan-sh/kagan/main/docs/public/favicon.svg" width="80" alt="Kagan" /><br />
  kagan
</h3>

<p align="center">Supervised kanban for AI coding agents inside OpenCode.</p>

<p align="center">
  <a href="https://docs.kagan.sh/">Docs</a> · <a href="https://docs.kagan.sh/quickstart/">Quickstart</a>
</p>

---

Kagan is an OpenCode plugin that turns agent work into supervised tasks on a kanban board. Each task is an OpenCode session running in an isolated git worktree, moving through **Backlog → In Progress → Review → Done** with a gate at every transition — intake before the agent runs, review before you approve, merge only on your say-so.

The agent never touches your checkout. It works on a `kagan/<slug>` branch in its own worktree, a reviewer agent files ranked findings against the original task, and nothing reaches Done until you've triaged every finding and chosen where — or whether — to merge.

## Install

You need [OpenCode](https://opencode.ai/) **1.17.13** or newer (see `engines.opencode` in
`package.json`).

Install globally so Kagan is available in every project:

```bash
opencode plugin -g @kagan-sh/kagan
```

Or add a local clone to both OpenCode config files:

```json
{
  "plugin": ["/path/to/kagan"]
}
```

Open the board with `/kagan` from the command palette, the `kagan` palette command, or `<leader>k` (the leader key defaults to `ctrl+x`).

From any regular OpenCode session, run `/kagan-task` to create board tasks conversationally — useful when planning several tickets at once without opening the board create dialog for each one.

For global npm installs, Kagan checks npm for newer stable releases and shows an available version in
the board footer. Press `u`, run `/kagan-update`, or use the command palette to review and confirm the
update; Kagan then installs the exact release and asks you to restart OpenCode. Local, file, and
development installs are never updated automatically. See
[Updating](https://docs.kagan.sh/quickstart/#updating).

Pass options by using the array-of-array form, or open `/kagan-settings` from the project — see the [configuration reference](https://docs.kagan.sh/reference/configuration/).

## Docs

Documentation is available in [`docs/`](https://docs.kagan.sh/).

## License

[MIT](LICENSE)

TDQS

C2.9/5.0

Scored across 47 tools

Disambiguation2/5

Multiple tools cover near-identical ground: run_start, run_execute, run_status, task_run, and task_wait all relate to task execution with unclear boundaries. fs_read_file, fs_write_file, fs_edit_file, bash_exec, and terminal_exec overlap heavily in file/command operations, requiring deep reading to distinguish.

Naming Consistency2/5

Naming mixes several conventions: verb_noun (task_get, insight_add, fs_read_file), verb-only (run, plan, analyze), and inconsistent grouping (run_status vs run_start vs run_execute). Some tools use nouns (terminal) while others use prefixes (fs_), creating no clear pattern.

Tool Count2/5

47 tools is excessive for a focused orchestration layer, well beyond the 3-15 sweet spot. Many tools could be consolidated (multiple run_* variants, multiple analytics_* tools, multiple fs_* tools), suggesting the surface area was not thoughtfully pruned.

Completeness4/5

Core domain coverage is quite thorough: task lifecycle (create/get/update/delete), execution (run/stop/wait), files (read/write/list), and insights (list/search/remove) are all represented. Minor gaps exist (e.g., no explicit project delete, no user management), but nothing creates a dead end.

Maintenance

ActivitySlowing
ResponsivenessUnresponsive