Skip to main content

OpenAime: Fully-autonomous LLM Multi-agent Framework for Software Engineering

Project description

OpenAime

Open-Source implementation of the AIME (Autonomous Interactive Execution Engine) framework for LLM-based autonomous software engineering agents.

What is AIME

AIME is a multi-agent autonomous execution architecture described in the AIME paper, designed to enable fully autonomous AI agents to complete complex software engineering tasks such as:

  • Debugging and fixing bugs in existing codebases
  • Implementing new features from requirements
  • Refactoring and improving code quality
  • Code review and analysis
  • Whole-project development from scratch

The core idea is dynamic planning + specialized actor execution:

  • Planner: Continuously plans and re-plans tasks based on current progress
  • Actor Factory: Creates or reuses specialized actors for different subtasks based on required capabilities
  • Progress Module: Centralized progress tracking with real-time updates
  • Native Tool Calling: Leverages LLM provider's native function calling for reliability

Differences from Claude Code

Feature OpenAime Claude Code
Architecture Planner + Actor + Progress Module - dynamic task planning with parallel actor execution Sequential tool execution
Language Python TypeScript
Embeddable Can be imported as Python package and integrated into any application Standalone CLI only
Actor Reuse Automatically reuse existing actors with matching capabilities Creates new context per turn
Dynamic Task Management Supports add/modify/delete tasks during execution Fixed single-turn planning
Session Persistence Full session save/load, can resume work later No built-in persistence
MCP Support Full MCP (Model Context Protocol) tool integration MCP support
TUI Built-in terminal UI with real-time progress tracking Built-in terminal UI

Features

  • Dynamic Planner: Continuous planning with dynamic task manipulation (add/modify/delete/mark failed)
  • Actor Reuse: Capability-based actor reuse avoids repeated work
  • Prevent Duplicate Work: Full progress context visible to all actors
  • Native Function Calling: Pure native tool calling eliminates JSON parsing errors
  • Multiple LLM Providers: OpenAI, Anthropic, Volcengine (Doubao) all supported
  • MCP Integration: Full MCP (Model Context Protocol) client support
  • Interactive User Questions: Actors can prompt users for decisions via TUI dialog
  • Session Persistence: Save full session to disk, resume anytime
  • Beautiful TUI: Real-time event stream, progress tree, incremental output
  • Skills System: Modular capability extension with hot-reload
  • Workspace Isolation: Proper working directory management

Quick Start

Installation

pip install openaime
# Or with uv
uv add openaime

Install optional TUI dependencies:

pip install openaime[tui]

Basic Usage

import asyncio
from aime.aime import OpenAime
from aime.base.config import AimeConfig
from aime.providers.llm.anthropic import AnthropicLLM

# Create your LLM provider
llm = AnthropicLLM(api_key="your-api-key-here")

# Create OpenAime instance
aime = OpenAime(
    config=AimeConfig(),
    llm=llm,
    workspace="./your-project-directory"
)

# Run autonomous agent to achieve your goal
result = await aime.run("Fix the bug in the login module")
print(result)

Multi-turn Conversation

# First request
result1 = await aime.run("Add a login endpoint to app.py")
print(result1)

# Second request - retains full context!
result2 = await aime.run("Now add JWT authentication to this endpoint")
print(result2)

# Start fresh if needed
aime.clear_session()
result3 = await aime.run("A completely new task here", new_goal=True)

Integrate into Your Own Application

OpenAime is designed as a library that you can embed into your own Python application. You can listen to events for UI integration or logging.

import asyncio
import logging
from aime.aime import OpenAime
from aime.base.config import AimeConfig
from aime.base.events import EventType, AimeEvent
from aime.providers.llm.openai import OpenAILLM

def my_event_callback(event: AimeEvent):
    """Custom event callback to handle events from OpenAime."""
    event_type = event.event_type
    data = event.data

    if event_type == EventType.ACTOR_INCREMENTAL_OUTPUT:
        # Handle streaming thought output
        actor_name = data.get("actor_name", "")
        text = data.get("text", "")
        full_text = data.get("full_text_so_far", "")
        print(f"[{actor_name}] {text}")  # Update UI incrementally

    elif event_type == EventType.ACTOR_TOOL_CALLED:
        # Actor called a tool
        logging.info(f"Tool called: {data.get('tool_name')}")

    elif event_type == EventType.TASK_STATUS_CHANGED:
        # Task status updated
        pass

llm = OpenAILLM(api_key="your-api-key")
aime = OpenAime(
    config=AimeConfig(),
    llm=llm,
    workspace="./workspace",
    event_callback=my_event_callback,
)

result = await aime.run("Implement a simple Python HTTP server")

Supported Events

Event Type Description Data Fields
PLANNER_GOAL_STARTED Planner started working on a new goal None
PLANNER_STEP_COMPLETED Planner completed one planning step action, thought
ACTOR_STARTED Actor started executing a subtask actor_id, actor_name, task_description
ACTOR_INCREMENTAL_OUTPUT Incremental thought output from actor (streaming) actor_id, actor_name, text, full_text_so_far
ACTOR_THOUGHT Full actor thought (non-streaming) actor_id, actor_name, thought
ACTOR_TOOL_CALLED Actor called a tool actor_id, tool_name, parameters
ACTOR_TOOL_FINISHED Actor tool execution finished actor_id, tool_name, success, content
ACTOR_COMPLETED Actor finished subtask execution actor_id, result
TASK_STATUS_CHANGED Task status changed (pending → in_progress → completed/failed) task_id, status
GOAL_COMPLETED Overall goal completed summary, total_iterations
USER_QUESTION_ASKED Actor asked a user question question
USER_QUESTION_ANSWERED User answered the question answers

TUI Usage

OpenAime includes an interactive terminal UI when used from the command line:

# After installation, launch TUI:
openaime

Commands

Command Description
/goal <description> Start a new autonomous goal execution
/clear Clear current session
/sessions List saved sessions, click to resume
/layout horizontal / layout vertical Switch layout
/quit Exit TUI

Project Structure

aime/
├── base/                      # Base abstractions and type definitions
│   ├── llm.py                # LLM base interface (BaseLLM)
│   ├── types.py              # Core dataclasses (Task, ProgressList, ActorRecord, etc.)
│   ├── tool.py               # Tool base interface (BaseTool, Toolkit, ToolBundle)
│   ├── config.py             # Configuration classes
│   ├── skill.py              # Skill metadata and registry (hot-reload)
│   ├── knowledge.py          # Knowledge base abstraction
│   ├── user_question.py      # User question manager for interactive prompts
│   └── session/              # Session persistence
├── components/               # Core business components
│   ├── actor.py              # DynamicActor with ReAct streaming loop
│   ├── actor_factory.py      # ActorFactory with capability-based actor reuse
│   ├── planner.py            # Dynamic planner with task mutation support
│   └── progress_module.py    # Progress tracking and event subscription
├── providers/                # Provider implementations
│   ├── llm/                  # LLM providers
│   │   ├── openai.py         # OpenAI (GPT-4o, etc.)
│   │   ├── anthropic.py      # Anthropic (Claude 3.5/3.7)
│   │   └── volcengine.py     # Volcengine Doubao
│   └── tools/                # Tool providers
│       └── mcp.py            # MCP (Model Context Protocol) client
├── tools/                    # Builtin tools
│   └── builtin/              # Core builtin tools
│       ├── file_read.py      # Read text files
│       ├── file_write.py     # Write text files
│       ├── file_update.py    # Update existing files (search/replace, append)
│       ├── shell_exec.py     # Execute shell commands
│       └── ask_user_question.py # Ask user interactive questions
├── aime.py                   # Main OpenAime entry point
└── aime_tui/                 # Terminal User Interface
    ├── app.py               # Main TUI application
    ├── components/          # TUI components (EventStream, ProgressPane, etc.)
    ├── assets/              # CSS styles
    └── config.py            # TUI configuration

License

MIT License - see LICENSE for details.

Credits

Based on the AIME architecture described in the AIME paper.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openaime-0.1.0.tar.gz (29.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openaime-0.1.0-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

Details for the file openaime-0.1.0.tar.gz.

File metadata

  • Download URL: openaime-0.1.0.tar.gz
  • Upload date:
  • Size: 29.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for openaime-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1bc5d4d599f6bc2b645871d5e662ff504de1e7eebf67de3e9fb4411cde72584a
MD5 10a93098813c341e4fa2b30fc2d0cc4a
BLAKE2b-256 fa987359378f559f9eb171dafa0e3b2842ae6d678b1323189f3419987b955567

See more details on using hashes here.

File details

Details for the file openaime-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: openaime-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for openaime-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dfe45977367212e0361fe374abbb834f9c44ffe61bf86742e41d6a987dbd5c07
MD5 dec3b50ae325c54e8f5a516cc9dd95f9
BLAKE2b-256 006e4769ab5e255cc6a7430336a20202ee41160432247988b63292d30d9ea5c1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page