Skip to content

Releases: sentient-agi/ROMA

v0.2.0-beta: ROMA v2 with DSPy

22 Oct 00:43

Choose a tag to compare

ROMA v0.2.0 Release Notes

🎉 Major Release: Complete Framework Rewrite

We're excited to announce ROMA v0.2.0, a complete rewrite of the framework built on DSPy. This release transforms ROMA into a production-ready, hierarchical multi-agent framework with powerful new capabilities.


⚠️ Breaking Changes

This is a major architectural rewrite. Code written for v1.0.0 is not compatible with v0.2.0.

What Changed:

  • Complete migration to DSPy-based module system
  • New configuration system using OmegaConf
  • Restructured API and module interfaces
  • Updated storage and execution model

Migration Guide:

If you're upgrading from v1.0.0:

  1. Review the new module system: All agents now inherit from BaseModule
  2. Update configuration: Switch to YAML-based profiles (see config/profiles/)
  3. Update imports: Core modules moved to roma_dspy.core.modules
  4. Check toolkit usage: New toolkit system with 9 built-in toolkits
  5. API changes: If using programmatically, review the new signatures

See the updated README and Quick Start Guide for examples.


🚀 What's New

🏗️ DSPy-Powered Architecture

Complete rewrite using Stanford's DSPy framework:

  • BaseModule: Unified base class for all agent modules
  • Flexible prediction strategies: CoT, ReAct, CodeAct, BestOfN, and more
  • LM abstraction: Easy model swapping and runtime configuration
  • Async-first: Native support for async execution with graceful fallbacks

🐳 Production-Ready Deployment

One-command Docker deployment with full production stack:

just setup  # Interactive setup with all services

Included Services:

  • 🚀 FastAPI REST API with OpenAPI documentation
  • 🗄️ PostgreSQL for persistence
  • 📦 MinIO S3-compatible object storage
  • 📊 MLflow for experiment tracking and observability

🧰 9 Built-in Toolkits

Powerful toolkit system extending agent capabilities:

Core Toolkits:

  • FileToolkit: File system operations
  • CalculatorToolkit: Mathematical computations
  • E2BToolkit: Secure code execution in sandboxed environments

Crypto Toolkits:

  • CoinGeckoToolkit: Cryptocurrency data and pricing
  • BinanceToolkit: Exchange data and trading info
  • DefiLlamaToolkit: DeFi protocol analytics
  • ArkhamToolkit: Blockchain intelligence

Search:

  • SerperToolkit: Web search capabilities

Universal:

⚙️ Advanced Configuration System

Flexible YAML-based configuration with profiles:

# config/profiles/crypto_agent.yaml
agents:
  executor:
    llm:
      model: "openrouter/anthropic/claude-3.5-sonnet"
      temperature: 0.7
    toolkits:
      - class_name: "CoinGeckoToolkit"
        enabled: true
      - class_name: "E2BToolkit"
        enabled: true

Features:

  • Profile-based configuration (general, crypto_agent, test)
  • Runtime overrides via command-line
  • Task-aware agent mapping
  • Custom prompt templates with Jinja2

📂 Execution-Scoped Storage

Isolated storage for each task execution:

  • Automatic directory creation per execution ID
  • S3-compatible storage via MinIO
  • Parquet integration for large data (>100KB threshold)
  • Built-in FileStorage for toolkit access

🌐 REST API & CLI

REST API:

# Interactive API documentation
http://localhost:8000/docs

# Create execution
POST /api/v1/executions

# Get execution status
GET /api/v1/executions/{id}

# Visualize execution tree
GET /api/v1/executions/{id}/visualize

CLI:

# Local execution
roma-dspy solve "Your task" --profile crypto_agent

# Server management
roma-dspy server start
roma-dspy server health

# Execution management
roma-dspy exec create "Task"
roma-dspy exec status <id> --watch

# Interactive TUI visualization
just viz <execution_id>

📊 Enhanced Observability

