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​