---
slug: /user-guide/release-notes/abi-3-0-nats
sidebar_position: 0
title: "ABI 3.0: NATS, Remote Modules and Module Jobs"
---

# ABI 3.0: NATS, Remote Modules and Module Jobs

- **Document Type:** Release note
- **Status:** Released: `naas-abi-core`, `naas-abi` and `naas-abi-cli` 3.0.0, and the first `naas-abi-proto` and `naas-abi-sdk` (0.1.0)
- **Date:** 2026-10-20

ABI 3.0 is a major release. An ABI deployment now runs on a NATS broker: the
engine serves its kernel services over it, modules can run in their own
process, and module jobs replace Dagster. Existing projects keep working with
NATS off and move over in three phases.

**Upgrading from 2.x:** read [Migrate from 2.x to 3.0](/user-guide/upgrade/migrate-to-3)
and [Breaking changes in 3.0](/user-guide/upgrade/breaking-changes-3).

## Packages

| Package | Version | What |
|---|---|---|
| `naas-abi-core` | 3.0.0 | The engine, the kernel services, NATS mode, module jobs |
| `naas-abi` | 3.0.0 | Nexus (System app, remote agents and apps), built-in agents |
| `naas-abi-cli` | 3.0.0 | NATS projects and remote modules by default, `abi dev up` with NATS |
| `naas-abi-sdk` | 0.1.0, new | Remote modules: async clients, module runtime, agents, jobs, apps |
| `naas-abi-proto` | 0.1.0, new | The v1 protobuf contracts of the kernel services |

`naas-abi-marketplace` keeps its own versions. Upgrade `naas-abi-core`,
`naas-abi` and `naas-abi-cli` together.

## What's new

- **NATS by default.** A config with a top-level `nats:` block runs the engine
  in NATS mode: every kernel service is a versioned protobuf contract on
  `abi.svc.<service>.v1.*`, the bus is JetStream, and calls between services go
  over the broker even inside one process. `abi new project` creates NATS
  projects. See [NATS and the Kernel Services](/developer-guide/architecture/nats).
- **Remote modules.** `naas-abi-sdk` runs a module in its own process, with no
  dependency on `naas-abi-core`. It registers in discovery, publishes agents
  (listed in Nexus next to the engine's), uses the engine's models and
  services over NATS, and keeps its agents' memory in the Document Service.
  `abi new module` creates one. See [Remote Modules and Jobs](/developer-guide/architecture/remote-modules)
  and [Build a Remote Module](/user-guide/build/sdk/build-a-remote-module).
- **Module jobs replace Dagster.** Modules declare jobs with cron, interval or
  event triggers; JetStream schedules and delivers them, one replica runs each,
  with retries, idempotency keys, run records and retention. The engine's own
  maintenance (dataset compaction and cleanup, agent memory pruning) runs as
  jobs. See [Module jobs](/developer-guide/architecture/remote-modules#module-jobs).
- **Remote apps.** A module serves web apps, with a Python backend, through
  Nexus over NATS: no port, hostname or route of its own. Pages run sandboxed
  under a per-user, per-workspace grant, and bodies stream both ways. See
  [Remote Apps and Large Payloads](/developer-guide/architecture/remote-apps).
- **No size ceiling at the broker.** Transfers, RPC overflow, streamed results
  and claim checks carry values above the 8 MiB message limit.
- **One serving engine, deploys without downtime.** An engine lease keeps a
  second engine from serving the same services; with `ABI_ROLLOUT_ID`, a new
  engine stands by and takes over when the old one drains.
- **Security.** Broker users with passwords (`abi`, `module`), service tokens
  on every call, module keys that sign for one module id only, tokens bound to
  the instance they are sent to. See [Security Model](/developer-guide/architecture/security).
- **Observability.** The Nexus System app (Overview, Services, Data, Jobs,
  Agents, Modules, NATS, Live traffic, Traces) and OpenTelemetry tracing across
  processes. See [Observability](/developer-guide/architecture/observability).
- **CLI.** `abi dev up` runs `nats-server`, the engine with discovery and the
  `dev.modules` remote modules (`--with-tracing` adds Jaeger); `abi module key`
  prints a module's key; `abi agent migrate-memory` and `prune-memory` manage
  agent memory. See the [CLI Reference](/user-guide/reference/cli).

## Legacy: Dagster and RabbitMQ

`naas-abi-core` no longer installs Dagster, and `naas-abi-core[all]` leaves out
the `dagster` and `rabbitmq` extras. They still work for projects with NATS off
(`uv add 'naas-abi-core[all,dagster,rabbitmq]'`; `abi deploy local` and
`abi new project --without-nats` add them) and **will be removed in the next
major**. See [Dagster (legacy)](/user-guide/build/applications/dagster).

## Breaking changes at a glance

- Dagster and RabbitMQ are optional extras; the NATS packages are installed in
  every mode.
- Ports gained abstract methods: custom adapters written for 2.x must implement
  them.
- Triple store `query()` returns an `rdflib` result; dataset values are
  portable on every path; graph exports stream one triple per line.
- In NATS mode, agent memory and the activity log move to the Document
  Service: run `agent_memory_migrate` and `activity_log_migrate` right after
  the switch.
- `abi new project` and `abi new module` create NATS projects and remote
  modules by default; `abi deploy local` adds the legacy extras to projects
  without NATS.
- App link tokens no longer authenticate `/api/*`.

The full list, with what each change means with NATS off and on:
[Breaking changes in 3.0](/user-guide/upgrade/breaking-changes-3). What 3.0 does not
cover yet: [Known limits](/user-guide/upgrade/migrate-to-3#known-limits).
