Saddle Command Center
Harness Your Events
LittleHorse integrates with your event streaming platform to unify events and process orchestration.
// Step 1: Send the document
wf.execute("send-docusign", docId);
// Step 2: Wait for the signature event
wf.waitForEvent("document-signed");
// Step 3: Continue processing
wf.execute("update-listing-status", "SOLD");
// Timeout: cancel if not signed in 7 days
wf.handleException(handler -> {
handler.execute("cancel-offer", docId);
});
}
Handle Asynchronous Callbacks With ExternalEvents
The waitForEvent() primitive lets your workflow pause until a callback, webhook, or external event arrives — then resume processing automatically. No state tables, no correlation logic, no polling.
Combine it with declarative timeouts and exception handlers to build robust async flows that would otherwise require hundreds of lines of infrastructure code.
Observe Events Through End-to-End Flows
The LittleHorse dashboard gives you a visual representation of every workflow execution. See which tasks completed, which are waiting for events, what data flowed between steps, and where failures occurred.
No more propagating correlation IDs or deploying separate tracing infrastructure. Every step is journaled, searchable, and auditable from a single pane of glass.

Three problems LittleHorse solves for event-driven systems
Each of these challenges is painful to solve from scratch — and comes out of the box with LittleHorse.
Multi-Step Processes
How do I make sure an event reliably makes it across multiple microservices in a row?
Without LittleHorse
- ✕Transactional Outbox Pattern
- ✕Hand-rolled retries & dead-letter queues
- ✕Custom SAGA implementations for rollbacks
With LittleHorse
- ✓Define the process in a simple WfSpec
- ✓Use a Kafka Sink Connector to trigger it
- ✓Retries & durability handled by the system
Asynchronous Callbacks
How do I take an action, wait for a response from an external system, and then continue?
Without LittleHorse
- ✕Persist the state of all ongoing processes
- ✕Correlate events to the right process instance
- ✕Handle timeouts and event race conditions
With LittleHorse
- ✓Use ExternalEvent to pause and resume workflows
- ✓Kafka Connector routes callbacks automatically
- ✓Declarative timeouts and failure handlers in code
End-to-End Observability
How do I watch an event progress from end-to-end across multiple topics and microservices?
Without LittleHorse
- ✕Propagate correlation IDs across every service
- ✕Deploy external tracing systems (Zipkin, Jaeger)
- ✕Hard to find which step failed and why
With LittleHorse
- ✓E2E observability comes out of the box
- ✓See stacktraces, inputs, and outputs of each task
- ✓Processes are represented visually on the dashboard
Go Deeper
Read our five-part blog series on Event-Driven Integration Patterns.
Saga Transactions
Compose reliable business transactions across multiple disparate systems.
Transactional Outbox
Keep data in sync across multiple services and databases.
Queuing
Schedule heavy lifting to be processed after-the-fact.
Retries & DLQ
Make your integrations resilient to failures and malformed messages.
Callbacks
Reliably handle processes that wait for callbacks or external events.
Get Started. It's Easy and Free.
Build well-governed, reliable event-driven systems with LittleHorse.