Saltar al contenido principal

Referencia CLI

La CLI de GRAIL es un wrapper sobre el SDK de Python. Cada subcomando hace una operación concreta y devuelve resultados con códigos de salida estándar.

Todos los comandos toman un directorio de proyecto como primer argumento posicional.

Tabla maestra

ComandoPara qué
grail initCrear un proyecto nuevo
grail indexPipeline completo de indexación (modo KB)
grail queryHacer una consulta sobre un proyecto indexado
grail appendAgregar archivos a un KB existente
grail editReemplazar el contenido de un archivo del KB
grail deleteEliminar archivos del KB
grail create-entitiesDescubrir tipos de entidad desde una muestra del corpus
grail consolidateGenerar propuestas de memoria (modo memoria)
grail proposals list/applyRevisar y aplicar propuestas
grail chatChat interactivo en terminal
grail uiChat web (FastAPI + React)
grail vizVisualización HTML del grafo
grail exploreExplorar artefactos del proyecto
grail export-neo4jExportar el grafo a Neo4j
grail statusEstado de los artefactos
grail config showConfiguración resuelta del proyecto
grail prompt list/showInspeccionar el registro de prompts

grail init

Crea un proyecto nuevo. Default: modo knowledge_base. Con --memory, modo memory.

grail init <project_dir> [opciones]
FlagTipoDescripción
--name NAMEstringNombre del proyecto. Default: nombre del directorio.
--memoryboolCrear proyecto en modo memoria (carpeta memories/).
--template NAMEstringPlantilla pre-configurada (low_cost_setup, etc.). Excluye --memory.
--templates-dir DIRpathDirectorio extra para buscar plantillas propias.
--list-templatesboolListar plantillas disponibles y salir.
--overwriteboolSobrescribir un scaffold existente.
--git / --no-gitboolIniciar repo git. Default: on para memoria, off para KB.

Ejemplos:

# KB con plantilla low-cost (recomendado para empezar)
grail init ./mi-kb --name mi-kb --template low_cost_setup

# Memoria con git auto-inicializado
grail init ./mi-mem --memory

# Listar plantillas disponibles
grail init --list-templates

grail index

Corre el pipeline completo de indexación: chunking → extracción → comunidades → reportes.

grail index <project_dir> [opciones]
FlagTipoDescripción
--discover-entities / --no-discover-entitiesboolLLM propone tipos de entidad desde el corpus antes de extraer.
--vectorstore NAME, --vsstringVector store: lancedb (default) | faiss | chromadb.

Ejemplos:

grail index ./mi-kb
grail index ./mi-kb --discover-entities --vs faiss

grail query

Responde una pregunta sobre un proyecto indexado.

grail query <project_dir> "<pregunta>" [opciones]
FlagTipoDescripción
--mode MODE, -mstringlocal (default) · cascade · global · document · agent · recall
--document NAME, -dstringRequerido para --mode document. Nombre/path/doc-id del archivo.
--rerank / --no-rerankboolOverride del reranker config para esta consulta.
--trace DIR, -tpathVolcar prompts, respuestas y contexto a JSON.
--output FMT, -ostringtext (panel rich) o json.
--vectorstore NAMEstringOverride del vector store para esta query.

Filtros de recall (combinables con cualquier modo):

