Skip to main content

Openhands x AAct

Overview

This project integrates the Openhands framework with AAct to create a runtime environment for executing actions and handling events. The openhands_node.py file defines the OpenHands class, which is a node that processes actions and communicates with a runtime environment.

Project Structure

  • aact_openhands/: Contains the core implementation of the Openhands node and related utilities.

    • openhands_node.py: Main implementation of the OpenHands node.
    • utils.py: Contains utility classes and functions, including AgentAction and ActionType.
    • __init__.py: Marks the directory as a Python package.
  • app.py: Flask server for managing AACT dataflow processes.

  • tests/: Contains test files for the project.

    • test_server.py: Unit tests for the Flask server endpoints.
    • test_live_server.py: Integration tests for AACT command execution.
    • __init__.py: Marks the directory as a Python package.
  • examples/: Contains example configuration files.

    • openhands_node.toml: Configuration file for running the OpenHands node.
  • pyproject.toml: Configuration file for managing dependencies with Poetry.

Installation

To set up the project, ensure you have Python 3.12 installed. Then, follow these steps:

  1. Install Poetry: If you haven't already, install Poetry for dependency management.

    curl -sSL https://install.python-poetry.org | python3 -
    
  2. Install Dependencies: Navigate to the project directory and install the dependencies.

    poetry install
    

Setting Up Environment Variables

To run the OpenHands node, you need to set up your environment variables. Follow these steps:

  1. Obtain Modal API Keys:

    • Sign Up / Log In: Go to the Modal website and sign up or log in to your account.
    • Navigate to API Keys: Once logged in, navigate to the API keys section, usually found under account settings.
    • Generate API Keys: Generate a new API key pair. You should receive a MODAL_API_TOKEN_ID and a MODAL_API_TOKEN_SECRET.
    • Secure Your Keys: Store these keys securely. Do not share them publicly or commit them to version control.
  2. Create a .env File: Copy the env.example file to a new file named .env in the root of your project directory:

    cp env.example .env
    
  3. Edit the .env File: Open the .env file and replace the placeholder values with your actual API keys and URLs:

    MODAL_API_TOKEN_ID=your_actual_modal_api_token_id
    MODAL_API_TOKEN_SECRET=your_actual_modal_api_token_secret
    

Flask Server

The project includes a Flask server (app.py) that manages AACT dataflow processes. The server provides the following endpoints:

  • GET /health: Health check endpoint
  • POST /run-dataflow: Start a new AACT dataflow process
  • GET /status: Get the status of the current process

Running the Server

To start the Flask server:

poetry run python app.py

The server will start on http://localhost:5000.

Testing

The project includes both unit tests and integration tests:

Running Tests

To run all tests:

./run_tests.sh

This script will:

  1. Run unit tests for the Flask server
  2. Start the Flask server
  3. Run integration tests for AACT command execution
  4. Clean up all processes and temporary files

Test Structure

  • Unit Tests (tests/test_server.py):

    • Tests Flask server endpoints
    • Verifies server responses and process management
    • Runs without actual AACT process execution
  • Integration Tests (tests/test_live_server.py):

    • Tests actual AACT command execution
    • Verifies process startup and management
    • Includes proper resource cleanup

Usage

Running the OpenHands Node

To run the OpenHands node with the provided configuration, use the following command:

poetry run aact run-dataflow examples/openhands_node.toml

Upon successful execution, you should see output similar to the following:

16:41:26 - openhands:INFO: openhands_node.py:120 - --------------------
16:41:26 - openhands:INFO: openhands_node.py:121 - RUNTIME CONNECTED
16:41:26 - openhands:INFO: openhands_node.py:122 - --------------------
16:41:26 - openhands:INFO: openhands_node.py:127 - Runtime initialization took 157.77 seconds.

Troubleshooting

If you encounter a ModuleNotFoundError, ensure that:

  • The directory structure is correct, and openhands_node.py is located in the openhands directory.
  • The openhands directory contains an __init__.py file.
  • The pyproject.toml file includes the openhands package in the [tool.poetry.packages] section.

API Documentation

For detailed information about using the action endpoint and its supported operations, please refer to the Action Endpoint Documentation.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contact

For any questions or issues, please contact Arpandeep Khatua at arpandeepk@gmail.com.

Metadata

Release files for aact_openhands 0.0.5

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

Source distribution (sdist)

Source distribution for aact_openhands 0.0.5
File Size Uploaded
aact_openhands-0.0.5.tar.gz 228.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aact_openhands 0.0.5
File Interpreter ABI Platform
aact_openhands-0.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 544.5 kB

Release files / aact_openhands-0.0.5.tar.gz

Download URL aact_openhands-0.0.5.tar.gz
Size 228.9 kB
Tags Source
SHA-256 checksum
How to use checksums
560aa9813f9211ce4a78fdd714867a7d9d74153437e8cd3628b8d8d90f34b28a
BLAKE2b-256 checksum
How to use checksums
42a7c568bcf5c87928035f9f283d7785a8a8df060c52fc4de9c44c8825dd9a09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.5 CPython/3.12.8 Linux/6.5.0-1025-azure

Release files / aact_openhands-0.0.5-py3-none-any.whl

Download URL aact_openhands-0.0.5-py3-none-any.whl
Size 315.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b523af8de180390e5112dce7922ad861bf24bb20cf765b7eec196f60ff5d919d
BLAKE2b-256 checksum
How to use checksums
b77997f2403ada71def95ffd6ac8a8788e7b4c75e87f80577614ceabcb7a9f09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.5 CPython/3.12.8 Linux/6.5.0-1025-azure

Release history Release notifications | RSS feed

This release

0.0.5 This release

2 release files

0.0.4

2 release files

0.0.2

2 release files

0.0.1

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