ROMA: Recursive Open Meta-Agents for High-Performance Multi-Agent Systems

This repository profile is provided by osrepos.com, an open source repository discovery platform.

ROMA: Recursive Open Meta-Agents for High-Performance Multi-Agent Systems

Summary

ROMA is a powerful meta-agent framework designed for building high-performance multi-agent systems using recursive hierarchical structures. It simplifies complex problem-solving by breaking tasks into parallelizable components, offering transparent development and proven performance. This open-source framework is extensible, allowing developers to customize agents and benefit from community-driven improvements.

Repository Information

Analyzed by OSRepos on November 23, 2025

Use at your own risk

OSRepos shares public repositories for knowledge and discovery only. Any installation, execution, configuration, or use of code from these repositories is the user's own responsibility. Always review the repository, source code, dependencies, licenses, and security implications before running or installing anything. OSRepos is not responsible for issues, damages, or losses resulting from third-party repositories.

Introduction

ROMA (Recursive Open Meta-Agents) is a powerful meta-agent framework designed to build high-performance multi-agent systems. It leverages recursive hierarchical structures to effectively solve complex problems by breaking them down into parallelizable components. This approach enables agents to tackle sophisticated reasoning challenges while maintaining transparency, making context engineering and iteration straightforward.

The core of ROMA operates on a recursive plan-execute loop:

  • Atomizer: Decides if a request is atomic (directly executable) or requires planning.
  • Planner: If planning is needed, the task is broken into smaller subtasks, which are then fed back into the Atomizer, creating a recursive process.
  • Executors: Handle atomic tasks, utilizing LLMs, APIs, or other agents.
  • Aggregator: Collects and integrates results from subtasks to produce the final answer for the parent task.
  • Verifier (Optional): Inspects the aggregated output against the original goal before delivery.

ROMA offers parallel problem-solving, transparent development with a clear structure for easy debugging, and proven performance, as demonstrated through its search agent's strong benchmark results. As an open-source and extensible platform, ROMA is built for community-driven development, allowing you to customize agents for specific needs.

Installation

The recommended way to set up ROMA for production-ready features, including persistence, API, and observability, is using Docker.

Prerequisites:

  • Docker & Docker Compose
  • Python 3.12+ (for local development)
  • Just command runner (optional, recommended)

Complete Setup with Docker:
This single command builds Docker images, starts all services (PostgreSQL, MinIO, REST API), configures the environment, and optionally sets up S3 storage or E2B code execution.

just setup

You can verify services are running by checking curl http://localhost:8000/health.
Required environment variables for LLM providers (e.g., OPENROUTER_API_KEY, OPENAI_API_KEY) are typically configured automatically by just setup or can be set manually.

Examples

ROMA's modular design allows for flexible orchestration. Here's a quick example mirroring a typical end-to-end workflow, showcasing how different modules can work with distinct models and strategies:

import dspy
from roma_dspy import Aggregator, Atomizer, Executor, Planner, Verifier, SubTask
from roma_dspy.types import TaskType

# Optional tool that the Executor may call
def get_weather(city: str) -> str:
    """Return a canned weather report for the city."""
    return f"The weather in {city} is sunny."

# Executor geared toward ReAct with a Fireworks model
executor_lm = dspy.LM(
    "fireworks_ai/accounts/fireworks/models/kimi-k2-instruct-0905",
    temperature=0.7,
    cache=True,
)
executor = Executor(
    lm=executor_lm,
    prediction_strategy="react",
    tools=[get_weather],
    context_defaults={"track_usage": True},
)

# Atomizer decides when to branch into planning
atomizer = Atomizer(
    lm=dspy.LM("openrouter/google/gemini-2.5-flash", temperature=0.6, cache=False),
    prediction_strategy="cot",
    context_defaults={"track_usage": True},
)

# Planner produces executable subtasks for non-atomic goals
planner = Planner(
    lm=dspy.LM("openrouter/openai/gpt-4o-mini", temperature=0.85, cache=True),
    prediction_strategy="cot",
    context_defaults={"track_usage": True},
)

aggregator = Aggregator(
    lm=dspy.LM("openrouter/openai/gpt-4o-mini", temperature=0.65),
    prediction_strategy="cot",
)

verifier = Verifier(
    lm=dspy.LM("openrouter/openai/gpt-4o-mini", temperature=0.0),
)