FlagTipoDescripción
--since DELTAstringISO-8601 (2026-05-01) o relativo (1h, 7d, 2w).
--before DELTAstringIgual que --since pero límite superior.
--category GLOBstringGlob de carpeta (work/clients/**).
--tag TAGstringTag filter (repetir para "cualquiera de estos").
--entity-name NAMEstringRestringir a observaciones que mencionen esta entidad.
--type TYPEstringRestringir a entidades de este tipo (PERSON, ORGANIZATION, ...).
--min-confidence FLOATfloatConfianza mínima.

Ejemplos:

# Cascade clásico
grail query ./mi-kb "¿Cuánto cubre FONASA?" --mode cascade

# Agent con trace
grail query ./mi-kb "Compara X y Y" --mode agent --trace ./traces

# Recall puro (sin LLM)
grail query ./mi-mem --mode recall --since 7d --tag decision

# Cascade acotado a memoria reciente
grail query ./mi-mem "¿Por qué Acme eligió Postgres?" \
--mode cascade --since 30d --category "work/clients/acme/**"

# Output JSON para parseo por scripts
grail query ./mi-kb "..." --mode cascade --output json

grail append / grail edit / grail delete

Actualizaciones incrementales al KB. Re-extraen solo los chunks afectados.

grail append <project_dir> file1 [file2 ...]
grail edit <project_dir> --name NAME --src LOCAL_PATH
grail delete <project_dir> name1 [name2 ...]

Ejemplos:

grail append ./mi-kb papers/2026-new.pdf docs/spec.md
grail edit ./mi-kb --name spec.md --src /tmp/spec-updated.md
grail delete ./mi-kb obsolete.txt draft.md

grail create-entities

LLM propone tipos de entidad leyendo una muestra del corpus. Útil para dominios especializados (legal, médico, técnico).

grail create-entities <project_dir> [--write]
FlagTipoDescripción
--writeboolPersistir los tipos propuestos en grail.yaml.

Sin --write, solo imprime los tipos a stdout.


grail consolidate (modo memoria)

Corre los análisis de propuestas: Leiden + densidad de aristas + alias-detección + folder-split.

grail consolidate <project_dir> [--output text|json]

Comportamiento clave: no muta nada. Solo genera un archivo output/proposals/<timestamp>.json con propuestas para que revises.


grail proposals list / grail proposals apply

Inspecciona y aplica propuestas generadas por consolidate.

grail proposals list <project_dir> [--status pending|accepted|rejected]
grail proposals apply <project_dir> [--accept ID] [--reject ID]

Ejemplos:

grail proposals list ./mi-mem
# 5 propuestas pendientes:
# abc123: merge_aliases (confianza 0.92)
# def456: discover_community (confianza 0.78)
# ...

grail proposals apply ./mi-mem --accept abc123
grail proposals apply ./mi-mem --reject def456

grail chat (TUI)

Chat en terminal con sesiones persistentes en SQLite. Streaming, slash commands, render markdown.

grail chat <project_dir> [opciones]
FlagTipoDescripción
--mode MODE, -mstringModo inicial: agent (default) | local | cascade | global | document.
--session ID, -sstringReanudar sesión existente (por prefijo de ID).
--db PATHpathOverride del SQLite (default: <project>/.grail/chat.db).

Dentro del chat, usa /help para ver slash commands disponibles.


grail ui (chat web)

Chat web con backend FastAPI y frontend React.

grail ui <project_dir> [opciones]
FlagTipoDescripción
--host HOST, -hstringBind address. Default: 127.0.0.1.
--port PORT, -pintPuerto. Default: 8765.
--devboolHabilita CORS para Vite dev server en :5173.
--debugboolImprime cada prompt y respuesta de LLM con colores.

grail viz

Renderiza el grafo de entidades+relaciones a un HTML interactivo.

grail viz <project_dir> [opciones]
FlagTipoDescripción
--output FILE.htmlpathArchivo HTML de salida. Default: graph.html del proyecto.
--open-browserboolAbre el HTML después de generar.
--layout-seed NintSemilla del layout (para reproducibilidad).
--layout-iterations NintIteraciones del layout force-directed.

grail explore

Browser interactivo de los artefactos del proyecto (documentos, entidades, relaciones, comunidades).

grail explore <project_dir> [--output text|json]

grail export-neo4j

Empuja el grafo a una BD Neo4j.

grail export-neo4j <project_dir> [opciones]
FlagTipoDescripción
--uri URIstringBolt URI. Default: bolt://localhost:7687.
--username USERstringDefault: neo4j.
--password PWstringPassword.
--database DBstringDatabase name. Default: neo4j.
--clearboolLimpia el database antes de cargar.
--no-apocboolNo usar APOC procedures (compatibilidad).
--batch-size NintTamaño de batch para los UNWIND. Default: 1000.

grail status

Muestra qué artefactos existen, su tamaño y fecha.

grail status <project_dir>

grail config show

Imprime la configuración resuelta (después de aplicar defaults, env vars y merges).

grail config show <project_dir>

Útil para debugging: ver exactamente qué configuración va a usar GRAIL.


grail prompt list / grail prompt show

Inspecciona el registro de prompts (incorporados + custom).

grail prompt list [<project_dir>]
grail prompt show <prompt_name> [<project_dir>]

Ejemplo:

grail prompt list # listar prompts disponibles
grail prompt show entity_relation # ver el prompt completo de extracción

Variables de entorno globales

VariablePropósito
GRAIL_LOG_LEVELNivel de log del logger grail.*. Default: WARNING.
OPENAI_API_KEYAPI key para endpoint openai.
DEEPINFRA_API_KEYAPI key para endpoint deepinfra.
ANTHROPIC_API_KEYAPI key para endpoint anthropic.
TOGETHER_API_KEYAPI key para endpoint together.
GROQ_API_KEYAPI key para endpoint groq.
OPENROUTER_API_KEYAPI key para endpoint openrouter.

Las API keys también se leen del archivo .env del proyecto si existe.


Códigos de salida

CódigoSignificado
0OK
1Error de usuario (argumento inválido, archivo faltante)
2Error de configuración o de API (LLM no disponible, key faltante)

Siguiente paso