An open API service indexing awesome lists of open source software.

https://github.com/lduchosal/kenboard

Self-hosted kanban bridging humans and AI coding agents (Claude Code, GPT): humans create and close tasks, agents claim them and move todo → doing → review via the 'ken' CLI. Per-project scoped API keys, OIDC, REST + CLI.
https://github.com/lduchosal/kenboard

Last synced: about 1 month ago
JSON representation

Self-hosted kanban bridging humans and AI coding agents (Claude Code, GPT): humans create and close tasks, agents claim them and move todo → doing → review via the 'ken' CLI. Per-project scoped API keys, OIDC, REST + CLI.

Awesome Lists containing this project

README

          

# KENBOARD

> **A kanban for BOTs.**

kenboard logo

[![PyPI version](https://img.shields.io/pypi/v/kenboard.svg)](https://pypi.org/project/kenboard/)
[![Python versions](https://img.shields.io/pypi/pyversions/kenboard.svg)](https://pypi.org/project/kenboard/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Build](https://github.com/lduchosal/kenboard/actions/workflows/python-package.yml/badge.svg)](https://github.com/lduchosal/kenboard/actions/workflows/python-package.yml)
[![Publish](https://github.com/lduchosal/kenboard/actions/workflows/publish.yml/badge.svg)](https://github.com/lduchosal/kenboard/actions/workflows/publish.yml)
[![codecov](https://codecov.io/gh/lduchosal/kenboard/branch/main/graph/badge.svg)](https://codecov.io/gh/lduchosal/kenboard)
[![Docstring coverage](./interrogate_badge.svg)](./interrogate_badge.svg)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=lduchosal_kenboard&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=lduchosal_kenboard)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=lduchosal_kenboard&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=lduchosal_kenboard)
[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=lduchosal_kenboard&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=lduchosal_kenboard)
[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=lduchosal_kenboard&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=lduchosal_kenboard)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=lduchosal_kenboard&metric=bugs)](https://sonarcloud.io/summary/new_code?id=lduchosal_kenboard)
[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=lduchosal_kenboard&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=lduchosal_kenboard)
[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=lduchosal_kenboard&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=lduchosal_kenboard)
[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=lduchosal_kenboard&metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=lduchosal_kenboard)

## For humans


KENBOARD kanban view

> Regenerate the screenshot after a UI change: `pdm run screenshots`

## For BOTs

KENBOARD ships `ken`, a CLI built for Claude Code and other assistants:
JSON output, native filters, clean exit codes.

### Automatic onboarding

1. An admin clicks **Copy onboard link** on a project in the kenboard
2. The link is handed to the agent (Claude Code, GPT, etc.)
3. The agent opens the link and gets a complete `.ken` file with a
pre-filled API token — zero human interaction for the API key
4. The agent runs `pip install kenboard`, creates the `.ken`, and
starts working immediately

### Daily workflow

```sh
ken list --status todo --who Claude --json # assigned tasks
ken show --json # task details
ken move --to doing # mark in progress
ken add "MODULE / Title" --desc "..." --who Claude # create
ken move --to review # submit
ken wiki groom # classify for the wiki
```

Full workflow: `todo` → `doing` → `review` → `groom` → `done`.
The agent handles `todo` → `doing` → `review` then `ken wiki groom`.
Only the user moves `review` → `done`. `ken move --to review` and
`ken update --status review` print a one-line reminder about the
grooming step so the agent doesn't forget.

### Wiki — exporting the board as a structured doc tree (#376)

Inspired by Karpathy's
[LLM Wiki pattern](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f):
the kanban board is the source of truth, and an LLM agent classifies
each task into a section of `ARCHITECTURE.md` (a YAML-frontmatter file
at the project root that declares the wiki's section tree). The CLI
then exports the result as a navigable MD/HTML tree.

```sh
ken wiki groom # list unclassified + sections
ken wiki groom # assign a task to a section
ken wiki sync --out wiki # MD tree (committed in /wiki)
ken wiki build --in wiki --out wiki-html # standalone HTML
ken wiki lint --strict # orphans / unclassified (CI gate)
```

- The server stays unaware of `ARCHITECTURE.md` — it stores opaque
`(task_id, section_path)` pairs, the CLI does the validation.
- Each section index splits "En cours" (todo/doing/review) and
"Archivé" (done). Per-task pages mirror the board's full-screen
task view (header + meta + description).
- `ken wiki lint --strict` exits 1 on orphans / unclassified tasks
— wire it into your CI to keep the wiki in sync with the board.

A live snapshot of the export lives under [`/wiki`](./wiki) in this repo.

### Browser extension — quick-capture from any page (#480)

Sideload-only browser extension that pops a "create task" dialog from
the current tab with `Ctrl+Shift+K` (`Cmd+Shift+K` macOS). Pre-fills
the title from the page title, attaches a PNG screenshot of the
visible viewport, posts to `POST /api/v1/tasks` with your existing
api_key. Zero new server code — reuses the standard bearer auth.

Install + first-run guide: [`extension/README.md`](extension/README.md).
Pre-zipped sideload package on every release:
[GitHub Releases](https://github.com/lduchosal/kenboard/releases).

### References

- Full CLI: [`doc/ken-cli.md`](doc/ken-cli.md)
- Agent guide: `ken help`
- REST API: [`doc/api.md`](doc/api.md), [`doc/openapi.yaml`](doc/openapi.yaml)

## Enterprise

KENBOARD is designed for self-hosted enterprise deployment:

- **OIDC authentication** — sign in through a corporate Identity
Provider (Microsoft ADFS, Google Workspace, Authentik, Keycloak,
etc.) alongside or instead of password login. See
[`doc/oidc-adfs.md`](doc/oidc-adfs.md) for the ADFS guide.
- **Self-hosted** — no cloud dependencies. MySQL + Flask + gunicorn
on your own infrastructure, behind your reverse proxy / WAF.
- **Per-project API keys** — each agent or integration gets a
scoped token (read/write) for a specific project. AI agents
self-onboard through the runbook served by the server.
- **Commercial support** — setup assistance, IdP integration, and
operational support available on request.
Contact: [2113.ch](https://www.2113.ch)

## Installation

See [`INSTALL.md`](INSTALL.md) for the full setup (MySQL, users,
migrations, reverse proxy, OIDC).

## License

MIT — see [`LICENSE`](LICENSE).