[PITCH] Estou criando um Framework de Agentes de IA local para Bun porque cansei do LangChain
Salve, pessoal.
Recentemente, me deparei com uma barreira que acredito que vai se tornar cada vez mais comum no nosso mercado: a delicadeza de processar dados sensíveis com LLMs de terceiros.
Empresas (especialmente Enterprise) estão barrando o envio de dados de clientes para a OpenAI/Anthropic por questões de compliance e sigilo. A solução óbvia é rodar modelos locais (Llama 3, Mistral, Qwen), que estão ficando absurdamente bons e eficientes.
Mas quando fui tentar montar uma stack robusta para isso no ecossistema JavaScript, a experiência foi frustrante.
Os problemas que encontrei:
- A complexidade do "Simples": Implementar sistemas básicos, como fazer o parsing de um PDF ou indexar imagens no contexto (RAG), exige uma "cola" de código enorme. Você acaba lutando mais com conversores de arquivos e bancos vetoriais do que com a regra de negócio.
- O Peso do LangChain: Ele é incrível, mas para o cenário de Bun/Local, ele traz uma sobrecarga gigante. Eu queria performance bare-metal, sem abstrações desnecessárias que aumentam o cold start.
- A falta de facilidade de API: No Python, temos o Agno (antigo Phidata), onde você cria um agente e expõe uma API com uma linha. Eu queria essa mesma experiência de desenvolvedor (DX) no JS/TS.
A Solução: Monan (WIP)
Decidi criar o Monan, um framework otimizado especificamente para o Bun. A filosofia é similar ao que o ElysiaJS fez para servidores web: aproveitar ao máximo a performance nativa do runtime.
O que ele resolve de cara:
- Privacidade First: Otimizado para rodar com Ollama e modelos locais. Seus dados não saem da sua máquina/servidor.
- Batteries Included: O parsing de arquivos e a indexação vetorial (usando
bun:sqlitenativo) já vêm embutidos. Nada de subir containers Docker só para ter um banco de vetores. - API Instantânea: Assim como no Agno, você define o agente e roda um comando CLI para ter uma API REST completa pronta para consumo.
Como funciona na prática:
import { Agent } from 'monan';
// Definição simples e tipada
export const assistant = new Agent({
name: "PrivateBot",
model: 'qwen3-vl:8b', // Roda local
description: "Analista de contratos confidenciais"
});
// Precisa testar?
// $ monan test agent.ts
// Precisa virar API?
// $ monan run agent.ts --port 3000
Estou construindo isso em público e o projeto está em fase Alpha. Se você também sente falta de uma ferramenta que una a performance do Bun com a facilidade de criação de Agentes Locais, convido a testar e colaborar.
🔗 Repositório: https://github.com/Monan-AI/monan-sdk
Qualquer feedback sobre a API ou sobre a arquitetura interna é muito bem-vindo!