Skip to main content

Academy-Dashboard

ModCon CAF

Observability and Oversight for Academy Agents

As agents act autonomously, the ability to observe what they are doing and intervene when appropriate becomes a critical capability. academy-dashboard addresses these challenges in agentic deployments through the following extensions for Academy:

  • UserAgent: Specialized Academy agents that 1. accepts information from MonitoredAgents
    and 2. presents this information over a web based dashboard.
  • MonitoredAgent: Extends academy's Agent class to support observability and control features.

Here are some of the supported capabilities:

  • Logging: Live log stream from MonitoredAgents is presented via the UserAgent
  • Human-in-the-loop: MonitoredAgents can send user prompts to the UserAgent where a user can respond over a webpage
  • Performance Stats: Dashboard presents performance stats collected from MonitoredAgents
  • Shutdown: MonitoredAgents can be terminated from the dashboard provided by UserAgents
  • Location: Locate your agents on a map

Using the UserAgent

There are two supported modes for using starting a UserAgent:

Hosted UserAgent

Go to dashboard.academy-agents.org

1) Login with Globus Auth \
2) Click the `[+]` button to launch a new `UserAgent` \
3) Copy the agent UUID and plug this back into your scripts \

Local Deployment:

Launch locally with: user-agent-launcher,

:>user-agent-launcher
User Agent UUID >>>>
     a9337401-3d22-4205-923a-0040bb8d3a7b
 * Serving Flask app 'academy_dashboard.user_agent.dashboard'
 * Debug mode: off

NOTE: MonitoredAgents need the User Agent's UUID (printed above) to establish a connection.

:> user-agent-launcher -h
usage: user-agent-launcher [-h] [-p PORT] [-r REGISTRATION_FILE] [-l {DEBUG,INFO,WARNING,ERROR,CRITICAL}]

options:
  -h, --help            show this help message and exit
  -p, --port PORT       Port at which the flask service is listening
  -r, --registration_file REGISTRATION_FILE
                        UserAgent registration file
  -l, --log_level {DEBUG,INFO,WARNING,ERROR,CRITICAL}
                        Log level

Using the MonitoredAgent

NOTE: Use export USER_AGENT_ID=<USER_AGENT_UUID_FROM_ABOVE_STEPS> for examples in the examples directory.

NOTE: This document is in development.

NOTE: The example below is trimmed for brevity. Refer examples for complete code.

from academy_dashboard import MonitoredAgent
from academy_dashboard import UserAgent


class Sleeper(MonitoredAgent):

    def __init__(self, user_agent_handle: Handle[UserAgent]) -> None:
        super().__init__(user_agent_handle=user_agent_handle)
        print('Spinner init done')

    @loop
    async def cycle(self, shutdown: asyncio.Event) -> None:
        """Log and sleep in loop."""
        counter = 0
        while not shutdown.is_set():
            await asyncio.sleep(2)
            logging.info('Sleeper iteration %d', counter)
            counter += 1
        logging.info('Sleeper exiting!!!! ')


async def main(user_agent_id: UUID) -> None:
    async with await Manager.from_exchange_factory(
        factory=HttpExchangeFactory(),
        executors=ProcessPoolExecutor(max_workers=2),
    ) as manager:

        # 1. Get Handle to UserAgent
        agent_id = AgentId(uid=user_agent_id, name='UserAgent')
        user_agent_handle = manager.get_handle(agent_id)

        # 2. Launch a single agent:
        sleeper = await manager.launch(
            Sleeper,
            kwargs={'user_agent_handle': user_agent_handle},  # <-- Pass handle to UserAgent
        )

        # 3. Wait for the sleeper agent, which will go on until cancelled
        #    with a ctrl+c
        await manager.wait([sleeper])
        logging.info('All done!')


if __name__ == '__main__':
    user_agent_id = os.environ['USER_AGENT_ID']
    raise SystemExit(asyncio.run(main(UUID(user_agent_id))))

Metadata

Release files for academy-dashboard 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-dashboard 1.0.0
File Size Uploaded
academy_dashboard-1.0.0.tar.gz 1.6 MB Details

Built distribution (wheel)

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

Total release size: 3.2 MB

Release files / academy_dashboard-1.0.0.tar.gz

Download URL academy_dashboard-1.0.0.tar.gz
Size 1.6 MB
Tags Source
SHA-256 checksum
How to use checksums
feb6da9cd1bcf703eafe3a1409b662a95eab9ca93feffb4bc7ff35f877a0bade
BLAKE2b-256 checksum
How to use checksums
d27b88c70e9fd054eadf58881ae4cb4c345550ba1f085837a6d2585189569fc2
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 Oct 9, 2026.

Transparency log

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

Download URL academy_dashboard-1.0.0-py3-none-any.whl
Size 1.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
7edddafe2535ce2efcc87d4346d9e5833df1c3b688ca1a946d895e05b66a3489
BLAKE2b-256 checksum
How to use checksums
bb14412605c425e36c83d999df21c3a4f4a8955e1d2dd6d46e034a6915dd7f00
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 Oct 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.0 This release

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