Skip to main content

Academy: Federated Actors and Agents

PyPI - Version tests pre-commit.ci status

Academy is a modular and extensible middleware for building and deploying stateful actors and autonomous agents across distributed systems and federated research infrastructure. In Academy, you can:

  • ⚙️ Express agent behavior and state in code
  • 📫 Manage inter-agent coordination and asynchronous communication
  • 🌐 Deploy agents across distributed, federated, and heterogeneous resources

Installation

Academy is available on PyPI.

pip install academy-py

Example

Agents in Academy are defined by an Agent class containing @action-decorated methods that can be invoked by users or peer agents and @loop-decorated methods that execute the autonomous control loops of the agent.

The below sensor monitoring agent periodically reads a sensor in the monitor() loop and processes the reading if a threshold is met. Users or agents can invoke the get_last_reading() and set_process_threshold() actions remotely to interact with the monitor agent.

import asyncio
from academy.agent import Agent, action, loop

class SensorMonitorAgent(Agent):
    def __init__(self) -> None:
        super().__init__()
        self.last_reading: float | None = None
        self.process_threshold: float = 1.0

    @action
    async def get_last_reading(self) -> float | None:
        return self.last_reading

    @action
    async def set_process_threshold(self, value: float) -> None:
        self.process_threshold = value

    @loop
    async def monitor(self, shutdown: asyncio.Event) -> None:
        while not shutdown.is_set():
            value = await read_sensor_data()
            self.last_reading = value:
            if value >= self.process_threshold:
                await process_reading(value)
            await asyncio.sleep(1)

Users and agents communicate asynchronously through handles, sending messages to and receiving messages from a mailbox managed by an exchange. The manager abstracts the remote execution and management of agents using executors.

from academy.exchange import LocalExchangeFactory
from academy.manager import Manager
from concurrent.futures import ThreadPoolExecutor

async with await Manager.from_exchange_factory(
    factory=LocalExchangeFactory(),  # Replace with other implementations
    executors=ThreadPoolExecutor(),  # for distributed deployments
) as manager:
    agent_handle = await manager.launch(SensorMonitorAgent)

    await agent_handle.set_process_threshold(2.0)
    await asyncio.sleep(5)
    value = await agent_handle.get_last_reading()
    print(value)

    await manager.shutdown(agent_handle, blocking=True)

Learn more about Academy in Getting Started.

What can be an agent?

In Academy, an agent is a primitive entity that (1) has internal state, (2) performs actions, and (3) communicates with other agents.

This allows for range of agent implementations—Academy agents are building blocks for constructing more complex agent-based systems.

For example, Academy can be use to create the following:

  • Stateful Actors: Actors manage their own data and respond to requests in a distributed system.
  • LLM Agents: Integrate LLM-based reasoning and tool calling.
  • Embodied Agents: The "brain" controlling a robot or simulated entity where action are translated into motor commands or environment manipulations.
  • Computational Units: Encapsulate a specific computational task, like running a simulation, processing data, or training a machine learning model.
  • Orchestrators: Manage or coordinate the activities of other agents, distributing tasks and monitoring progress.
  • Data Interfaces: Interact with external data sources, such as databases, file systems, or sensors, providing a consistent interface for data access and manipulation.

Why Academy?

Academy offers a powerful and flexible framework for building sophisticated, distributed agent-based systems, particularly well-suited for the complexities of scientific applications. Here's what makes Academy valuable:

  • Stateful Agents: Academy enables agents to maintain state, which is crucial for managing long-running processes, tracking context across steps, and implementing agents that need to "remember" information.
  • Agent Autonomy: Academy allows agents to have autonomous control loops, empowering them to make decisions, react to events, and execute tasks independently.
  • Flexible Deployment: Academy provides tools for managing agent deployment, communication, and coordination in complex environments such that applications can leverage heterogeneous, distributed, and federated resources.
  • Foundation for Sophisticated Applications: Academy primitives offer a strong foundation for building highly specialized and sophisticated agent-based systems that go beyond standard LLM use cases, allowing for fine-grained control and optimization tailored to specific scientific applications.

Citation

The Academy paper is available in the proceedings of IPDPS 2026 and a preprint is accessible on arXiv.

@inproceedings{kamatar2026academy,
    title = {Empowering Scientific Workflows with Federated Agents},
    author = {Alok Kamatar and J. Gregory Pauloski and Yadu Babuji and Ryan Chard and Mansi Sakarvadia and Daniel Babnigg and Kyle Chard and Ian Foster},
    booktitle = {2026 IEEE International Parallel and Distributed Processing Symposium (IPDPS)},
    doi = {10.1109/IPDPS65963.2026.00114},
    pages = {1403-1418},
    year = {2026}
}

Metadata

Release files for academy-py 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for academy-py 1.0.0
File Size Uploaded
academy_py-1.0.0.tar.gz 543.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for academy-py 1.0.0
File Interpreter ABI Platform
academy_py-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 672.8 kB

Release files / academy_py-1.0.0.tar.gz

Download URL academy_py-1.0.0.tar.gz
Size 543.6 kB
Tags Source
SHA-256 checksum
How to use checksums
5e25e684a2bfb9783cfc8759ef078958e001ff14b94084c7530a3a6e41ffebf5
BLAKE2b-256 checksum
How to use checksums
7deb37b162d048b522135b7062763e7c7778a2ffd733b5fd4b3bf9b5cb785b10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log

Release files / academy_py-1.0.0-py3-none-any.whl

Download URL academy_py-1.0.0-py3-none-any.whl
Size 129.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e1e6819c7b962408a562521aa5e694e3200c547dd2b296ea0370a7dfc2a7bf5e
BLAKE2b-256 checksum
How to use checksums
b1291a14ba39805b79228d1c1639d77c484cb6fdd7aa438034d6f16037164139
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page