flue

star 0

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

Ntizar By Ntizar schedule Updated 6/6/2026

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

  1. Agentes headless — Construir agents que funcionan sin interfaz humana
  2. High-scale agents — Virtual sandbox de just-bash para alto tráfico sin containers
  3. Cloudflare deployment — Deploy agents en Cloudflare Workers con persistencia automática
  4. Message-driven agents — Agentes que responden a HTTP/WebSocket messages
  5. 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

  1. Instalar: npm install @flue/runtime @flue/cli
  2. Crear workflow: .flue/workflows/my-agent.ts
  3. Configurar agent: createAgent() con tu modelo favorito
  4. Dev: flue dev para desarrollo local
  5. Build: flue build para producción
  6. 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

Install via CLI
npx skills add https://github.com/Ntizar/koldo --skill flue
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator