- Un experimento que construye un servidor web sin ninguna lógica de aplicación, haciendo que el LLM procese todas las solicitudes
- El servidor simplemente recibe solicitudes HTTP y le pregunta al LLM “¿qué se debe hacer?”, y el LLM se encarga de todo lo demás
- El servidor usa solo tres herramientas: database, webResponse y updateMemory para realizar funciones CRUD
- El LLM realiza por sí mismo el diseño del esquema SQL, la generación de HTML y JSON, y la incorporación de retroalimentación, implementando una app básica de gestión de contactos
- La velocidad de respuesta es de 30 a 60 segundos, el costo es 100 a 1000 veces mayor que el de una app web tradicional, y existen problemas de consistencia de UI y memoria
- Aun así, demuestra la posibilidad de implementar una app CRUD completa que funciona sin código, sugiriendo que el código en sí podría ser un concepto transitorio
Contexto
- Todo comenzó con la idea medio fantasiosa (Shower Thought) de que “algún día ya no tendremos que escribir código”
- En el futuro, los LLM podrían procesar entradas en tiempo real y generar video a 120 fps, haciendo posible una computación puramente basada en intención, sin apps ni código
- En la realidad, esto sigue estando en el terreno de la ciencia ficción, pero durante un fin de semana decidió probar como experimento hasta dónde se puede llegar con la tecnología actual
- La hipótesis del experimento partía esperando un fracaso
- Mientras la mayoría de la IA se enfoca en generar código (por ejemplo, Claude Code, Cursor, Copilot, etc.),
se creó este proyecto para validar otra perspectiva: “¿y si omitimos por completo la generación de código?”
- Como resultado, se creó un servidor HTTP sin rutas, controladores ni lógica de negocio, que funciona preguntándole al LLM en cada solicitud: “¿qué se debe hacer?”
- El objetivo del experimento es demostrar qué tan lejos está realmente ese futuro
Resumen del proyecto
- nokode es un experimento que pone a prueba una arquitectura en la que se construye un “servidor web sin lógica de aplicación” y el LLM procesa todas las solicitudes
- El servidor simplemente recibe solicitudes HTTP y le pregunta al LLM “¿qué se debe hacer?”, y el LLM hace todo lo demás
- El objetivo es validar si un LLM puede ejecutar directamente la lógica de la aplicación sin generar código
- El caso de prueba es una app de gestión de contactos (contact manager), con funciones CRUD básicas (crear, consultar, editar y eliminar)
Arquitectura del sistema
- El backend está compuesto por solo 3 herramientas
- database: ejecuta SQL en SQLite, y el LLM diseña directamente el esquema
- webResponse: genera respuestas en el formato adecuado, como HTML, JavaScript o JSON
- updateMemory: guarda la retroalimentación del usuario en Markdown para consultarla en solicitudes futuras
- Por ejemplo, ante una solicitud a
/contacts genera una página HTML, y ante /api/contacts genera una respuesta JSON
- Cada página incluye un widget de retroalimentación, que aplica de inmediato solicitudes como “haz los botones más grandes” o “cámbialo a tema oscuro”
Resultados del experimento
- Funcionalmente sí logró funcionar
- El envío de formularios, el guardado de datos, la visualización de la UI y las respuestas de la API funcionaron correctamente
- Incluso sin ejemplos, el LLM generó un esquema de base de datos adecuado, SQL seguro, una API de estilo REST, diseño responsivo, validación de formularios y manejo de errores
- Problemas de rendimiento
- Cada solicitud tarda entre 30 y 60 segundos, lo que lo hace 300 a 6000 veces más lento que una app web convencional (10 a 100 ms)
- El costo por solicitud es de $0.01 a 0.05, por lo que resulta 100 a 1000 veces más caro
- Hay inconsistencias en colores y layout de la UI, imposibilidad de recordar el estado previo, y si genera SQL incorrecto ocurre un error inmediato
- Intentos de optimización del prompt como “⚡ THINK QUICKLY” incluso empeoraron la velocidad
Conclusión e implicaciones
- Los LLM sí tienen la capacidad de ejecutar directamente la lógica de una aplicación
- El problema está en las limitaciones de rendimiento, como velocidad, costo, consistencia y confiabilidad
- Sin embargo, estas limitaciones parecen pertenecer más al terreno de las mejoras cuantitativas que de problemas cualitativos
- La velocidad de inferencia mejora aproximadamente 10 veces por año
- Los costos vienen bajando
- La expansión de la longitud de contexto podría mejorar la memoria
- La tasa de errores muestra una tendencia a la baja
- En consecuencia, podría estar más cerca la “era en la que la IA ejecuta directamente” que la “era en la que la IA escribe código”
- Lo único que queda hoy es código a nivel de infraestructura, como configuración HTTP, definición de herramientas y conexión a la base de datos,
lo que sugiere a largo plazo una transición hacia una “computación donde solo existan la intención y la ejecución”
Cómo ejecutarlo
- Después de
npm install, configura el proveedor de LLM y la API key en el archivo .env
- Ejecuta
npm start y entra a http://localhost:3001 (la primera solicitud tarda entre 30 y 60 segundos)
- Puedes modificar
prompt.md para cambiar el tipo de app o sus funciones
- También puedes probar varias rutas como
/game, /dashboard, /api/stats
- La retroalimentación como “make this purple” o “add a search box” se aplica de inmediato
- El costo por solicitud ronda entre $0.001 y 0.05 según el modelo
- Publicado bajo licencia MIT
2 comentarios
La cuestión será hasta qué punto la computación se volverá más rápida y barata.
Si en el futuro un servidor promedio llega a ser 100 mil veces más rápido que ahora, y aun así los costos de operación o de instalación se mantienen iguales, eso también podría ser una forma válida de hacerlo.
Así como, a medida que la computación se abarató, pasamos del lenguaje de máquina a C, y de C a Node.js o Python, quizá en el futuro pasemos a los LLM.
Muchas cosas van a cambiar, y a su manera parece que será interesante. También surgirán muchas oportunidades.
Opiniones en Hacker News
Yo también he estado pensando algo parecido
Empecé a pensar esto cuando apareció ChatGPT 3.5
Puede que algún día la IA reemplace por completo a los programas, pero el verdadero punto clave es encontrar la abstracción correcta
Por ejemplo, así como la transición de CVS a Git abrió la era de los microservicios, una buena abstracción tiene el poder de cambiar el problema de raíz
Para que un LLM descubra este tipo de abstracciones por sí mismo, tendría que aprender interactuando con el mundo real durante mucho tiempo
Si se agregaran herramientas para que el LLM pudiera modificar archivos de código directamente, creo que mejorarían mucho la velocidad de respuesta y la consistencia
El código terminaría funcionando como una especie de memoria (memory)
Enviarle solicitudes HTTP directamente al LLM sería algo parecido a un fallo de caché, y también se podría mantener un mecanismo de retroalimentación que dispare actualizaciones de código
Hay mucho margen de optimización, pero en términos prácticos, el enfoque tradicional de programación probablemente siga siendo más eficiente
Suena como preguntar: “Si es posible un comportamiento no determinista, ¿por qué insistir en que sea determinista?”
Pero no creo que la mayoría de la gente quiera una webapp que funcione distinto cada vez
El código determinista tiene límites para abordar problemas complejos, y un enfoque más flexible, parecido al humano, podría ser más adecuado
Pero en el futuro tendrán capacidades de salida y almacenamiento mucho más ricas
Por ejemplo, un LLM podría generar enlaces que, al hacer clic, lancen nuevas consultas internamente, o podría gestionar una base de datos temporal
La experiencia del usuario cambia constantemente por actualizaciones automáticas, pruebas A/B, cambios de UX, etc.
Curiosamente, este enfoque puede funcionar solo con la ventana de contexto, sin herramientas aparte
En julio de 2025 hice una PoC
Este experimento muestra muy bien cómo podría cambiar el concepto de código boilerplate
Si ejecutas varias instancias en paralelo dentro de un sandbox y entregas el mejor resultado según una evaluación interna, eso se convierte en una especie de meta reinforcement learning
Aun así, es difícil traducir la intención del usuario a una salida determinista y, por otro lado, las apps tradicionales carecen de flexibilidad
Al final, la clave es cómo implementar de forma estable la evaluación de intención (intent evaluation)
Crear un buen método de evaluación es casi tan complejo como crear un modelo de IA
Procesar solicitudes de la manera tradicional es mucho más rentable que usar un LLM directamente
Aproximadamente, generar 10 tokens con un modelo de 7 mil millones de parámetros requiere más de 100 GFLOPs
Es un desperdicio enorme de energía
Si trabajas en IT empresarial, la ineficiencia humana tampoco es nada menor
Incluso la ineficiencia puede volverse tendencia
Tal vez bastaría con poner un LLM en el puerto 443 y decirle: “eres un servidor HTTPS y también un servidor de aplicaciones” ;)
¿De verdad hace falta una webapp? ¿No bastaría con hablar con la computadora por voz?
“Muéstrame las fotos que tomé en las vacaciones del año pasado, quítales las nubes y mándaselas a mi amigo”
“Pon un temporizador para ejercicio, pero saca los jumping jacks”
“Créame un beat techno estilo Detroit”
“Búscame una cita para esta noche, prefiero cabello negro”
Me imagino un mundo donde todo se resuelva hablando así
Al final, la humanidad podría dividirse entre quienes lo acepten y quienes lo rechacen
Ya se ven señales de eso en fenómenos como el regreso del vinilo
Incluso entre humanos muchas veces se prefiere el texto
Sirve para tareas, compras y agenda, y está completamente personalizada a mis necesidades
Las tareas complejas pueden expresarse bastante bien por voz, pero para las tareas simples y repetitivas una UI sigue siendo más eficiente
Por ejemplo, si dices “cómprame pantalones” y hay que elegir uno entre 30 resultados, al final necesitas una interfaz visual
Yo también subí una PoC parecida a GitHub
Al principio uso un “modelo de diseño” lento para crear el tema de la app y el esquema de la base de datos, y después un modelo rápido para manejar las respuestas
Probé usar PostREST para meter la lógica en la base de datos, pero fallaba seguido al generar el esquema o producía consultas incorrectas
Usé una librería de CSS para mantener la consistencia de la UI, e hice que recordara la página anterior
Creo que este enfoque podría servir como un App Bench para evaluar si un LLM puede crear una app completa de una sola vez