Ga naar de hoofdinhoud

Kanera CLI

@kanera/cli plaatst Kanera in uw terminal zodat u kaarten kunt vinden, werk kunt beheren en taken kunt automatiseren vanuit shell-scripts. AI-codeeragenten die shell-opdrachten kunnen uitvoeren, kunnen er ook gebruik van maken, zonder MCP-clientconfiguratie en zonder langlopende server.

Installeren​

Vereist Node.js 22 of nieuwer. Voer deze opdracht uit in uw terminal om het kanera commando globaal:

npm install --global @kanera/cli

Het gepubliceerde pakket heeft geen runtime-afhankelijkheden. Bevestig dat de opdracht beschikbaar is:

kanera commands

Om het te proberen zonder te installeren:

npx @kanera/cli commands

Authenticeren​

Meld u aan via uw browser:

kanera auth login

auth login gebruikt de OAuth-apparaatstroom, op dezelfde manier waarop Claude en Codex verbinding maken. Het drukt een link en een korte code af, opent de link in uw browser en eindigt vanzelf zodra u het goedkeurt. Controleer of de code op de pagina overeenkomt met uw terminal voordat u een keuze maakt Toegang toestaan. Open via SSH of op een headless machine de link op elk apparaat; passeren --no-browser om het starten ervan over te slaan.

De CLI slaat vervolgens een kortstondig toegangstoken en een vernieuwingstoken op, en vernieuwt deze automatisch. De aanmelding verschijnt onder Instellingen -> AI-agenten als Kanera CLI (de naam van uw computer), en de wijzigingen die het aanbrengt, worden met die naam gelabeld in de kaartgeschiedenis. Trek het daar in, of ren weg kanera auth logout, waardoor het ook op de server wordt beëindigd.

Noem de agent​

Wanneer een AI-agent de CLI bestuurt, geeft u deze een naam bij het inloggen, zodat zijn werk wordt gelabeld als dat van die agent:

kanera auth login --agent "Claude Code"

De aanmelding verschijnt dan als Claude Code (Kanera CLI op de naam van uw computer) op het toestemmingsscherm, onder Instellingen -> AI-agenten, en als via Claude-code (Kanera CLI op …) bij elke opmerking, kaartwijziging, melding en agentrun die hij maakt. KANERA_AGENT_NAME stelt dezelfde naam in vanuit de omgeving. De naam staat vast voor de duur van de aanmelding, dus geef elke agent een eigen profiel --profile wanneer meerdere een machine delen. --agent geldt niet voor API-sleutels, omdat werkzaamheden met een persoonlijke sleutel als u worden geregistreerd.

Gebruik in plaats daarvan een API-sleutel​

Gebruik een API-sleutel voor CI, cron-jobs en onbeheerde agenten, waarbij niemand aanwezig is om een browseraanmelding goed te keuren, of wanneer u een referentie wilt die Kanera als alleen-lezen afdwingt. Maak er één aan Profielinstellingen -> API-sleutels, of binnen Werkruimte-instellingen -> API wanneer de referentie bij een werkruimte moet horen en niet bij een persoon. Zie Kanera-API voor het verschil.

kanera auth login --with-api-key

Op gehoste Kanera wordt uw API-sleutelpagina geopend op https://board.kanera.app/settings/api-keys, vraagt om de sleutel waarbij de terminal-echo wordt onderdrukt, zodat deze nooit in je shell terechtkomt, scrollt terug, verifieert deze tegen Kanera en slaat deze op.

Wijzigingen met een persoonlijke sleutel worden geregistreerd als u, met nr via badge, dus inloggen via een browser is de betere keuze als u wilt dat het werk van een agent wordt gelabeld. Kies een Alleen-lezen persoonlijke sleutel wanneer de referentie voor een onbeheerde agent is. De CLI rapporteert de reikwijdte die hij vasthoudt en weigert het schrijven van exit met een aparte code, zodat een agent kan stoppen in plaats van het opnieuw te proberen.

