GitPedia

Kan

The open source Trello alternative.

From kanbnΒ·Updated June 20, 2026Β·View on GitHubΒ·

Kan The open-source project management alternative to Trello. The project is written primarily in TypeScript, distributed under the GNU Affero General Public License v3.0 license, first published in 2023. It has gained significant community traction with 5,043 stars and 389 forks on GitHub. Key topics include: better-auth, drizzle-orm, nextjs, open-source, tailwindcss.

Latest release: v0.5.6
March 19, 2026View Changelog β†’

github-background

<div align="center"> <h3 align="center">Kan</h3> <p>The open-source project management alternative to Trello.</p> </div> <p align="center"> <a href="https://kan.bn/kan/roadmap">Roadmap</a> Β· <a href="https://kan.bn">Website</a> Β· <a href="https://docs.kan.bn">Docs</a> Β· <a href="https://discord.gg/e6ejRb6CmT">Discord</a> </p> <div align="center"> <a href="https://github.com/kanbn/kan/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/badge/license-AGPLv3-purple"></a> </div>

Features πŸ’«

  • πŸ‘οΈ Board Visibility: Control who can view and edit your boards
  • 🀝 Workspace Members: Invite members and collaborate with your team
  • πŸš€ Trello Imports: Easily import your Trello boards
  • πŸ” Labels & Filters: Organise and find cards quickly
  • πŸ’¬ Comments: Discuss and collaborate with your team
  • πŸ“ Activity Log: Track all card changes with detailed activity history
  • 🎨 Templates : Save time with reusable custom board templates
  • ⚑️ Integrations (coming soon) : Connect your favourite tools

See our roadmap for upcoming features.

Screenshot πŸ‘οΈ

<img width="1507" alt="hero-dark" src="https://github.com/user-attachments/assets/8490104a-cd5d-49de-afc2-152fd8a93119" />

Made With πŸ› οΈ

Self Hosting 🐳

One-click Deployments

The easiest way to deploy Kan is through Railway. We've partnered with Railway to maintain an official template that supports the development of the project.

<a href="https://railway.com/deploy/kan?referralCode=bZPsr2&utm_medium=integration&utm_source=template&utm_campaign=generic"> <img src="https://railway.app/button.svg" alt="Deploy on Railway" height="40" /> </a>

Docker Compose

Alternatively, you can self-host Kan with Docker Compose. This will set up everything for you including your postgres database and automatically run migrations.

  1. Create a .env file with your environment variables (see Environment Variables section below)

  2. Use the provided docker-compose.yml file or create your own with the following configuration:

yaml
services: migrate: image: ghcr.io/kanbn/kan-migrate:latest container_name: kan-migrate networks: - kan-network environment: - POSTGRES_URL=${POSTGRES_URL} depends_on: postgres: condition: service_healthy restart: "no" web: image: ghcr.io/kanbn/kan:latest container_name: kan-web ports: - "${WEB_PORT:-3000}:3000" networks: - kan-network env_file: - .env environment: - NEXT_PUBLIC_BASE_URL=${NEXT_PUBLIC_BASE_URL} - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET} - POSTGRES_URL=${POSTGRES_URL} - NEXT_PUBLIC_ALLOW_CREDENTIALS=true depends_on: migrate: condition: service_completed_successfully restart: unless-stopped postgres: image: postgres:15 container_name: kan-db environment: - POSTGRES_DB=kan_db - POSTGRES_USER=kan - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} ports: - 5432:5432 volumes: - kan_postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U kan -d kan_db"] interval: 5s timeout: 5s retries: 10 restart: unless-stopped networks: - kan-network networks: kan-network: volumes: kan_postgres_data:
  1. Start the containers in detached mode:
bash
docker compose up -d

The migrate service will automatically run database migrations before the web service starts. The application will be available at http://localhost:3000 (or the port specified in WEB_PORT).

Managing containers:

  • To stop the containers: docker compose down
  • To view logs: docker compose logs -f
  • To view logs for a specific service: docker compose logs -f web or docker compose logs -f migrate
  • To restart the containers: docker compose restart
  • To rebuild after code changes: docker compose up -d --build

For the complete Docker Compose configuration with all optional features, see docker-compose.yml in the repository.

Local Development πŸ§‘β€πŸ’»

  1. Clone the repository (or fork)
bash
git clone https://github.com/kanbn/kan.git
  1. Install dependencies
bash
pnpm install
  1. Copy .env.example to .env and configure your environment variables
  2. Migrate database
bash
pnpm db:migrate
  1. Start the development server
bash
pnpm dev

