Diagrama realizado con https://savnet.co
Pedirle a un agente de IA que construya un sistema empresarial completo con código tiene un problema conocido: el contexto se vuelve demasiado grande.
Un formulario con 4 campos es sencillo. Un sistema con 60 campos, relaciones, permisos, vistas, formularios, calendarios, tableros Kanban, gráficas, archivos y reglas de negocio ya no lo es. El agente empieza a tener lagunas, olvida decisiones anteriores, duplica lógica o termina rompiendo partes del código que él mismo había creado.
En Savne exploraron otra ruta: usar Saltcorn como lienzo no-code.
Saltcorn ofrece un marco estable para construir aplicaciones: tablas, campos, vistas, páginas, formularios, menús, relaciones, permisos y plugins de interfaz. Esto reduce la carga mental y de contexto que debe mantener la IA. En vez de pedirle que invente una aplicación completa desde cero, le pedimos que opere dentro de una plataforma ya estructurada.
El problema: Saltcorn no expone una API suficientemente completa para que un agente pueda construir y modificar aplicaciones de forma fluida.
Ahí entra savne-saltcorn-agent-api
https://github.com/OscarSanchezSavne/savne-saltcorn-agent-api
¿Qué es savne-saltcorn-agent-api?
Es un plugin para Saltcorn que expone una API administrativa pensada para agentes, scripts y herramientas de automatización.
La idea no es crear una segunda capa de aplicación por fuera de Saltcorn. Saltcorn sigue siendo la fuente de verdad.
El plugin permite que un agente pueda:
- Inspeccionar tablas, vistas, páginas, plugins y menús existentes
- Crear tablas, campos y relaciones
- Insertar datos de prueba
- Crear vistas List, Show, Edit, Tabulator, Kanban, Calendar y Charts
- Crear páginas y páginas públicas
- Modificar menús de forma controlada
- Crear layouts avanzados de formularios
- Trabajar con relaciones many-to-many
- Crear triggers, actions y webhooks avanzados (bajo solicitud explícita)
- Consultar un contrato OpenAPI
- Seguir una skill diseñada para reducir errores y operaciones peligrosas
Por qué esto ayuda a la IA?
Cuando el agente programa todo desde cero, debe mantener en contexto:
- Estructura de base de datos
- Validaciones
- Formularios
- Endpoints
- Estados de UI
- Permisos
- Estilos
- Navegación
- Reglas de negocio
- Dependencias
- Migraciones
- Convenciones internas
Con Saltcorn, buena parte de eso ya existe como modelo de trabajo. El agente no necesita inventar una arquitectura nueva; necesita describir operaciones concretas sobre Saltcorn.
Esto reduce el riesgo de que el sistema termine dividido en dos capas frágiles:
- Una capa de código generada por IA
- Una capa de contexto que el agente intenta recordar
Tarde o temprano esa segunda capa se rompe. Con este plugin, Saltcorn guarda la estructura real del sistema y la API permite modificarla de forma explícita.
HTML manual vs request a Saltcorn
Supongamos que queremos un formulario simple de productos con 4 campos.
En HTML podríamos empezar así:
<form method="post" action="/products">
<label for="code">Código</label>
<input id="code" name="code" type="text" required>
<label for="name">Producto</label>
<input id="name" name="name" type="text" required>
<label for="stock">Stock</label>
<input id="stock" name="stock" type="number" min="0">
<label for="active">Activo</label>
<input id="active" name="active" type="checkbox">
<button type="submit">Guardar</button>
</form>
Eso parece poco, pero no incluye:
- Tabla en base de datos
- Validaciones persistentes
- Vista de listado
- Vista de edición
- Permisos
- Modal de creación
- Menú
- API
- Exportación
- Relación con otras tablas
- Estilos consistentes con la aplicación
Con savne-saltcorn-agent-api, el agente puede pedirle a Saltcorn que cree la tabla:
{
"name": "products",
"label": "Productos",
"fields": [
{ "name": "code", "label": "Código", "type": "String", "required": true, "unique": true },
{ "name": "name", "label": "Producto", "type": "String", "required": true },
{ "name": "stock", "label": "Stock", "type": "Integer" },
{ "name": "active", "label": "Activo", "type": "Bool" }
],
"dry_run": true
}
Y luego crear vistas básicas:
{
"table": "products",
"labels": {
"view": "Ver",
"edit": "Editar",
"delete": "Eliminar",
"save": "Guardar"
},
"dry_run": true
}
En vez de gastar contexto generando HTML, backend, rutas y persistencia, el agente describe la intención. Saltcorn conserva el modelo real y el plugin ofrece una forma segura de operar sobre él.
Despliegue Saltcorn con docker
Para empezar, lo primero que debemos hacer es desplegar nuestra instancia Salcorn y para ello nos apoyaremos en docker y este manifiesto:
# docker-compose.yml
services:
postgres:
image: postgres:16-alpine
container_name: saltcorn-postgres
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- ./saltcorn_pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 10
networks:
- saltcorn_net
ports:
- "5432:5432"
saltcorn:
image: saltcorn/saltcorn:latest
container_name: saltcorn-app
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
command: serve
environment:
PGHOST: postgres
PGPORT: 5432
PGDATABASE: ${POSTGRES_DB}
PGUSER: ${POSTGRES_USER}
PGPASSWORD: ${POSTGRES_PASSWORD}
SALTCORN_SESSION_SECRET: ${SALTCORN_SESSION_SECRET}
SALTCORN_FILE_STORE: /opt/saltcorn/files
volumes:
- ./saltcorn_files:/opt/saltcorn/files
- ./saltcorn_external_packages:/opt/saltcorn_external_packages
ports:
- "3000:3000"
networks:
- saltcorn_net
networks:
saltcorn_net:
name: saltcorn_net
Adicional, manejaremos un archivo .env para nuestras variables:
#.env
POSTGRES_DB=saltcorn
POSTGRES_USER=postgres
POSTGRES_PASSWORD=Here_password_Strong
SALTCORN_SESSION_SECRET=Here_Secret_random
Luego de tener nuestros archivos ejecuta los siguientes comandos para desplegar nuestra nueva instancia:
#Solo levantamos postgres
docker compose up -d postgres
# Creación de esquema en Base de datos
# Dale Yes cuando pida la confirmación
docker compose run --rm saltcorn reset-schema
#Reinicio de servicios
docker compose down
docker compose up
Los comandos anteriores solo se ejecutan la primera vez, luego solo debes ejecutar un docker compose up para que todo funcione.
Si todo fue exitoso, ve a http://localhost:3000 y deberás ver una pantalla para crear tu primer usuario en Saltcorn
Luego de crear tu usuario, continuemos con la instalación de nuestro plugin.
Instalación desde GitHub
En Saltcorn, abre (http://localhost:3000/plugins/new):
Setup/Modules -> Add another plugin
Usa estos datos:
Nombre: savne-saltcorn-agent-api
Fuente: github
Ubicación: OscarSanchezSavne/savne-saltcorn-agent-api
Versión: v0.2.56
Para seguir la rama principal:
Nombre: savne-saltcorn-agent-api
Fuente: github
Ubicación: OscarSanchezSavne/savne-saltcorn-agent-api
Versión: main
Después de instalar, reinicia Saltcorn si la interfaz no registra las rutas inmediatamente.
Adicional a nuestro plugin se recomiendan estos plugins para mejorar la experiencia:
- charts
- flatpickr-date
- fullcalendar
- html
- json
- kanban
- leaflet-map
- many-to-many
- markdown
- material-design
- mermaid
- money
- multi-file-upload
- pivottable
- qrcode
- selectize
- tabulator
- time-type
Si todo fue exitoso, podras ver nuestro card:
Al darle click en el icono de interrogación, podrás encontrar la url para la especificaci[on de openapi y de swagger, con lo cuál tendrás más información:
Las operaciones administrativas requieren token de usuario Saltcorn:
Authorization: Bearer <saltcorn-user-api-token>
El cuál lo puedes obtener a nivel de tu usuario http://localhost:3000/auth/settings, recuerda, el token debe corresponder a un usuario admin:
Integración en nuestro Agente IA
Para enseñarle a nuestro agente a usar Saltcorn, solo tienes que descargar nuestra skill:
Forma de integrarlo según el agente que uses:
-
Claude Projects / Custom GPTs / Copilot: copia el contenido de
SKILL.mddirectamente en las instrucciones del sistema del agente. -
Agentes vía API (OpenAI, Anthropic, etc.): pasa el contenido como mensaje del sistema (
systemrole) al inicio de cada conversación. - n8n / Make / automatizaciones: usa el archivo como prompt base del nodo de IA.
La skill define:
- Qué endpoints llamar según la intención
- Qué parámetros enviar
- Qué no hacer (dry_run primero, no borrar sin permiso, etc.)
- Cómo interpretar las respuestas del plugin
Sin esta skill, el agente opera a ciegas. Con ella, sabe exactamente cómo comportarse.
Cómo se lo pides al agente:
Ejemplo 1 — Sistema de inventario:
"Crea una app de inventario con productos, categorías y movimientos de entrada/salida. Cada producto debe tener código, nombre, stock y precio. Quiero una vista Kanban por categoría y un calendario de movimientos."
El agente interpreta, inspecciona el estado actual de Saltcorn, planea las tablas y vistas, y las crea paso a paso con dry_run: true para que revises antes de ejecutar.
Ejemplo 2 — Encuesta pública con validación:
"Necesito una encuesta pública de clima laboral. Que guarde las respuestas anónimas, pero que no permita duplicados por IP en 24 horas. Si la puntuación general es menor a 3, quiero que envíe un webhook a un canal de Slack."
Cierre
No se trata de reemplazar Saltcorn con IA. Se trata de darle a la IA un marco estable donde operar.
Saltcorn aporta la estructura no-code. savne-saltcorn-agent-api aporta una API segura, documentada y pensada para agentes. La skill aporta las reglas de uso para que el agente no tenga que adivinar.
El resultado es una forma más confiable de construir sistemas pequeños y medianos con ayuda de IA, sin obligar al usuario final a convertirse en programador y sin pedirle al agente que cargue todo el sistema en memoria como si fuera magia.
Enlaces relacionados:






Top comments (0)