def run_pipeline(goal: str) -> str:
    atomized = atomizer.forward(goal)
    if atomized.is_atomic or atomized.node_type.is_execute:
        execution = executor.forward(goal)
        candidate = execution.output
    else:
        plan = planner.forward(goal)
        results = []
        for idx, subtask in enumerate(plan.subtasks, start=1):
            execution = executor.forward(subtask.goal)
            results.append(
                SubTask(
                    goal=subtask.goal,
                    task_type=subtask.task_type,
                    dependencies=subtask.dependencies,
                )
            )
        aggregated = aggregator.forward(goal, results)
        candidate = aggregated.synthesized_result

    verdict = verifier.forward(goal, candidate)
    if verdict.verdict:
        return candidate
    return f"Verifier flagged the output: {verdict.feedback or 'no feedback returned'}"

print(run_pipeline("Plan a weekend in Barcelona and include a packing list."))

This example demonstrates how ROMA's modules, each potentially using different Language Models and prediction strategies, can be orchestrated to achieve complex goals.

Why Use ROMA?

ROMA stands out as a robust framework for building advanced AI agents due to several key advantages:

  • Parallel Problem Solving: ROMA's recursive decomposition allows agents to work on different parts of complex tasks simultaneously, significantly improving efficiency and throughput.
  • Transparent Development: The clear, hierarchical structure of ROMA makes it easy to understand, debug, and iterate on agent behaviors, simplifying context engineering.
  • Proven Performance: The framework has demonstrated strong benchmark results, particularly with its search agent, across challenging datasets like SEAL-0, FRAMES, and SimpleQA, showcasing its effectiveness in fact-seeking and reasoning tasks.
  • Open-Source and Extensible: ROMA is designed for community-driven development, providing a flexible and customizable platform where developers can build and adapt agents to their specific needs, benefiting from collective improvements.
  • DSPy Integration: Built upon DSPy, ROMA leverages a declarative framework for prompting, planning, and tool integration, ensuring stable interfaces and powerful reasoning capabilities.
  • Comprehensive Toolkits: It includes 9 built-in toolkits for various functionalities, from file operations and code execution to crypto data and web search, making agents highly versatile.

Links

Related repositories

Similar repositories that may be relevant next.

AMD Skills: Empowering AI Agents with AMD's Optimized Software Stack

AMD Skills: Empowering AI Agents with AMD's Optimized Software Stack

August 16, 2026

AMD Skills is the official catalog of AI agent skills from AMD, designed to empower AI agents with optimized software for AMD hardware. This repository provides knowledge, scripts, and conventions for working with AMD's stack, enabling seamless integration with major coding agents like Cursor, Claude Code, OpenAI Codex, and Gemini CLI.

PythonAI AgentsMachine Learning
agent-tackle-box: A Terminal Debugger for LangGraph & LangChain Agents

agent-tackle-box: A Terminal Debugger for LangGraph & LangChain Agents

August 15, 2026

agent-tackle-box is a comprehensive toolkit for developing AI agents, featuring the powerful `agent-debugger`. This terminal debugger provides deep insights into LangGraph and LangChain agents. It allows developers to inspect state, monitor tool calls, and step through Python code, all within a unified Textual UI.

agent-debuggerai-agentslangchain
ADR: Uber's Enterprise Security System for AI Agents

ADR: Uber's Enterprise Security System for AI Agents

August 14, 2026

ADR (Agentic AI Detection and Response) is an enterprise security system developed by Uber to secure AI agents. It offers critical capabilities like observability, security benchmarking, and threat detection, ensuring the safe operation of both employee and customer-facing AI applications. This open-source project is deployed in production at Uber and was accepted to MLSys 2026.

PythonAI SecurityAgent Security
SkillOpt: Optimizing Self-Evolving Agent Skills for LLMs

SkillOpt: Optimizing Self-Evolving Agent Skills for LLMs

August 11, 2026

SkillOpt is an innovative text-space optimizer from Microsoft that enables the training of reusable natural-language skills for frozen LLM agents. It approaches skill development with the rigor of deep-learning optimization, using trajectory-driven edits and validation-gated updates. This results in deployable `best_skill.md` artifacts that significantly boost agent performance across various benchmarks and models without modifying model weights.

agent-skillsself-evolving-agentsPython

Source repository

Open the original repository on GitHub.

18 counted GitHub visits

View on GitHub
OS
OSRepos

Analysis and discovery of open source repositories. Find interesting projects and follow their updates.

Monitor your website with YourWebsiteScore

OSRepos shares public repositories for knowledge and discovery only. Any installation, execution, configuration, or use of third-party repository code is at your own risk. Always review source code, dependencies, licenses, and security implications before running anything.

© 2025 OSRepos. Built with Nuxt 3 and lots of ❤️