Skip to main content
PLANKA has no export feature, so there is no file to hand over. Instead, @kaneo/planka-import reads your boards directly from PLANKA’s REST API and recreates them in Kaneo through Kaneo’s public API. Nothing is written back to PLANKA, and your PLANKA credentials stay on your machine: the CLI talks to both servers itself, so no third party sees them.

Before you start

You need:
  • A PLANKA account that can see the boards you want to move. If you sign in through SSO and have no password, create a PLANKA API key and use --planka-api-key.
  • A Kaneo workspace, and an API key from Settings → API keys.
  • Node.js 20 or newer.
Invite your team to the Kaneo workspace before importing. Assignees are matched by email address, so anyone who isn’t a member yet will have their cards imported unassigned.

Start with a dry run

A dry run reads PLANKA only and writes nothing. It needs no Kaneo API key, so it’s a safe first step:
You’ll be asked for your PLANKA login and which boards to migrate. The output tells you exactly what would be created:

Run the import

When the plan looks right, add your Kaneo credentials and drop --dry-run:
Self-hosting Kaneo? Point --kaneo-url at your own instance. If you leave --workspace off, you’ll be asked to pick one. To skip the prompts entirely, for example in a script:
Set PLANKA_PASSWORD and KANEO_API_KEY as environment variables rather than passing secrets on the command line, where they end up in your shell history.

What carries over

One Kaneo project is created per PLANKA board, because the board is what holds the lists and cards. When a PLANKA project has more than one board, each resulting Kaneo project is named Project - Board.

What doesn’t

  • Attachments. Counted in the report, but not transferred. Download anything you need from PLANKA before you switch it off.
  • Archive and trash lists. Skipped deliberately; only active and closed lists are migrated.
  • Comment authorship. The comment is created by the API key’s owner, but the original PLANKA author is recorded on it and shown in Kaneo, the same way imported GitHub comments are. This needs Kaneo 2.17.6 or newer; against older instances the comment still imports, just without the original author.
  • Priorities. PLANKA has no priority field, so every task starts at no-priority.
  • Custom fields, stopwatches, and card subscriptions. No Kaneo equivalent.

Troubleshooting

“This PLANKA instance requires you to accept its terms”: sign in through the PLANKA web UI once and accept them, then run the import again. Two-factor authentication, or an SSO-only account: password login either can’t complete a TOTP challenge, or there is no local password at all. Create a PLANKA API key for the account and pass --planka-api-key instead. This is the recommended credential: it doesn’t expire the way a copied session token does. A board failed partway: failures are isolated per board, so the rest still import and the summary names the one that failed. Delete the half-created Kaneo project and re-run with --project to retry just that one.

Re-running

The importer always creates new projects; it never updates ones it created earlier. Running it twice gives you two copies, so delete the previous project before retrying.

Options