CLI client for Kanban boards
Project description
pkanban
A command-line tool for managing Kanban boards. (The "p" is silent, like in "pneumonia".)
Most users will connect to our hosted service at kanban.pearachute.com. If you want to run your own server, see the Self-Hosting section below.
Quick Start
pip install pkanban
Configure the CLI to connect to the hosted service:
kanban config --url https://kanban.pearachute.com
kanban login <username> --password <password>
That's it! You can now manage your boards from the command line.
Common Commands
# List your boards
kanban board list
# Create a new board
kanban board create "My Project"
# View a board with its columns and cards
kanban board get 1
# Add a column
kanban column create 1 "To Do" 0
# Add a card
kanban card create 1 "First task" --description "Getting started"
# Share a board with a team
kanban share 1 <team-id>
API Keys
For automation, CI/CD, or giving access to agents, use API keys instead of passwords:
# Create a key (shown only once!)
kanban apikey create "CI Agent"
# Use it
kanban --api-key kanban_abc123... board list
# Or set it as an environment variable
export KANBAN_API_KEY=kanban_abc123...
kanban board list
API keys can be revoked and reactivated at any time. They're stored securely (bcrypt-hashed) and track their last usage.
Command Reference
| Command | Description |
|---|---|
kanban config [--url URL] |
Show or set server URL |
kanban login <user> --password <pass> |
Login to the server |
kanban logout |
Logout and clear credentials |
kanban --api-key <key> |
Use API key for authentication |
kanban apikey create <name> |
Generate a new API key |
kanban apikey list |
List your API keys |
kanban apikey revoke <id> |
Revoke an API key |
kanban apikey activate <id> |
Reactivate a revoked key |
kanban board list |
List all boards |
kanban board create <name> |
Create a new board |
kanban board get <id> |
Show board details |
kanban board delete <id> |
Delete a board |
kanban board update <id> <name> |
Update board name |
kanban share <board_id> <team_id|private> |
Share board or make private |
kanban column create <board_id> <name> <position> |
Create a column |
kanban column delete <id> |
Delete a column |
kanban card create <column_id> <title> [options] |
Create a card |
kanban card update <id> <title> [options] |
Update a card |
kanban card delete <id> |
Delete a card |
kanban org list |
List all organizations |
kanban org create <name> |
Create an organization |
kanban org get <org-id> |
Show organization details |
kanban org members <org-id> |
List organization members |
kanban org member-add <org-id> <username> |
Add member to organization |
kanban org member-remove <org-id> <user-id> |
Remove member |
kanban team list --org-id <org-id> |
List teams in organization |
kanban team create <org-id> <name> |
Create a new team |
kanban team get <team-id> |
Show team details |
kanban team members <team-id> |
List team members |
kanban team member-add <team-id> <username> |
Add member to team |
kanban team member-remove <team-id> <user-id> |
Remove member from team |
Self-Hosting
Want to run your own server? Here's how:
1. Clone and setup
git clone https://github.com/pearachute/kanban.git
cd kanban
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r backend/requirements.txt
cd frontend && npm install && cd ..
2. Initialize and run
python manage.py init
python manage.py user-create admin mypassword --admin
python manage.py server
The server runs at http://localhost:8000 by default.
3. Connect the CLI
kanban config --url http://localhost:8000
kanban login admin --password mypassword
Development
# Run the server with auto-reload
python manage.py server
# Run frontend dev server (hot reload)
cd frontend && npm run dev
# Run tests
python -m pytest backend/tests/
Database commands
python manage.py init # Create tables
python manage.py wipe # Drop and recreate tables
python manage.py status # Check database status
python manage.py user-create <user> <pass> [--admin]
API Reference
The backend exposes a REST API at /api/:
Authentication
POST /api/token- Login (returns JWT)X-API-Keyheader - Alternative auth via API key
API Keys
GET /api/api-keys- List your keysPOST /api/api-keys- Create a keyDELETE /api/api-keys/{id}- Revoke a keyPOST /api/api-keys/{id}/activate- Reactivate a key
Boards
GET /api/boards- List accessible boardsPOST /api/boards- Create a boardGET /api/boards/{id}- Get board detailsPOST /api/boards/{id}- Update boardDELETE /api/boards/{id}- Delete board
Columns
POST /api/columns- Create columnPUT /api/columns/{id}- Update columnDELETE /api/columns/{id}- Delete column
Cards
POST /api/cards- Create cardPUT /api/cards/{id}- Update cardDELETE /api/cards/{id}- Delete card
For multi-tenant organization details, see docs/multi-tenant.md.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pkanban-0.1.2.tar.gz.
File metadata
- Download URL: pkanban-0.1.2.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8389a677bad907f978c5cfc476192cfb477692de8489c795c517fa3621ba662c
|
|
| MD5 |
4160613260ce8cbfe5a9db118f8fa4bb
|
|
| BLAKE2b-256 |
c4bc6da1527d024f1b9016e9d3b0a5c562503fa8429bdda5f454c6ed9a8c498b
|
Provenance
The following attestation bundles were made for pkanban-0.1.2.tar.gz:
Publisher:
publish-pypi.yml on japherwocky/kanban
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pkanban-0.1.2.tar.gz -
Subject digest:
8389a677bad907f978c5cfc476192cfb477692de8489c795c517fa3621ba662c - Sigstore transparency entry: 1154506692
- Sigstore integration time:
-
Permalink:
japherwocky/kanban@0011803d5b7afaca128fcd027a02008babda44d0 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/japherwocky
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@0011803d5b7afaca128fcd027a02008babda44d0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pkanban-0.1.2-py3-none-any.whl.
File metadata
- Download URL: pkanban-0.1.2-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51b703984ce310426cd744b02404e69f7e8c878616320f9dc59c9d908b48fbea
|
|
| MD5 |
ab65a22cf929b919ec89394d8bdd9ba9
|
|
| BLAKE2b-256 |
72bf47fc4c9e17f42d7c5902ffc58cf3a4d62c882bcd895a79b5de283df6acd9
|
Provenance
The following attestation bundles were made for pkanban-0.1.2-py3-none-any.whl:
Publisher:
publish-pypi.yml on japherwocky/kanban
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pkanban-0.1.2-py3-none-any.whl -
Subject digest:
51b703984ce310426cd744b02404e69f7e8c878616320f9dc59c9d908b48fbea - Sigstore transparency entry: 1154506693
- Sigstore integration time:
-
Permalink:
japherwocky/kanban@0011803d5b7afaca128fcd027a02008babda44d0 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/japherwocky
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@0011803d5b7afaca128fcd027a02008babda44d0 -
Trigger Event:
push
-
Statement type: