What is Akka
Develop, deploy, and operate enterprise agentic services.
Akka is a expressive SDK and platform for developing, deploying, and operating enterprise agentic services.
Akka automatically distributes workloads, self-heals, and adjusts in real-time, ensuring uninterrupted execution under extreme demand.
Develop agentic services

Akka makes it easy to build enterprise agentic services with a single platform for durable workflows, memory, streaming, and tool access.
With a fast inner loop, seamless IDE integration, and full offline support, the Akka SDK delivers a great developer experience that helps teams move faster and build more reliably.
Autonomous services are workflows: call the LLM, process the response, execute an action, and so forth.
These workflows depend on dozens of failure-prone services and high latency LLMs. Akka guarantees that your agentic service will always execute, whether it runs for a few seconds or a few months.

Akka services persist all events in their own in-memory, durable databases. This architecture ensures agents can retain and supply context across all LLM interactions.
Whether managing long-running workflows, adapting to new context over time, or coordinating across distributed instances, Akka’s memory system guarantees continuity—even in the face of failures or shifting workloads.

Akka’s event-driven architecture ensures seamless, non-blocking communication—critical for agentic services that rely on high-latency models and real-time data.
Whether streaming partial responses for an interactive user experience or handling continuous multimodal inputs at scale, Akka enables fluid, responsive interactions without delays or bottlenecks.

Autonomous agents rely on tools to take action—querying databases, calling APIs, and integrating with enterprise systems.
Akka provides a rich ecosystem of hundreds of pre-built integrations while allowing developers to define custom tools tailored to their workflows. Connect to any Model Context Protocol (MCP) server, enabling agents to dynamically retrieve, use, and update contextual information across multiple interactions.
Akka SDK
Create durable, real-time services exposed as APIs with an SDK that enables a rapid inner dev loop, integration with your favorite IDEs, and offline local development.
Create high velocity dev teams
Akka's inner dev loop separates domain logic from distributed dependencies. Your business logic is yours - build and test domain logic without decorators or leaky API pollution. Akka’s components inject distributed, responsive intelligence during the build.
With Akka: Domain Separation
Keep your business logic yours. Build and test domain code like your first ‘Hello, World’ program. Akka components inject intelligence at build with an inner loop that moves as fast as your fingers.
Without Akka : Polluted Domain Logic
Decorating domain code or calling APIs to distribute data or improve resilience creates technical debt, cross-team friction, and coherence leaks.
Entity
Build apps that act as their own in-memory, durable, and replicated database.
Streaming
Streaming producers and consumers enable real-time data integration.
Endpoint
Design HTTP and gRPC APIs.
View
Access multiple entities or retrieve entities by attributes other than entity id.
Workflow
Execute durable, long-running processes with point-in-time recovery.
Timer
Execute actions with a reliability guarantee.