Environment Variables πŸ”

VariableDescriptionRequiredExample
POSTGRES_URLPostgreSQL connection URLTo use external databasepostgres://user:pass@localhost:5432/db
REDIS_URLRedis connection URLFor rate limiting (optional)redis://localhost:6379 or redis://redis:6379 (Docker)
EMAIL_FROMSender email addressFor Email"Kan <hello@mail.kan.bn>"
SMTP_HOSTSMTP server hostnameFor Emailsmtp.resend.com
SMTP_PORTSMTP server portFor Email465
SMTP_USERSMTP username/emailNoresend
SMTP_PASSWORDSMTP password/tokenNore_xxxx
SMTP_SECUREUse secure SMTP connection (defaults to true if not set)For Emailtrue
SMTP_REJECT_UNAUTHORIZEDReject invalid certificates (defaults to true if not set)For Emailfalse
NEXT_PUBLIC_DISABLE_EMAILTo disable all email featuresFor Emailtrue
NEXT_PUBLIC_BASE_URLBase URL of your installationYeshttp://localhost:3000
NEXT_API_BODY_SIZE_LIMITMaximum API request body size (defaults to 1mb)No50mb
BETTER_AUTH_ALLOWED_DOMAINSComma-separated list of allowed domains for OIDC loginsFor OIDC/Social loginexample.com,subsidiary.com
BETTER_AUTH_SECRETAuth encryption secretYesRandom 32+ char string
BETTER_AUTH_TRUSTED_ORIGINSAllowed callback originsNohttp://localhost:3000,http://localhost:3001
GOOGLE_CLIENT_IDGoogle OAuth client IDFor Google loginxxx.apps.googleusercontent.com
GOOGLE_CLIENT_SECRETGoogle OAuth client secretFor Google loginxxx
DISCORD_CLIENT_IDDiscord OAuth client IDFor Discord loginxxx
DISCORD_CLIENT_SECRETDiscord OAuth client secretFor Discord loginxxx
GITHUB_CLIENT_IDGitHub OAuth client IDFor GitHub loginxxx
GITHUB_CLIENT_SECRETGitHub OAuth client secretFor GitHub loginxxx
OIDC_CLIENT_IDGeneric OIDC client IDFor OIDC loginxxx
OIDC_CLIENT_SECRETGeneric OIDC client secretFor OIDC loginxxx
OIDC_DISCOVERY_URLOIDC discovery URLFor OIDC loginhttps://auth.example.com/.well-known/openid-configuration
TRELLO_APP_API_KEYTrello app API keyFor Trello importxxx
TRELLO_APP_API_SECRETTrello app API secretFor Trello importxxx
S3_REGIONS3 storage regionFor file uploadsWEUR
S3_ENDPOINTS3 endpoint URLFor file uploadshttps://xxx.r2.cloudflarestorage.com
S3_ACCESS_KEY_IDS3 access keyFor file uploads (optional with IRSA)xxx
S3_SECRET_ACCESS_KEYS3 secret keyFor file uploads (optional with IRSA)xxx
S3_FORCE_PATH_STYLEUse path-style URLs for S3For file uploadstrue
S3_AVATAR_UPLOAD_LIMITMaximum avatar file size in bytesFor file uploads2097152 (2MB)
NEXT_PUBLIC_STORAGE_URLStorage service URLFor file uploadshttps://storage.kanbn.com
NEXT_PUBLIC_STORAGE_DOMAINStorage domain nameFor file uploadskanbn.com
NEXT_PUBLIC_USE_VIRTUAL_HOSTED_URLSUse virtual-hosted style URLs (bucket.domain.com)For file uploads (optional)true
NEXT_PUBLIC_AVATAR_BUCKET_NAMES3 bucket name for avatarsFor file uploadsavatars
NEXT_PUBLIC_ATTACHMENTS_BUCKET_NAMES3 bucket name for attachmentsFor file uploadsattachments
NEXT_PUBLIC_ALLOW_CREDENTIALSAllow email & password loginFor authenticationtrue
NEXT_PUBLIC_DISABLE_SIGN_UPDisable sign upFor authenticationfalse
NEXT_PUBLIC_WHITE_LABEL_HIDE_POWERED_BYHide β€œPowered by kan.bn” on public boards (self-host)For white labellingtrue
KAN_ADMIN_API_KEYAdmin API key for stats and admin endpointsFor admin/monitoringyour-secret-admin-key
LOG_LEVELLog verbosity level (debug, info, warn, error)No (defaults to debug in dev, info in prod)info

See .env.example for a complete list of supported environment variables.

MCP Server (AI Control) πŸ€–

