A TypeScript runtime built for agents.
Fino makes AI a runtime subsystem, not a pile of glue: models, tools, agents, realms, and sandboxing — with OpenTelemetry built in from the start.
This is the whole app.
import { agent, openai, streamText, tool } from 'fino:ai'; import { App } from 'fino:net/http/app'; const assistant = agent({ model: openai({ model: 'gpt-4o' }), instructions: 'Answer as a concise support engineer.', tools: [lookupTicket], }); const app = new App(); app.route('/chat').sse(async (events, ctx) => { const { message } = await ctx.request.json(); for await (const text of streamText(assistant.stream(message))) { await events.write({ data: JSON.stringify(text) }); } }); app.listen({ port: 3000 });
The agent loop, tool validation, router, and streaming are all part of the runtime. fino run --watch app.ts and it's live.
Batteries included. Boundaries enforced.
AI is a subsystem
fino:ai ships provider-neutral models, agents, validated tools, durable sessions, MCP adapters, evals, and memory — built to work with routes, realms, and telemetry.
Imports are permissions
Capabilities come from explicit fino:* imports, not an ambient global bag. Child realms start from deny-all and can't grant themselves what a parent denied.
Realms and sandboxes
Isolated execution contexts run embedded, in threads, in processes, or remotely. Sandbox policies fail closed when the platform can't enforce them.
Follow along.
Fino is experimental and moving fast. Hop into the Discord to follow the build, ask questions, and tell us what you're building.