No local cloud required
Developers locally create and debug chained, networked services that execute as local binaries without having to install local cloud infrastructure.
Binaries generated from SDK dependencies are included and compiled at build time enabling offline development.
- Service-to-service local discovery and messaging
- No packing
- No Docker Compose
- No database
- No Kubernetes
Local console and event debugger
Local console, event debugger, sandboxes, and separation of concerns ensures high dev velocity with minimal local configuration.
Local operations console for visualizing distributed architecture components and their data flows.
Track entity state changes and visualize modifications to the networked, durable event log.
Leverage your favorite IDE’s build, run, debugger, and AI add-on to generate and test large blocks of Akka code with minimal prompting.
Fast unit and integration testing
Execute local unit and integration tests for components with a built-in Testkit that enables invocation and assertion comparisons of component responses.
Execute single-component unit tests embedded as binaries or with a built-in networked endpoint.
Execute multi-component integration tests by executing an entire service with component client and endpoint interactions.
Components
The Akka SDK simplifies what it takes to build enterprise data, API, and agentic services down to six components. They enable you to implement your business logic while the Akka runtime handles infrastructure concerns.
Endpoints are HTTP- and gRPC-accessible APIs that execute in a serverless execution environment. Use Endpoints for creating or augmenting apps that are exposed over multi-region routes.
// API definition
@Get("/hello")
public String hello() { }
// Path parameters
@Get("/hello/{name}/{age}")
public String hello(String name, int age) { }
// Serializable JSON inputs
@Post("/hello")
public String hello(<< serializable_custom_type >>) { }
// Protocol exception handlers
HttpException.<< helper_methods >>
GrpcException.<< helper_methods >>
// Asynchronously invoke other APIs and services
client.POST("/custom/url")
.withRequestBody(<< insert_request >>)
.invokeAsync()
.thenApply(<< handle_response >>)
// Streaming requests and custom media types
request.entity()
.toStrict(1000, materializer)
.thenApply(<< collect_response >>)
Entities are microservices that act as their own in-memory, durable database with strongly consistent transactions. Entity state is sharded horizontally, replicated across regions, and persisted.
// Custom key-value storage
class <<my class>> extends KeyValueEntity
// Storage for custom state and event types
class <<my class>> extends EventSourcedEntity
// Key value state update
effects()
.updateState(newCounter)
.thenReply(newCounter)
// Event driven state changes
effects()
.persist(event)
.thenReply(<< return_status >>)
// Event driven state changes
switch (event) {
case << event_type >> -> << event_handler >>
case << event_type >> -> << event_handler >>
}
Workflows are long-running, multi-step business processes that can be point-in-time recovered. Workflows are Saga orchestrators for distributed transactions.
// Custom state definitions for workflows
class TransferWorkflow extends Workflow <TransferState>
// Define the order of steps to be taken
workflow()
.addStep(withdraw)
.addStep(deposit, maxRetries(2))
// Timeouts and failover for steps or workflows
workflow()
.timeout(ofSeconds(5))
.failoverTo("failover-handler", maxRetries(0))
// Chainable definitions for steps
step("withdraw")
.asyncCall(<< invoke_other_Akka_components >>)
.andThen(<< transition_to_next_wf_step >>)
// Effects tell Akka what operations to perform
effects()
.updateState(<< update_status_of_workflow >>)
.transitionTo(<< next_workflow_step >>)
.thenReply("we are running now")
effects().error("workflow shouldn’t start")
effects().reply(currentState())
Timers enable the scheduling of calls for future execution. Timers are used to set timeouts and for verifying the completion status of processes without polling or blocking.
// Schedule up to 50,000 timers with durable response
timerScheduler.startSingleTimer(
timerName(<>),
Duration.ofSeconds(10),
componentClient
.forTimedAction()
.method(<< timer_handler_method >>))
// Define custom timers and handlers
class OrderTimedAction extends TimedAction {
effects().asyncDone(<< timer_handler >>)
}
// Guaranteed to run at least once
// Can be scheduled to run at a future time
// Can be cancelled
// Automatically removed upon successful completion
// Rescheduled upon failure with retry limits
Views are aggregations of data that can be queried. Views enable complex reads of data to be independently executed and scaled apart from write operations. Views updates are triggered by events, messages, and state changes.
// Query a View with data from a single entity
@Query("”” SELECT id, name FROM customers
WHERE name = :customerName “”")
// Update a view from a Topic
@Consume.FromTopic(“<< topic_name >>”)
// Parameterized queries
@Query("SELECT id FROM << view_type >>
WHERE name = :<< parameter_name >>")
queryMethod (String << parameter_name >>) {}
// Multiple results can generate collections or streams
// View indexes created based upon query structure
// Query filter predicates - logical operators
// Query filter predicates - comparison operators
// Query filter predicates - array operators
// Query pattern matching
SELECT * FROM customers WHERE name LIKE 'Bob%'
// Text, numerical, boolean, byte, & timestamps
// Sorting and paging results
SELECT * FROM customers
WHERE name = :name
AND age > :min_age
ORDER BY age DESC
// Joins, multiple tables, and projections
Producers and consumers enable stream-based interaction between Akka services and the outside world.
// Stream state change events from entities
@Consume.FromEventSourcedEntity(<< akka_entity_name >>)
@Consume.FromKeyValueEntity(<< akka_entity_name >>)
// Consume an event with a custom event handler
onEvent(<< entity_event >>) {
return switch (event) {
case << event_type >> -> << handle_event >>
case << event_type >> -> << handle_event >>
};
}
// Effects are Akka instructions how to handle an event
effects().done()
effects().ignore()
// Produce a new event with an effect
effects().produce(<< new_event >>, << metadata >>)
// Send events to other Akka services
@Produce.ServiceStream(id = << my_event_stream_name >>)
@Acl(allow = @Acl.Matcher(service = "*"))
// Views can consume events and update state
effects().updateRow(<< new_state >>)
// Consume and produce CloudEvents from Pub/Sub topics
@Consume.FromTopic(value = “<< topic_name >>“)
@Produce.ToTopic(“<< topic_name >>“)
Interactions between services, components, and the outside world are asynchronous event streams programmed with a simple, procedural style.
// Asynchronously invoke other components
componentClient.<< component_name >>
.method(<< your_component_method >>)
.invokeAsync();
Deploy agentic services
Akka services can be built locally and then simultaneously operated across many regions. We describe this behavior as ‘write once, deploy anywhere, replicate everything’.

Write once, deploy anywhere...
Unlike other agentic frameworks, Akka seamlessly transitions services from stand-alone development to a fully managed platform – without rewriting code. Whether running locally, in a private cloud, or on the Akka Platform, services gain automated runtime management, infinite elasticity, and zero operational overhead.
…and replicate everything.
In a multi-region Akka service, logic and data are accessible in multiple locations. This is typically done across a WAN where traditional clustering protocols are inefficient. With Akka, you can build multi-region stateful applications at gigantic user and data scale to enable consistent latency, no downtime disaster recovery, no downtime upgrades, and cross-cloud migrations.
Read the blog and documentation to learn more.

Operate agentic services
Deploy Akka as self-managed nodes onto any infrastructure to control how your Akka services are installed, updated, and maintained. Documentation.
Akka Platform provides fully-automated operations for your Akka services to deliver infinite elasticity, no-downtime agility, and guaranteed resilience. Documentation.
Monitor, log, and trace
Visualize logs, metrics, and traces in real-time with the Akka control tower or stream to a terminal.
Akka supports integration with your preferred observability protocols including, Open Telemetry, Prometheus remote write, and Splunk HEC.


Elastic to workload changes
Akka operating environments perform cold start and automatic adjustment of app instances as traffic spikes or idles.
Logs, metrics and traces visualized within a per-service dashboard or exported to your preferred observability tooling.
Resilient to failures
Akka automatically snapshots app instances and executes change data capture of individual state changes for entities. Akka replays snapshots and entity events sequentially to automate restoration after a failure.
Akka apps run in an Akka operating environment, which provides automation for elasticity, agility, and resilience. Your apps can deploy into environments managed by us or you. Federate your private regions with public regions available at Akka.io to enable cross-region replication.
Akka provides managed services and self-hosted software that automates the lifecycle of your applications enabling them to maintain their own SLA. Akka environments orchestrate microservices, handle elasticity scaling events, configure gateways and proxies as topologies change, and manage persistence access for entities, events and views.
Operate apps across clouds and geos
Multi-Master Replication of app data across regions with automated cutovers leverage location transparency to enable apps to move from one location to another without users experiencing downtime.
Zero-downtime upgrades, cloud-to-cloud, serverless to BYOC, and repatriation migrations are all supported.
Freedom to move
Avoid lock-in and downtime during migrations. Akka apps move from one location to another without users experiencing downtime through replication of data across regions with automated cutovers. Support for cloud upgrades, cloud-to-cloud migrations, Serverless to BYOC, and repatriation migrations.
Start with one place
Design, build and deploy apps within a single location.
Regional migration
Add regions for apps to replicate across.
Custodial migration
Retire an app in one place after movement to a second. Mix Akka-managed regions with self-managed.
Infrastructure upgrades
Promote read-only regions to writable for rolling infra updates.
Version and schema updates
Apps automatically adapt to schema changes with end user traffic rerouting.
Clustering from within
The Akka runtime executes as an embedded kernel. Akka clustering, also from within, enables your apps to discover, join, participate, and leave a cluster automatically and across networking boundaries.
The Akka runtime
- Scheduling: compute, threads
- Data: flows, shards, replication
- Communication: cluster membership, I/O
- Resilience: self-healing actions, split brain resolution
- Akka creates a ring of physical nodes to execute instances
- Akka places instances in more than 1 bucket for redundancy
- Akka monitors service request traffic to add / remove nodes
- Akka rebalances instances and data as ring size changes
The G.O.A.T. libraries
Yes, after 1B downloads, we're comfortable claiming the Akka libraries are the Greatest Of All Time for building distributed systems. ;)
Resilient by Design
Building on the principles of The Reactive Manifesto Akka allows you to write systems that self-heal and stay responsive in the face of failures.
Elastic & decentralized
Distributed systems without single points of failure. Load balancing and adaptive routing across nodes. Event Sourcing and CQRS with Cluster Sharding. Distributed Data for eventual consistency using CRDTs.
Reactive streaming data
Asynchronous non-blocking stream processing with backpressure. Fully async and streaming HTTP server and client provides a great platform for building microservices. Streaming integrations with Alpakka.
High performance
Up to 200 million msg/sec on a single machine. Small memory footprint; ~2.5 million actors per GB of heap.