kanera whoami # who am I, and what may this credential do?
kanera doctor # diagnose credentials, connectivity, and scope

In CI of een agent-sandbox slaat u het opgeslagen profiel volledig over en stelt u het in KANERA_API_KEY.

Inspecteer een tijdlijnschema​

kanera schedule "$BOARD_ID" --json
kanera schedule --workspaceId "$WORKSPACE_ID" --json
kanera card update MKT-42 --changes.startDateLocalDate 2026-11-02 --changes.dueDateLocalDate 2026-11-06

Gebruik precies één bereik: een bordpositioneel argument of --workspaceId. Het lezen retourneert de Tijdlijn geplande data van de engine, duur en speling van de werkdag, kritieke kaarten, conflicten, verwachte finish en slip tegen de laatste vervaldatum. De update wijzigt opgeslagen datums en vereist schrijftoegang; het verplaatst opvolgers niet automatisch. Herlees het schema na het wijzigen van de data.

kanera my-day --json omvat planningsconflicten, kritisch werk en gemiste geplande starts; kanera portfolio --json retourneert de ondersteunde cross-board rollup, inclusief de planningsstatus per bord. Voor gebeurtenisabonnementen is een gehoste HTTP MCP-client vereist; ze worden niet geleverd door het stdio-transport van de CLI.

Alledaagse commando's​

kanera my-day # overdue, due this week, idle, and Up next in one view
kanera work # your work across every accessible board
kanera boards # every board you can reach, including guest boards
kanera card MKT-42 # a card, by key, id, or URL
kanera card done MKT-42 # mark it complete
kanera comment MKT-42 "Shipped."
kanera search "renewal"
kanera priorities # an Up next queue
kanera separator create "$BOARD" "$LIST" "This week" --color blue
kanera capture "Renew the venue insurance" # a task in your private Scratchpad Inbox, no board needed
kanera remind MKT-42 "friday 3pm" # a private reminder on a card, up to 8 weeks ahead
kanera remind clear MKT-42
kanera reminders # your pending reminders, soonest first
kanera watch MKT-42 # follow a card's activity; kanera unwatch MKT-42 stops
kanera inbox # your latest notifications; then kanera inbox --since "<cursor>" for only what is new
kanera card upload-link MKT-42 test-run.log # a one-time URL; then curl -fsS -T ./test-run.log "<uploadUrl>"
kanera card attachment MKT-42 "$ATTACHMENT" # an attachment's text, or an image's details

Kaartargumenten accepteren een kaartsleutel zoals MKT-42, een kaart-ID of een canonieke kaart-URL, zodat u kunt plakken wat u voor u heeft. Datumargumenten worden geaccepteerd YYYY-MM-DD of zinnen zoals "tomorrow 1pm" of "next friday", lees in de tijdzone van uw profiel: kanera card update MKT-42 --changes.dueDateLocalDate "friday 3pm".

kanera commands geeft een overzicht van alles wat de CLI kan doen en werkt voordat u inlogt. kanera commands --json is de machinaal leesbare catalogus die een agent gebruikt om de rest te ontdekken.

Het volledige gereedschapsoppervlak​

De hierboven genoemde commando's zijn ergonomische snelkoppelingen over de MCP-toollaag van Kanera - dezelfde tools die een AI-agent ziet via MCP. Alles zonder een snelkoppeling is nog steeds bereikbaar:

kanera call cards.bulk_move --boardId "$BOARD" --cardIds[] MKT-42 --cardIds[] MKT-43 --listId "$LIST"
kanera help cards.bulk_move

Omdat de CLI de toollaag rechtstreeks leest in plaats van de publieke API opnieuw te implementeren, kan het opdrachtoppervlak niet afwijken van wat agenten zien, en kan een nieuw toegevoegde tool vanuit de shell worden opgeroepen op de dag dat deze wordt verzonden.

Bordscheiders​

Maak een benoemde, optioneel gekleurde scheidingslijn en positioneer deze ten opzichte van een kaart of een andere scheidingslijn:

kanera separator create "$BOARD" "$LIST" "This week" --color blue \
--anchor.side before --anchor.item.type card --anchor.item.id "$CARD"

kanera separator move "$SEPARATOR" "$LIST" \
--anchor.side after --anchor.item.type separator --anchor.item.id "$OTHER_SEPARATOR"

kanera separator update "$SEPARATOR" --title "Next up" --color green
kanera separator delete "$SEPARATOR"

Voor een lijstvoordeel, passeer --anchor.side after --anchor.item null voor de bovenkant of --anchor.side before --anchor.item null voor de bodem. Het verwijderen van scheidingstekens verandert geen kaarten. kanera card move accepteert hetzelfde type anker, zodat kaarten direct voor of na een afscheider kunnen worden geplaatst.

Kaartrelaties​

Deze commando's worden van links naar rechts gelezen: de eerste kaart blokkeert de tweede. Beide moeten tot dezelfde werkruimte behoren.

kanera card block MKT-42 WEB-18 # MKT-42 blocks WEB-18
kanera card unblock MKT-42 WEB-18 # remove that dependency
kanera card relate MKT-42 WEB-18 # connect them without a required order
kanera card WEB-18 # full detail includes relationships
kanera work --filters.blockedOnly true # find waiting work
kanera work --filters.atRiskOnly true # blocker overdue or due after the card

Voor de omgekeerde richting of meerdere doelen gebruikt u het onderliggende hulpmiddel:

kanera call cards.set_relations --cardId WEB-18 --direction blocked_by \
--otherCardIds[] MKT-42 --otherCardIds[] MKT-43

Pass --remove true om de geselecteerde relaties te verwijderen. Inspecteer failed en notAttemptedCardIds bij gedeeltelijk resultaat: succesvolle toevoegingen blijven bewaard als een ander doel wordt geweigerd. Een resultaat met relationsUnavailable namen succesvol schrijft in addedCardIds of removedCardIds toen de laatste lezing mislukte. Naast weigeringen per kaart worden ook succesvolle verwijderingen gerapporteerd. Zie Kaartrelaties en blokkering voor machtigingen, overdrachten en voltooiingswaarschuwingen.

Afhankelijkheidsgrafieken​

Gebruik kanera deps om de vereisten en het downstream-werk in één gesprek te lezen:

kanera deps MKT-42 # one card's blocking neighbourhood
kanera deps --boardId "$BOARD" # chains touching a board
kanera deps --workspaceId "$WORKSPACE" # chains in a workspace

Geef precies één bereik door. Een kaartargument accepteert de sleutel, UUID of canonieke URL. Kaartgerichte uitvoer voegt toe focus met direct blockedBy / blocks ID's, transitief upstream / downstream ID's in de dichtstbijzijnde volgorde, relatedTo, en onMap. Kaarten bevatten leesbare bord- en lijstnamen en actieve/off-map blockertellingen. Het resultaat is beperkt tot 400 kaarten en rapporten truncated. Zie de MCP-grafiekreferentie.

Argumenten​

Vlaggen worden gekoppeld aan toolargumenten en worden afgedwongen met behulp van het eigen JSON-schema van elke tool, nooit door hoe de waarde eruit ziet: een kaartsleutel kan er numeriek uitzien en een id kan er booleaans uitzien.

kanera card update MKT-42 --changes.title "Revised" # dots nest
kanera work --scope.boardIds[] "$A" --scope.boardIds[] "$B" # repeat for arrays
kanera call cards.update --json-args '{"cardId":"MKT-42","changes":{"title":"Revised"}}'

Een array-argument accepteert ook één JSON-array, de eenvoudigste manier om een lijst met objecten door te geven. Hiermee wordt in één gesprek een checklist, de bijbehorende items en een sub-checklist samengesteld, en worden vervolgens twee items in een ander gesprek voltooid:

kanera call checklists.create --cardId MKT-42 --title Launch \
--items '[{"text":"Prepare release","subChecklists":[{"title":"Verification","items":[{"text":"Run smoke tests"}]}]},{"text":"Announce launch"}]'
kanera call checklists.update_items --cardId MKT-42 \
--updates '[{"itemId":"<itemId>","changes":{"completed":true}},{"itemId":"<itemId>","changes":{"completed":true}}]'

Onbekende vlaggen, ontbrekende vereiste argumenten, onjuiste indeling --json-args, en overtollige positionele argumenten zijn gebruiksfouten. De CLI verwijdert nooit stilletjes een operand.

Uitvoer​

VlagUitvoer
(geen)Voor mensen leesbare tabellen en samenvattingen
--jsonEEN { ok, tool, data } envelop
--quietHet kale resultaat, om in te spuiten jq

Mislukkingen gaan altijd naar stderr, zelfs binnen --json modus, dus het omleiden van stdout naar een bestand mengt nooit een foutenvelop in wat de beller denkt dat resultaatgegevens zijn.

Tot frequentiegelimiteerde en tijdelijke fouten behoren onder meer retryable en, wanneer Kanera er één levert, retryAfter.

Uitgangscodes​

CodeerBetekenis
0Succes
1Het verzoek is mislukt
2Slecht gebruik
3Geen geldig legitimatiebewijs
4Verboden — vaak een alleen-lezen-referentie, of geen Editor-rol op het bord
5Niet gevonden
6Tarief beperkt

4 bewust is onderscheiden van 1. Een agent die een leessleutel vasthoudt, moet zeggen: "Ik doe dit misschien niet", behalve "dit werkte niet", en stoppen in plaats van het opnieuw te proberen.

Referenties en profielen​

Resolutievolgorde: --api-key, dan KANERA_API_KEYen vervolgens een opgeslagen profiel, dat een browseraanmelding of een API-sleutel bevat. Een expliciete sleutel wint altijd, dus een CI-taak loopt nooit via de persoonlijke aanmelding van een ontwikkelaar.

Profielen leven erin ~/.config/kanera/config.json, geschreven met modus 600. Met benoemde profielen kan één machine meerdere identiteiten bevatten:

kanera auth login --profile agent --api-key "kanera_u_live_..."
kanera --profile agent work --json
CommandoDoel
kanera auth loginMeld u aan via de browser (--with-api-key of --api-key voor een sleutel)
kanera auth statusToon de actieve referentie en het bereik ervan
kanera auth listLijst van opgeslagen profielen
kanera auth tokenDruk de actieve API-sleutel af, voor KANERA_API_KEY=$(kanera auth token). Browseraanmeldingen hebben geen sleutel om af te drukken.
kanera auth logoutVerwijder een opgeslagen profiel en beëindig een browseraanmelding op de server

Een repository kan een profiel selecteren zonder een geheim te bewaren .kanera/config.json:

{ "profile": "agent" }

Dat bestand kan geen API-oorsprong instellen. Origins ontvangen de dragerreferentie, dus een uitgecheckte repository mag deze niet kunnen omleiden. Gebruik --url, KANERA_PUBLIC_API_URL, of de oorsprong die bij het profiel is opgeslagen tijdens auth login. Niet-loopback-oorsprong moet HTTPS gebruiken.

Updates​

De CLI controleert npm maximaal één keer per dag op een nieuwere release. Wanneer het er een vindt, vraagt het nadat uw opdracht is voltooid:

A new Kanera CLI is available: 1.7.0 → 1.8.0
Update now? [y/N]

Antwoord y rennen npm install --global @kanera/cli@<version>. Bij elk ander antwoord wordt de update overgeslagen. De CLI vraagt ​​niet opnieuw om een ​​dag en drukt de opdracht af, zodat u deze later kunt bijwerken.

De CLI vraagt alleen wanneer iemand zich bij een interactieve terminal bevindt. Er wordt nooit gecontroleerd of gevraagd --json of --quiet modus, wanneer invoer of uitvoer geen terminal is (die agenten, scripts en pipelines omvat), wanneer CI is ingesteld, of wanneer u deze doorloopt npx, dat zijn eigen kopie ophaalt. Instellen KANERA_NO_UPDATE_CHECK=1 om het vinkje helemaal uit te schakelen.