Kan ships with a Model Context Protocol (MCP) server that lets any MCP-compatible AI client β€” GitHub Copilot, Claude Desktop, Cursor, Codex, and others β€” read and control your Kan instance using natural language.

Prerequisites

  • Node.js 18+
  • A running Kan instance (self-hosted or cloud)
  • A Kan API key (Settings β†’ API Keys β†’ Create key)

Installation

You do not need to clone this repository. The recommended way is to use npx, which runs the server on-demand and always uses the latest version β€” no global install required:

bash
npx -y @kan/mcp

Alternatively, install it globally:

bash
npm install -g @kan/mcp kan-mcp

Configuration

The server is configured via two environment variables:

VariableDescriptionExample
KAN_BASE_URLBase URL of your Kan instancehttps://your-kan.example.com
KAN_API_TOKENAPI key from your Kan user settingskan_xxxxxxxxxxxx

GitHub Copilot (VS Code)

Add the following to your VS Code mcp.json (open it via MCP: Open User MCP Configuration from the Command Palette):

json
{ "servers": { "kan": { "type": "stdio", "command": "npx", "args": ["-y", "@kan/mcp"], "env": { "KAN_BASE_URL": "https://your-kan-instance.com", "KAN_API_TOKEN": "kan_your_api_key_here" } } } }

Then use Copilot in Agent mode to interact with Kan.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

json
{ "mcpServers": { "kan": { "command": "npx", "args": ["-y", "@kan/mcp"], "env": { "KAN_BASE_URL": "https://your-kan-instance.com", "KAN_API_TOKEN": "kan_your_api_key_here" } } } }

Cursor / Codex / other clients

Use the same command + args + env pattern above β€” all MCP stdio clients follow the same format.

Example prompts

Once connected, you can ask your AI assistant things like:

Browsing

  • "List all my workspaces"
  • "Show me all boards in the Marketing workspace"
  • "What cards are in the Backlog list of the Q3 Planning board?"
  • "Get the full details of card X including comments and checklists"

Managing cards

  • "Create a card called 'Fix login bug' in the To Do list of the Dev board"
  • "Move the 'API redesign' card to the In Progress list"
  • "Set a due date of next Friday on the 'Write docs' card"
  • "Add a comment to the 'Deploy to prod' card saying the deployment is blocked"
  • "Duplicate the 'Sprint template' card into the new Sprint 4 list"
  • "Mark the 'Setup CI' checklist item as complete"

Organisation

  • "Add the 'urgent' label to all cards assigned to me in the Backend board"
  • "Create a 'Release checklist' checklist on the v2.0 card with items: smoke test, update changelog, tag release"
  • "What tasks are assigned to @alice in the Mechanics Rework board?"

Workspace management

  • "Create a new workspace called 'Client Projects'"
  • "Invite bob@example.com to the Marketing workspace as a member"
  • "Create a new board called 'Sprint 5' in the Dev workspace with lists: Backlog, In Progress, Done"
  • "Search for anything related to 'authentication' across the Dev workspace"

Available tools

The MCP server exposes 46 tools across 7 resource types:

ResourceTools
Workspaceslist, find by name, get, create, update, delete, search, check slug
Boardslist, find by name, get, get by slug, create, update, delete
Listscreate, update, delete
Cardscreate, get, update, delete, duplicate, get activities
Card interactionsadd/update/delete comment, toggle label, toggle member
Checklistscreate, update, delete, create item, update item, delete item
Labelsget, create, update, delete
Membersinvite, remove, update role, manage invite links

Contributing 🀝

We welcome contributions! Please read our contribution guidelines before submitting a pull request.

Contributors πŸ‘₯

<a href="https://github.com/kanbn/kan/graphs/contributors"> <img src="https://contrib.rocks/image?repo=kanbn/kan" /> </a>

Sponsors ❀️

<img height="100" alt="image" src="https://github.com/user-attachments/assets/e331c71f-ac86-46a6-bceb-ce276de094b0" />

Proudly sponsored by TestMu AI (formerly LambdaTest) - an AI-native testing cloud platform built for modern engineering teams. Covering everything from autonomous test creation and fast execution to testing AI agents like chatbots and voice assistants. If you're serious about testing, go check them out.

License πŸ“

Kan is licensed under the AGPLv3 license.

Contact πŸ“§

For support or to get in touch, please email henry@kan.bn or join our Discord server.

Contributors

Showing top 12 contributors by commit count.

View all contributors on GitHub β†’

This article is auto-generated from kanbn/kan via the GitHub API.Last fetched: 6/20/2026