MLflow Integration:

  • Automatic experiment tracking
  • Metric logging (cost, latency, token usage)
  • Parameter tracking
  • Execution artifact storage

Built-in Visualization:

  • Interactive TUI for execution trees
  • LLM-friendly text visualizations
  • DAG integrity validation
  • Checkpoint support for long-running tasks

🔧 Developer Experience

Improved Module System:

from roma_dspy import Atomizer, Planner, Executor, Aggregator, Verifier

# Consistent interface across all modules
executor = Executor(
    model="openrouter/openai/gpt-4o-mini",
    prediction_strategy="react",
    tools=[get_weather, search_web]
)

result = executor.forward("What's the weather in Tokyo?")

Resilience Features:

  • Automatic retry with exponential backoff
  • Circuit breaker pattern
  • Checkpoint/resume for long tasks
  • Error handling and recovery

Testing Infrastructure:

  • Unit test suite
  • Integration tests
  • Test profile configuration
  • Justfile commands for easy testing

📚 New Documentation

Comprehensive documentation in the docs/ directory:


🛠️ Technical Improvements

Core Engine

  • Event-driven execution scheduler
  • DAG-based task management with integrity validation
  • Transitive property propagation in execution context
  • Cost tracking across all LLM calls
  • Deep copy support for DSPy signatures

Prompt Optimization

  • GEPA (Grounded Efficient Prompt Adaptation) support
  • Automatic prompt optimization with DSPy
  • Custom instruction templates per module
  • Jinja2 template system

Data & Metrics

  • Added multiple search-related datasets
  • Enhanced metrics collection
  • Automatic data storage for large responses
  • Parquet format for efficient storage

Infrastructure

  • Docker multi-stage builds
  • Environment-based configuration
  • Database migrations with Alembic
  • Volume mounting for S3 storage
  • Health check endpoints

🔄 Migration from v1.0.0

Key Changes to Address:

  1. Module Initialization:

    # v1.0.0 (old)
    from roma import Agent
    agent = Agent(config)
    
    # v0.2.0 (new)
    from roma_dspy import Executor
    executor = Executor(
        model="openrouter/openai/gpt-4o-mini",
        prediction_strategy="react"
    )
  2. Configuration:

    # v1.0.0 (old)
    config = load_config("config.json")
    
    # v0.2.0 (new)
    from roma_dspy.config import load_config
    config = load_config(profile="general")
  3. Task Execution:

    # v1.0.0 (old)
    result = agent.run(task)
    
    # v0.2.0 (new)
    from roma_dspy.core.engine.solve import solve
    result = solve("Your task", profile="general")

🙏 Acknowledgments

This release builds on amazing open-source work:


📦 Installation

Docker (Recommended):

git clone https://github.com/sentient-agi/ROMA.git
cd ROMA
just setup

Local Development:

pip install -e .
# or with API support
pip install -e ".[api]"

🐛 Known Issues

  • Prompt optimization (GEPA) requires manual tuning for optimal results
  • Some async operations may fall back to sync in specific scenarios
  • E2B template setup requires manual configuration (guided in setup)

🔮 What's Next

We're committed to making ROMA the best hierarchical agent framework. Future releases will focus on:

  • Additional toolkit integrations
  • Performance improvements
  • Community-contributed toolkits and profiles

💬 Community


Full Changelog: v1.0.0...v0.2.0

v0.1.0-beta

04 Sep 07:49

Choose a tag to compare

v0.1.0-beta

What's Changed

  • Initial beta release of Recusrive Open Meta Agent
  • Core autonomous research agent functionality
  • 3 Custom agents implemented
  • Custom tool integration system
  • E2B Code execution + file reading/writing system
  • Project context management
  • Comprehensive logging system

Configuration

  1. Copy .env.example to .env
  2. Add your API keys
  3. Configure custom tools in custom_tools.json (optional)

Known Issues

  • Node instability - expect breaking changes due to API failures/structured output failures
  • Rate limiting on from API's
  • Node timouts

Full Changelog

  • Initial release

Note: This is a beta release and not recommended for production use.