Zelf-gehoste Kanera​

Een browseraanmelding is gekoppeld aan het MCP-adres van uw implementatie, dus geef dit door tijdens het inloggen:

kanera auth login --mcp-url https://your-kanera.example/mcp

Of instellen KANERA_MCP_URL. De CLI leest de OAuth-metagegevens van de MCP-server om uw Kanera-inlogpagina te vinden, zodat u verder niets hoeft te configureren.

Voor een API-sleutel wijst u de CLI in plaats daarvan naar uw openbare API en wordt deze opgeslagen met het profiel:

kanera auth login --with-api-key --url https://api.your-kanera.example

De CLI kan niet bepalen waar een zelf-gehoste webapp zich bevindt vanuit de API-oorsprong, dus met een API-sleutel wordt er geen browser geopend. Maak de sleutel aan in uw Kanera-webapp onder Instellingen -> API-sleutelsen plak het vervolgens bij de prompt.

Of instellen KANERA_PUBLIC_API_URL per opdracht. kanera doctor rapporteert het eindpunt dat is opgelost, wat meestal de snelste manier is om een verkeerd geconfigureerde oorsprong te vinden.

Gebruik het van een AI-agent​

Twee manieren, en ze zijn complementair.

Als shell-tool. Installeer de CLI, geef de agent een alleen-lezen sleutel en laat hem opdrachten uitvoeren. kanera setup schrijft de instructies die de agent nodig heeft:

kanera setup claude # writes .claude/skills/kanera/SKILL.md
kanera setup codex # appends Kanera instructions to AGENTS.md
kanera skill # prints the portable Agent Skill document for any other harness

kanera setup codex is idempotent, dus als u het opnieuw uitvoert na een upgrade, worden er geen dubbele secties in een bestand gestapeld dat u ook met de hand bewerkt. Toevoegen --global naar setup claude te installeren voor uw account in plaats van voor één project.

Als de agent al Kanera MCP-hulpmiddelen heeft aangesloten, gebruikt u deze in plaats van de CLI. Bij beide transporten mogen ondersteunde kaartlezingen en -updates niet terugvallen op browserautomatisering, alleen maar omdat Kanera ook een webinterface heeft.

Als MCP-server. kanera mcp bedient dezelfde tools via stdio MCP met behulp van de inloggegevens die u al hebt opgeslagen:

{
"mcpServers": {
"kanera": {
"command": "kanera",
"args": ["mcp"]
}
}
}

Dit betekent één kanera auth login dekt zowel uw terminal als uw MCP-client, in plaats van een tweede referentie die op een tweede plaats is geconfigureerd. Met een browseraanmelding, kanera mcp geeft uw Kanera MCP-server door en vernieuwt het token terwijl het wordt uitgevoerd. Het spreekt zowel het huidige MCP-protocol als de eerdere revisies, dus elke MCP-host kan het starten. Abonnementen op evenementen worden niet aangeboden via stdio, omdat een lokale host geen gehoste callback heeft om aan af te leveren. Als uw client externe MCP met OAuth zelf ondersteunt, kunt u deze ook rechtstreeks aansluiten; zie Verbind Kanera met uw AI-agent.

Planvereisten​

Browseraanmeldingen en persoonlijke API-sleutels werken op elk gehost abonnement, inclusief Gratis, en zelf-gehoste Kanera heeft geen abonnementscontroles. Werkruimte- en bord-API-sleutels nodig Pro of de Pro-proef; als een gehoste organisatie naar Free verhuist, worden ze ingetrokken, en kanera opdrachten met één fout met exitcode 3 of 4 totdat het plan is hersteld. Verzoeken volgen de Limieten voor API-snelheden van de organisatie van het bord, en de CLI wacht en probeert het opnieuw als het even voorbij is.