name: flue description: "Framework TypeScript para agents headless: runtime-agnostic (Node, Cloudflare, GitHub Actions), agent harness, virtual sandbox (just-bash), skills estáticas/dinámicas, observabilidad OpenTelemetry. 4.5K⭐ Apache-2.0" url: https://github.com/withastro/flue category: ia fecha: 2026-06-06
Flue — The Agent Harness Framework
¿Qué hace?
Flue es un framework TypeScript para construir la próxima generación de agentes IA. Diseñado alrededor de un agent harness integrado. Es como Claude Code, pero 100% headless y programable. No asume operador humano, no TUI, no GUI. Solo TypeScript.
No es otro SDK de IA. Es un framework runtime-agnostic — piensa Astro o Next.js, pero para agents. Escribe una vez, construye y despliega en cualquier lado (Node.js, Cloudflare, GitHub Actions, GitLab CI/CD, etc.).
Características clave
- Agent Harness — Sistema de orquestación de agentes con sandbox, tools y skills
- Virtual Sandbox — Default a
just-bash(vercel-labs/just-bash) — dramáticamente más rápido, barato y escalable que containers - Full Container Sandbox — Opcional para cuando necesitas aislamiento completo
- Skills — Skills estáticas (markdown) y dinámicas (programáticas)
- Message-Driven — Agentes reciben HTTP/WebSocket en
/agents/:name/:id - Observabilidad — OpenTelemetry adapter, Braintrust tracing, Sentry error reporting
- Session Persistence — Estado de sesión persistente (especialmente en Cloudflare)
- Typed Results — Validación de resultados con Valibot
Casos de uso
- Agentes headless — Construir agents que funcionan sin interfaz humana
- High-scale agents — Virtual sandbox de just-bash para alto tráfico sin containers
- Cloudflare deployment — Deploy agents en Cloudflare Workers con persistencia automática
- Message-driven agents — Agentes que responden a HTTP/WebSocket messages
- Multi-runtime — Mismo agente en Node.js, Cloudflare, GitHub Actions
Snippets útiles
Quickstart — Agente simple
// .flue/workflows/hello-world.ts
import { createAgent, type FlueContext, type WorkflowRouteHandler } from '@flue/runtime';
import * as v from 'valibot';
export const route: WorkflowRouteHandler = async (_c, next) => next();
const translator = createAgent(() => ({ model: 'anthropic/claude-sonnet-4-6' }));
export async function run({ init, payload }: FlueContext) {
const harness = await init(translator);
const session = await harness.session();
const { data } = await session.prompt(
`Translate this to ${payload.language}: "${payload.text}"`,
{
result: v.object({
translation: v.string(),
confidence: v.picklist(['low', 'medium', 'high']),
}),
},
);
return data;
}
Support Agent con filesystem
// .flue/workflows/support.ts
import { createAgent, type FlueContext, type WorkflowRouteHandler } from '@flue/runtime';
export const route: WorkflowRouteHandler = async (_c, next) => next();
const support = createAgent(() => ({ model: 'openrouter/moonshotai/kimi-k2.6' }));
export async function run({ init, payload }: FlueContext) {
const harness = await init(support);
const session = await harness.session();
// Populate filesystem con contexto
await session.fs.mkdir('/workspace/articles', { recursive: true });
await session.fs.writeFile(
'/workspace/articles/reset-password.md',
'# Reset your password\n\nUse the account settings page...',
);
return await session.prompt(
`Answer this support question: ${payload.question}`,
{ result: v.string() },
);
}
WebSocket example (Node.js)
// examples/node-websocket
import { createAgent, createServer } from '@flue/runtime';
const agent = createAgent(() => ({ model: 'anthropic/claude-sonnet-4-6' }));
const server = createServer({ agent });
server.listen(3000);
// → WebSocket en ws://localhost:3000/agents/hello/123
Cloudflare Workers
// examples/cloudflare-websocket
import { createAgent, createCloudflareServer } from '@flue/runtime';
const agent = createAgent(() => ({ model: 'anthropic/claude-sonnet-4-6' }));
export default createCloudflareServer({ agent });
// → Deploy en Cloudflare Workers con session persistence automática
Cómo integrarlo
- Instalar:
npm install @flue/runtime @flue/cli - Crear workflow:
.flue/workflows/my-agent.ts - Configurar agent:
createAgent()con tu modelo favorito - Dev:
flue devpara desarrollo local - Build:
flue buildpara producción - Deploy: Node.js, Cloudflare Workers, GitHub Actions, etc.
Pitfalls
- Experimental: APIs pueden cambiar, version v0.0.x disponible
- Virtual sandbox: Default a just-bash, NO usa containers a menos que optes por full container
- Cloudflare persistence: Session state se persiste automáticamente en Cloudflare, pero no en Node.js local
- Modelos: Soporta Anthropic, OpenRouter, OpenAI — verificar compatibilidad
- No es un chatbot: Es un framework para agents programáticos, no una UI de chat
Fecha de descubrimiento
2026-06-06 — 4.5K⭐, trending diario + semanal