Build AI agents you can put in production
Mayura is the TypeScript framework for agents, typed tools and durable workflows, with permissions, budgets and validation enforced by the runtime.
Any model
OpenAI
Anthropic
Gemini
Mistral
DeepSeek
xAI
Groq
OpenRouter
Together AI
Azure OpenAI
Ollama
Runs and stores on
Node.js
TypeScript
Docker
Kubernetes
AWS
Google Cloud
Vercel
Render
Railway
Heroku
PostgreSQL
SQLite
MCP
React
Agents. Tools. Workflows. Everything you need to ship, running under rules you set.
import { defineAgent, defineTool, z } from 'mayura';
import { openAIResponses } from 'mayura/provider-openai';
const getWeather = defineTool({
id: 'weather.get', version: '1',
description: 'Current weather for a city.',
input: z.object({ city: z.string() }),
output: z.object({ celsius: z.number() }),
effects: 'read', capabilities: [],
execute: ({ city }) => weather.current(city),
});
export const agent = defineAgent({
id: 'weather-assistant', version: '1',
instructions: 'Answer questions about the weather.',
tools: [getWeather],
input: z.object({ question: z.string() }),
output: z.object({ reply: z.string() }),
model: openAIResponses({ apiKey, model: 'gpt-5-mini',
pricing, maxCostMicros: 20_000 }),
});- input{ "question": "Do I need an umbrella?" }matches input schema
- modelcalls weather.get { "city": "Paris" }openai.responses · $0.0009
- toolweather.get → { "celsius": 21 }effect: read · granted
- output{ "reply": "No umbrella needed." }matches output schema
Instructions, a model and tools, with schemas for what goes in and what comes out. Read the guide
Previews are illustrations of what happens during a run.
What’s in Mayura?
Everything an agent needs in production.
Any model, with failover
OpenAI, Anthropic and OpenAI-compatible providers, routed with automatic failover.
Cost control
Prices, per-call caps and shared budgets, from the tokens providers report.
Streaming
Show an answer as it is written, with guards on every batch.
Vision
Agents that see images and PDFs, checked by their own bytes.
Memory and context
Native memory with keyword, semantic and hybrid search.
Observability
Run events, workflow tracing and OpenTelemetry export.
Also: MCP tools, Code Mode, guardrails, child agents, React and the operator console.
Get started in seconds with a project that already works.
Each starter is complete, with tests, a worker and deployment files. Your API key goes into.envand nowhere else.
- 1
npx mayura initPick a starter and a model provider. - 2
npm run devBuild, run and restart on every save. - 3
mayura serveServe it; mayura worker runs workflows.
- Support assistantStreamed chat that acts only for the signed-in customer.
support-agent - Approval workflowRefunds that wait for a person to approve the payment.
approval-workflow - Research teamPlanner, parallel researchers and a writer, on one budget.
research-team - Event automationSigned webhooks start workflows that act through MCP.
event-automation - Command-line assistantChat in your terminal; you confirm every write.
cli-agent
Frequently asked questions
What is Mayura?
A TypeScript framework for AI agents, typed tools and durable workflows. You describe an agent with schemas, give it tools and a model, and run it under an allow-list of permissions and limits. It is one npm package, mayura, with a CLI of the same name.
Do I need to install anything else?
No. npm install mayura is enough to build agents: schemas use z from mayura (it is Zod). Optional parts such as SQLite or PostgreSQL storage, the QuickJS sandbox and React hooks each need one extra package, only if you use them.
Which models can I use?
OpenAI and Anthropic natively, and any OpenAI-compatible provider, such as Groq, Gemini, Mistral, DeepSeek, xAI, OpenRouter, Together, Fireworks, Azure OpenAI and local servers. A router fails over between them.
How does Mayura keep agents in bounds?
A run can use a model, tool or effect only when you grant it, every run has cost, step, tool-call and time limits, and every input and output is validated. When a side effect may or may not have happened, the run ends outcome_unknown instead of retrying blindly.
Can I test without an API key?
Yes. Scripted models from mayura/testing replay fixed responses, so agents, tools and workflows run offline in your tests.
Where can I deploy Mayura?
Anywhere Node.js 22 or 24 runs: containers, Kubernetes, managed platforms such as Cloud Run, ECS and Fly.io, your own servers, inside an app you already run, and serverless functions on Vercel, with AWS Lambda and Cloud Run functions experimental. Edge runtimes are planned for 1.1. See Deployment.
Is Mayura ready for production?
Mayura is at the 1.0 release candidate. From 1.0.0, every entry point is stable under semantic versioning; until then, pin the exact version and try it in a pilot first. See Versioning and stability.
Is Mayura open source?
Yes, under the Apache-2.0 license, on GitHub.