Servidor xamiSDK — Comandos (CLI)
Todos los comandos del CLI xamisdk. Ejecuta xamisdk <comando> --help para ver la
ayuda de cada uno.
Pareo y estado
init
Ceremonia de pareo con Xami (única). Establece el canal seguro.
xamisdk init --sdk-key xsdk_live_... --secret ...
| Opción | Descripción |
|---|---|
--sdk-key |
Matrícula (xsdk_live_...). |
--secret |
Secret de la matrícula. |
--receive-url |
URL donde Xami empujará los resultados (modo push). Por defecto http://127.0.0.1:8300/receive. En modo pull no se usa. |
--endpoint |
Endpoint de Xami (por defecto https://api.xami.run). |
--force |
Rehace la ceremonia aunque ya esté pareado. |
status
Muestra el estado del pareo: matrícula, tenant, endpoint, versión y estado de las llaves.
xamisdk status
Caché local
El SDK guarda una copia local de tus credenciales y diseños de firma para firmar sin
consultar a Xami en cada operación. La caché se sincroniza automáticamente al levantar
serve; si editas algo en la consola, ejecuta xamisdk sync para tomar el cambio sin
reiniciar el servicio. (El detalle de esta sincronización está en Instalar.)
cache:show
Resumen de la caché local (cuántas credenciales y diseños hay sincronizados).
xamisdk cache:show
credentials:list
Lista las credenciales que el SDK tiene en caché, con su credential_key. Útil para
confirmar con qué puedes firmar. Si sale vacío, levanta serve para sincronizar.
xamisdk credentials:list
designs:list
Lista los diseños de sello en caché, con su design_key. Si el sello no aparece al firmar,
verifica aquí que el diseño esté presente (si no, reinicia serve).
xamisdk designs:list
designs:show
Detalle de un diseño concreto.
xamisdk designs:show <design_key>
sync
Vuelve a descargar las credenciales y los diseños desde Xami y reemplaza la caché local con esa información fresca, sin reiniciar el servicio. Es una sincronización real: lo que ya no existe en el servidor (por ejemplo, credenciales de un chip dado de baja) también se elimina de la caché local. Úsalo cuando cambiaste un diseño o una credencial en la consola de Xami y quieres que el SDK lo tome de inmediato.
xamisdk sync
reinstall
Actualiza el SDK a la última versión publicada. Comprueba si hay una versión más
reciente; si la hay, lanza una ventana nueva que hace todo el ciclo por ti: detiene el
servicio, reinstala el paquete, lo vuelve a levantar y abre la consola. Si ya estás al
día no hace nada (usa --force para reinstalar igual). Como un programa no puede
reemplazarse a sí mismo mientras corre, la consola actual se cierra y la actualización
continúa en la ventana nueva.
xamisdk reinstall
xamisdk reinstall --force
Es un subcomando: se escribe
xamisdk reinstall, noreinstalla secas. La primera vez (cuando tu versión aún no trae el comando) actualiza a mano conpython -m pip install --force-reinstall --no-cache-dir <url-del-wheel>. Ver la guía de instalación para el detalle.
Firma de documentos (PAdES)
pades:sign
Firma un PDF. El documento no sale de tu red.
xamisdk pades:sign --credential-key TU_CREDENCIAL --wait documento.pdf
| Opción | Descripción |
|---|---|
pdf |
Ruta del PDF a firmar (posicional, requerido). |
--credential-key |
Credencial a usar (requerido). |
--design |
design_key (si no, se usa el diseño por defecto de la credencial). |
--var clave=valor |
Variable del sello. Repetible. |
--reason |
Razón de la firma. |
--location |
Lugar de la firma. |
--signer-name |
Nombre del firmante. |
--out |
Ruta de salida del PDF firmado. |
--wait |
Espera el resultado y guarda el PDF. |
--timeout |
Segundos de espera en modo --wait (por defecto 60). |
Firma blockchain (EVM)
blockchain:sign
Firma el hash (keccak256) de una transacción EVM. El chip actúa como wallet y devuelve
la firma r/s/v; tú ensamblas la transacción con tu web3.
xamisdk blockchain:sign <hash> --credential-key TU_CREDENCIAL_EVM --chain-id 648541 --wait
| Opción | Descripción |
|---|---|
hash |
keccak256 de la tx (64 hex, con o sin 0x) (posicional, requerido). |
--credential-key |
Credencial EVM / wallet (requerido). |
--chain-id |
Chain id (EIP-155). |
--wait |
Espera r/s/v. |
--timeout |
Segundos de espera (por defecto 60). |
Resultados por push
callbacks:list
Lista los resultados de firma recibidos por push.
xamisdk callbacks:list
callbacks:show
Detalle de un resultado de firma por su id.
xamisdk callbacks:show <request_id>
Credenciales de librería (wrapper)
Para que una aplicación externa firme a través del servicio HTTP local, necesita una credencial de acceso. Estos comandos la gestionan.
wrapper:create
Emite una credencial para una aplicación. Devuelve wrapper_key y wrapper_secret.
xamisdk wrapper:create --name mi-aplicacion
| Opción | Descripción |
|---|---|
--name |
Nombre de la aplicación (requerido). |
wrapper:list
Lista las credenciales de aplicación emitidas.
xamisdk wrapper:list
wrapper:revoke
Revoca una credencial de aplicación.
xamisdk wrapper:revoke <wrapper_key>
Servicio HTTP
serve
Levanta el servicio HTTP local del xamiSDK, para que tus aplicaciones firmen a través de una librería (XamiLib). Al arrancar, sincroniza tu configuración (credenciales y diseños) desde Xami y registra un log con fecha y nivel (INFO/WARN/ERROR).
xamisdk serve --port 8300
Modo pull (recomendado para probar desde una PC detrás de NAT): Xami no te empuja los
resultados; el SDK los recoge por polling. Añade --polling con el intervalo en
segundos:
xamisdk serve --port 8300 --polling 2
| Opción | Descripción |
|---|---|
--host |
Host de escucha (por defecto 127.0.0.1). |
--port |
Puerto (por defecto 8300). |
--polling |
Intervalo en segundos para recoger resultados de Xami (modo pull). -1 (por defecto) = inactivo (modo push, Xami empuja al receive_url). |
Sesión y token (automático)
El SDK mantiene la sesión con Xami por su cuenta: el token de acceso se renueva
automáticamente cuando caduca, sin que tengas que volver a parear. Solo necesitas ejecutar
init una vez; a partir de ahí el servicio puede correr durante días sin interrupciones por
expiración del token.
Si en algún momento la licencia fue revocada o el secret ya no es válido, el SDK te lo dirá
con un mensaje claro y te pedirá volver a parear con init --force.
Registro de actividad y errores
Toda la actividad se registra con fecha y nivel (INFO / WARN / ERROR) en un log
unificado (activity.log, en la carpeta del SDK), que reúne lo que ocurre en el
servicio y en los comandos que ejecutas.
- Cada comando que ejecutas deja un evento en el log; si un comando falla, queda
registrado como
ERROR. - Una firma deja su traza paso a paso (petición creada, hash calculado, hash enviado,
resultado recibido, ensamblado, entregado), identificada por su
request_id. - Cuando una operación falla, su traza completa se guarda además en
errors.log, para poder revisar exactamente hasta dónde llegó. Las operaciones que terminan bien no se guardan ahí (el archivo solo contiene los casos con error).
Desde la consola interactiva puedes seguir este log en vivo con logs -f (ver Console).
Soporte y diagnóstico
report
Cuando una firma no sale como esperabas y necesitas ayuda, este comando arma un reporte técnico de ese request y lo envía a Xami para dar soporte. Antes de enviar nada, te muestra exactamente qué información se incluirá y te pide confirmación.
xamisdk report <requestId>
El requestId es el identificador que aparece (en verde) al firmar y en el log de
actividad. El reporte incluye solo información no confidencial útil para el
diagnóstico:
- La versión y el build exacto del SDK que estás ejecutando.
- El endpoint de Xami y el estado de tu caché (cuántas credenciales y diseños, con sus identificadores y dispositivos — sin secretos).
- El resultado y el registro detallado de ese request.
No se envía tu llave privada, tu token de acceso ni el contenido de tus documentos.
Al recibirlo, Xami genera un número de incidente (por ejemplo INC-20260808-4A1B2C)
que se muestra en pantalla. Menciónalo al pedir soporte: con él, el equipo de Xami puede
ver exactamente qué build corre tu SDK y qué ocurrió en ese request, y ayudarte más rápido.
