Kanera CLI
@kanera/cli coloca Kanera en tu terminal para que puedas buscar tarjetas, administrar el trabajo y automatizar tareas desde scripts de shell. Los agentes de codificación de IA que pueden ejecutar comandos de shell también pueden usarlo, sin configuración de cliente MCP ni servidor de larga duración.
Instalar
Requiere Node.js 22 o más reciente. Ejecute este comando en su terminal para instalar el kanera comando globalmente:
npm install --global @kanera/cli
El paquete publicado no tiene dependencias de tiempo de ejecución. Confirme que el comando esté disponible:
kanera commands
Para probarlo sin instalar:
npx @kanera/cli commands
autenticar
Inicie sesión a través de su navegador:
kanera auth login
auth login utiliza el flujo de dispositivo OAuth, de la misma manera que se conectan Claude y Codex. Imprime un enlace y un código corto, abre el enlace en su navegador y finaliza solo una vez que lo aprueba. Comprueba que el código de la página coincide con tu terminal antes de elegir Permitir acceso. A través de SSH o en una máquina sin cabeza, abra el enlace en cualquier dispositivo; pasar --no-browser para omitir el lanzamiento de uno.
Luego, la CLI almacena un token de acceso de corta duración y un token de actualización, y los renueva automáticamente. El inicio de sesión aparece debajo Configuración -> Agentes de IA como Kanera CLI (el nombre de su computadora), y los cambios que realiza se etiquetan con ese nombre en el historial de la tarjeta. Revocarlo allí o ejecutarlo. kanera auth logout, que también lo finaliza en el servidor.
Nombra al agente
Cuando un agente de IA controla la CLI, asígnele un nombre al iniciar sesión para que su trabajo se etiquete como el de ese agente:
kanera auth login --agent "Claude Code"
El inicio de sesión aparece entonces como Código Claude (Kanera CLI en el nombre de su computadora) en la pantalla de consentimiento, debajo Configuración -> Agentes de IA, y como a través de Claude Code (Kanera CLI en...) en cada comentario, cambio de tarjeta, notificación y ejecución de agente que realiza. KANERA_AGENT_NAME establece el mismo nombre del entorno. El nombre es fijo mientras dure el inicio de sesión, así que proporcione a cada agente su propio perfil con --profile cuando varios comparten una máquina. --agent no se aplica a las claves API, porque el trabajo realizado con una clave personal se registra como usted.
Utilice una clave API en su lugar
Utilice una clave API para CI, trabajos cron y agentes desatendidos, cuando no haya nadie presente para aprobar el inicio de sesión del navegador o cuando desee una credencial que Kanera aplique como de solo lectura. Crea uno en Configuración de perfil -> Claves API, o en Configuración del espacio de trabajo -> API cuando la credencial debe pertenecer a un espacio de trabajo y no a una persona. Ver API de Kanera por la diferencia.
kanera auth login --with-api-key
En Kanera alojado, esto abre su página de claves API en https://board.kanera.app/settings/api-keys, solicita la clave con el eco del terminal suprimido para que nunca llegue al desplazamiento hacia atrás del shell, la verifica con Kanera y la almacena.
Los cambios realizados con una clave personal se registran como usted, sin vía insignia, por lo que iniciar sesión en el navegador es la mejor opción cuando desea etiquetar el trabajo de un agente. Elige un Sólo lectura clave personal cuando la credencial es para un agente desatendido. La CLI informa el alcance que tiene y rechaza las escrituras de salida con un código distinto para que un agente pueda detenerse en lugar de volver a intentarlo.
kanera whoami # who am I, and what may this credential do?
kanera doctor # diagnose credentials, connectivity, and scope
En CI o en un entorno de pruebas de agente, omita por completo el perfil almacenado y configure KANERA_API_KEY.
Inspeccionar un cronograma
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
Utilice exactamente un alcance: un argumento posicional del tablero o --workspaceId. La lectura devuelve el Cronograma fechas planificadas del motor, duración y holgura de la jornada laboral, tarjetas críticas, conflictos, finalización proyectada y deslizamiento contra la última fecha de vencimiento. La actualización cambia las fechas guardadas y requiere acceso de escritura; no mueve a los sucesores automáticamente. Vuelva a leer el cronograma después de cambiar las fechas.
kanera my-day --json incluye conflictos de horarios, trabajo crítico y comienzos planificados perdidos; kanera portfolio --json devuelve el resumen compatible entre tableros, incluido el estado del cronograma por tablero. Las suscripciones a eventos requieren un cliente HTTP MCP alojado; no los proporciona el transporte estándar de CLI.
Comandos cotidianos
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
Los argumentos de tarjeta aceptan una clave de tarjeta como MKT-42, una identificación de tarjeta o una URL de tarjeta canónica, para que puedas pegar lo que tengas frente a ti. Se aceptan argumentos de fecha. YYYY-MM-DD o frases como "tomorrow 1pm" o "next friday", lee en la zona horaria de tu perfil: kanera card update MKT-42 --changes.dueDateLocalDate "friday 3pm".
kanera commands enumera todo lo que la CLI puede hacer y funciona antes de iniciar sesión. kanera commands --json es el catálogo legible por máquina que utiliza un agente para descubrir el resto.
Toda la superficie de la herramienta
Los comandos mencionados anteriormente son atajos ergonómicos sobre la capa de herramientas MCP de Kanera, las mismas herramientas que ve un agente de IA en MCP. Aún se puede acceder a cualquier cosa que no tenga un atajo:
kanera call cards.bulk_move --boardId "$BOARD" --cardIds[] MKT-42 --cardIds[] MKT-43 --listId "$LIST"
kanera help cards.bulk_move
Debido a que la CLI lee la capa de herramientas directamente en lugar de volver a implementar la API pública, su superficie de comando no puede desviarse de lo que ven los agentes, y una herramienta recién agregada se puede llamar desde el shell el día de su envío.
Separadores de tableros
Cree un divisor con título, opcionalmente de color, y colóquelo en relación con una tarjeta u otro separador:
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"
Para obtener un borde de lista, pase --anchor.side after --anchor.item null para la parte superior o --anchor.side before --anchor.item null para el fondo. La eliminación del separador no cambia las tarjetas. kanera card move Acepta el mismo ancla escrita, por lo que las tarjetas se pueden colocar inmediatamente antes o después de un separador.
Relaciones de tarjetas
Estos comandos se leen de izquierda a derecha: la primera tarjeta bloquea la segunda. Ambos deben pertenecer al mismo espacio de trabajo.
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
Para la dirección inversa o varios objetivos, utilice la herramienta subyacente:
kanera call cards.set_relations --cardId WEB-18 --direction blocked_by \
--otherCardIds[] MKT-42 --otherCardIds[] MKT-43
Pase --remove true para eliminar las relaciones seleccionadas. inspeccionar failed y notAttemptedCardIds en función de un resultado parcial: las adiciones exitosas permanecen guardadas cuando se rechaza otro objetivo. un resultado con relationsUnavailable nombres escritos exitosos en addedCardIds o removedCardIds cuando la lectura final falló. Las eliminaciones exitosas también se informan junto con los rechazos por tarjeta. Ver Relaciones de tarjetas y bloqueo para permisos, transferencias y advertencias de finalización.
Gráficos de dependencia
uso kanera deps para leer los requisitos previos y el trabajo posterior en una sola llamada:
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
Pase exactamente un alcance. Un argumento de tarjeta acepta su clave, UUID o URL canónica. Se agrega salida con alcance de tarjeta focus con directo blockedBy / blocks ID, transitivo upstream / downstream ID en primer orden más cercano, relatedTo, y onMap. Las tarjetas incluyen nombres legibles de tableros y listas y recuentos de bloqueadores activos/fuera del mapa. El resultado tiene un límite de 400 tarjetas e informes. truncated. Ver la referencia del gráfico MCP.
Argumentos
Las banderas se asignan a argumentos de herramientas y se fuerzan utilizando el esquema JSON propio de cada herramienta, nunca por la apariencia del valor: una clave de tarjeta puede parecer numérica y una identificación puede parecer booleana.
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"}}'
Un argumento de matriz también acepta una matriz JSON, la forma más sencilla de pasar una lista de objetos. Esto crea una lista de verificación, sus elementos y una sublista de verificación en una llamada, luego completa dos elementos en otra:
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}}]'
Banderas desconocidas, faltan argumentos obligatorios, formato incorrecto --json-args, y los argumentos posicionales excedentes son errores de uso. La CLI nunca descarta silenciosamente un operando.
Salida
| Bandera | Salida |
|---|---|
| (ninguno) | Tablas y resúmenes legibles por humanos |
--json | un { ok, tool, data } sobre |
--quiet | El resultado básico, para entubar jq |
Los fracasos siempre van a stderr, incluso en --json modo, por lo que redirigir stdout a un archivo nunca mezcla un sobre de error con lo que la persona que llama cree que son datos de resultados.
Las fallas transitorias y de velocidad limitada incluyen retryable y, cuando Kanera proporciona uno, retryAfter.
códigos de salida
| Código | Significado |
|---|---|
0 | Éxito |
1 | La solicitud falló |
2 | Mal uso |
3 | Sin credencial válida |
4 | Prohibido: a menudo es una credencial de solo lectura o no tiene función de editor en el tablero. |
5 | No encontrado |
6 | Tarifa limitada |
4 es deliberadamente distinto de 1. Un agente que tenga una clave de alcance de lectura debe decir "no puedo hacer esto" además de "esto no funcionó" y detenerse en lugar de volver a intentarlo.
Credenciales y perfiles
Orden de resolución: --api-key, entonces KANERA_API_KEY, luego un perfil almacenado, que contiene un inicio de sesión en el navegador o una clave API. Una clave explícita siempre gana, por lo que un trabajo de CI nunca se ejecuta a través del inicio de sesión personal de un desarrollador.
Los perfiles viven en ~/.config/kanera/config.json, escrito con modo 600. Los perfiles con nombre permiten que una máquina tenga varias identidades:
kanera auth login --profile agent --api-key "kanera_u_live_..."
kanera --profile agent work --json
| Comando | Propósito |
|---|---|
kanera auth login | Inicie sesión a través del navegador (--with-api-key o --api-key por una llave) |
kanera auth status | Mostrar la credencial activa y su alcance |
kanera auth list | Listar perfiles almacenados |
kanera auth token | Imprima la clave API activa, para KANERA_API_KEY=$(kanera auth token). Los inicios de sesión del navegador no tienen clave para imprimir. |
kanera auth logout | Eliminar un perfil almacenado y finalizar el inicio de sesión del navegador en el servidor |
Un repositorio puede seleccionar un perfil sin guardar un secreto, en .kanera/config.json:
{ "profile": "agent" }
Ese archivo no puede establecer un origen API. Los orígenes reciben la credencial de portador, por lo que un repositorio extraído no debe poder redirigir uno. uso --url, KANERA_PUBLIC_API_URL, o el origen guardado con el perfil durante auth login. Los orígenes sin bucle invertido deben utilizar HTTPS.
Actualizaciones
La CLI comprueba npm en busca de una versión más reciente como máximo una vez al día. Cuando encuentra uno, pregunta después de que finaliza su comando:
A new Kanera CLI is available: 1.7.0 → 1.8.0
Update now? [y/N]
respuesta y correr npm install --global @kanera/cli@<version>. Cualquier otra respuesta se salta la actualización. La CLI no vuelve a solicitar un día e imprime el comando para que pueda actualizarlo más tarde.
La CLI solo pregunta cuando una persona está en una terminal interactiva. Nunca revisa ni pregunta --json o --quiet modo, cuando la entrada o salida no es una terminal (que cubre agentes, scripts y canalizaciones), cuando CI está configurado, o cuando lo ejecutas npx, que recupera su propia copia. conjunto KANERA_NO_UPDATE_CHECK=1 para desactivar la verificación por completo.
Kanera autohospedada
Un inicio de sesión en el navegador está vinculado a la dirección MCP de su implementación, así que páselo durante el inicio de sesión:
kanera auth login --mcp-url https://your-kanera.example/mcp
O establecer KANERA_MCP_URL. La CLI lee los metadatos OAuth del servidor MCP para encontrar su página de inicio de sesión de Kanera, por lo que no es necesario configurar nada más.
Para una clave API, apunte la CLI a su API pública y se guardará con el perfil:
kanera auth login --with-api-key --url https://api.your-kanera.example
La CLI no puede determinar dónde reside una aplicación web autohospedada desde su origen API, por lo que con una clave API no abre un navegador. Cree la clave en su aplicación web Kanera en Configuración -> Claves APIy luego pégalo cuando se te indique.
O establecer KANERA_PUBLIC_API_URL por comando. kanera doctor informa el punto final que resolvió, que suele ser la forma más rápida de encontrar un origen mal configurado.
Úselo desde un agente de IA
Dos maneras y son complementarias.
Como herramienta de concha. Instale la CLI, proporcione al agente una clave de solo lectura y déjelo ejecutar comandos. kanera setup Escribe las instrucciones que el agente necesita:
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 es idempotente, por lo que volver a ejecutarlo después de una actualización no acumula secciones duplicadas en un archivo que también edita a mano. Añadir --global a setup claude instalar para su cuenta en lugar de un proyecto.
Cuando el agente ya haya conectado las herramientas Kanera MCP, utilícelas en lugar de la CLI. En cualquier transporte, las lecturas y actualizaciones de tarjetas admitidas no deberían recurrir a la automatización del navegador simplemente porque Kanera también tiene una interfaz web.
Como servidor MCP. kanera mcp sirve las mismas herramientas en stdio MCP usando la credencial que ya almacenó:
{
"mcpServers": {
"kanera": {
"command": "kanera",
"args": ["mcp"]
}
}
}
Esto significa uno kanera auth login cubre tanto su terminal como su cliente MCP, en lugar de una segunda credencial configurada en un segundo lugar. Con un inicio de sesión en el navegador, kanera mcp retransmite su servidor Kanera MCP y renueva el token a medida que se ejecuta. Habla tanto del protocolo MCP actual como de las revisiones anteriores, por lo que cualquier host MCP puede iniciarlo. Suscripciones a eventos no se ofrecen a través de stdio, ya que un host local no tiene una devolución de llamada alojada para realizar la entrega. Si su cliente admite MCP remoto con OAuth, también puede conectarlo directamente; ver Conecte Kanera con su agente de IA.
Requisitos del plan
Los inicios de sesión en el navegador y las claves API personales funcionan en todos los planes alojados, incluidos los gratuitos y los autohospedados. Kanera no tiene comprobaciones de planes. Se necesitan claves API de tablero y espacio de trabajo Pro o la prueba Pro; si una organización alojada pasa a ser gratuita, se revoca y kanera Los comandos que usan uno fallan con el código de salida. 3 o 4 hasta que se restablezca el plan. Las solicitudes siguen el Límites de tasa API de la organización del tablero, y el CLI espera y vuelve a intentarlo cuando los supera brevemente.