MotiaDev/motia
π₯ A Modern Unified Backend Framework for APIs, Events and Agents π₯
π‘ Motia Manifesto β’ π Quick Start β’ π Defining Steps β’ π Docs
π― What is Motia?
Motia is a modern backend framework that unifies APIs, background jobs, events, and AI agents into a single cohesive system. Eliminate runtime complexity and build unified backends where JavaScript, TypeScript, Python, etc, work together in event-driven workflows, with built-in state management, observability, and one-click deployments.
Motia brings cohesion to the fragmented backend world with our core primitive: the Step.
π§± The Step Philosophy
- π― Your Logic, Your Step: A Step holds your business logic. It can be a simple function, a call to a database, or a complex AI agent. This is where your applicationβs real work gets done.
- π Any Language, One Workflow: Write Steps in TypeScript, Python, and other languages to come. all in the same project. Use Python for your AI agents and TypeScript for your API, and Motia makes them work together effortlessly.
- β‘ Full Power, No Boilerplate: Inside a Stepβs
handler
, you have the full power of the Node.js or Python ecosystem. Install any package, call any API, connect to any database. No restrictions, just your code. - ποΈ Zero-Config Observability: Get full end-to-end tracing and logging for every Step execution, automatically. No setup required. See exactly what happened, when, and why.
- π Simple & Powerful Workflows: Connect Steps together by emitting and subscribing to events. Build complex, multi-stage processes with simple, declarative code.
- πͺ Unified State: Share data between Steps effortlessly. Motia provides built-in state management that is automatically traced, giving you a complete picture of your dataβs lifecycle through a workflow.
π§ The Problem
Backend teams juggle fragmented runtimes across APIs, background queues, and AI agents. This creates deployment complexity, debugging gaps, and cognitive overhead from context-switching between frameworks.
This fragmentation demands a unified system.
β The Unified System
Motia unifies your entire backend into a unified state. APIs, background jobs, and AI agents become interconnected Steps with shared state and integrated observability.
Before | After (Motia) |
---|---|
Multiple deployment targets | Single unified deployment |
Fragmented observability | End-to-end tracing |
Language dependent | JavaScript, TypeScript, Python, etc |
Context-switching overhead | Single intuitive model |
Complex error handling | Automatic retries & fault tolerance |
π§ Supported Step Types
Type | Trigger | Use Case |
---|---|---|
api |
HTTP Request | Expose REST endpoints |
event |
Emitted Topics | React to internal or external events |
cron |
Scheduled Time (cron) | Automate recurring jobs |
noop |
None | Placeholder for manual/external tasks |
π€ How it Works
Motiaβs architecture is built around a single, powerful primitive: the Step. A Step is not just a trigger; itβs a powerful container for your business logic. You can write anything from a simple database query to a complex AI agent interaction inside a single step. Instead of managing separate services for APIs, background workers, and scheduled tasks, you simply define how your steps are triggered.
- Need a public API? Create an
api
step. This defines a route and handler for HTTP requests. You can build a complete REST or GraphQL API just with these steps. - Need a background job or queue? Have your
api
stepemit
an event. Anevent
step subscribed to that eventβs topic will pick up the job and process it asynchronously. This is how you handle anything that shouldnβt block the main request thread, from sending emails to complex data processing. - Need to run a task on a schedule? Use a
cron
step. It will trigger automatically based on the schedule you define.
This model means you no longer need to glue together separate frameworks and tools. A single Motia application can replace a stack that might otherwise include Nest.js (for APIs), Temporal (for workflows), and Celery/BullMQ (for background jobs). Itβs all just steps and events.
β‘ Core Concepts
The Step is Motiaβs core primitive. The following concepts are deeply integrated with Steps to help you build powerful, complex, and scalable backends:
π Steps & Step Types
Understand the three ways Steps are triggered:
- HTTP (
api
) β Build REST/GraphQL endpoints with zero boilerplate. - Events (
event
) β React to internal or external events emitted by other steps. - Cron (
cron
) β Schedule recurring jobs with a familiar cron syntax.
π£ Emit & Subscribe (Event-Driven Workflows)
Steps talk to each other by emitting and subscribing to topics. This decouples producers from consumers and lets you compose complex workflows with simple, declarative code.
πͺ State Management
All steps share a unified key-value state store. Every get
, set
, and delete
is automatically traced so you always know when and where your data changed.
π Structured Logging
Motia provides structured, JSON logs correlated with trace IDs and step names. Search and filter your logs without regex hassle.
π‘ Streams: Real-time Messaging
Push live updates from long-running or asynchronous workflows to clients without polling. Perfect for dashboards, progress indicators, and interactive AI agents.
ποΈ End-to-End Observability with Traces
Every execution generates a full trace, capturing step timelines, state operations, emits, stream calls, and logs. Visualise everything in the Workbenchβs Traces UI and debug faster.
π Quickstart
Get Motia project up and running in under 60 seconds:
Prerequisites
- Node.js 18+ (we recommend the latest LTS)
- npm β₯ 8 (or pnpm / yarn β your choice)
1. Bootstrap a New Motia Project
|
|
Follow the prompts to pick a template, project name, and language.
2. Start the Workbench
Inside your new project folder, launch the dev server:
|
|
This spins up the Motia Workbench β a local UI for building, testing & observing your backend in real-time.
3. Hit Your First Endpoint
Open a new terminal tab and run:
|
|
You should see the JSON response:
|
|
4. Explore the Workbench UI
The Workbench is your command centre:
- π Flows β Visualise how your Steps connect.
- π Endpoints β Test APIs with one click and stream results live.
- ποΈ Traces β Inspect end-to-end traces of every execution.
- π Logs β View structured logs grouped by trace.
- πͺ State β Inspect the key-value store across Steps.
π Thatβs it! You now have a fully-featured Motia project with:
- β
/default
API endpoint - β Visual debugger & flow inspector
- β Built-in observability
- β Hot-reload for instant feedback
π Examples
Finance Agent | GitHub Agent | Gmail Manager |
---|---|---|
![]() Financial insights |
![]() PR automation |
![]() Email automation |
Trello Automation | RAG Agent | AI Image Gen |
---|---|---|
![]() Task automation |
![]() Knowledge retrieval |
![]() Generate images |
π Language Support
Write steps in your preferred language:
Language | Status | Example |
---|---|---|
JavaScript | β Stable | handler.step.js |
TypeScript | β Stable | handler.step.ts |
Python | β Stable | handler.step.py |
Ruby | π§ Beta | handler.step.rb |
Go | π Coming Soon | handler.step.go |
Rust | π Coming Soon | handler.step.rs |
π¬ Get Help
- π Questions: Use our Discord community
- π Bug Reports: GitHub Issues
- π Documentation: Official Docs
- π₯ Blog: Motia Blog
π€ Contributing
π Roadmap
Weβre building Motia in the open, and weβd love for you to be a part of the journey.
Check out our public roadmap to see whatβs planned, whatβs in progress, and whatβs recently shipped:
We welcome contributions! Whether itβs:
- π Bug fixes and improvements
- β¨ New features and step types
- π Documentation and examples
- π Language support additions
- π¨ Workbench UI enhancements
Check out our Contributing Guide to get started.
π Ready to unify your backend?
π Get Started Now β’ π Read the Docs β’ π¬ Join Discord