Skip to content
Jason Upchurch edited this page Jan 23, 2026 · 1 revision

Frequently Asked Questions

General

What is GENESIS?

GENESIS (Generative Networked System for Intelligent Services) is a Python framework for building distributed AI agent networks using RTI Connext DDS for production-grade reliability.

Why use DDS instead of HTTP/REST?

DDS provides:

  • Zero-configuration discovery - No service registries or IP addresses
  • Peer-to-peer communication - No central broker bottleneck
  • QoS policies - Reliability, durability, deadlines built-in
  • Real-time performance - Sub-millisecond latency
  • Battle-tested - Used in aerospace, automotive, medical devices

What LLM providers are supported?

Currently supported:

  • OpenAI (GPT-4, GPT-4o, etc.)
  • Anthropic (Claude) - via extending MonitoredAgent

Adding new providers requires ~150 lines of code. See Adding-LLM-Providers.

Installation

Do I need an RTI license?

Yes. RTI offers:

  • 60-day free evaluation - Full functionality
  • Connext Express - Perpetual, participant-limited
  • University Program - Free for academic use

Run ./rti_setup.sh for guided license setup.

Which Python version is required?

Python 3.10.x is required. Other versions may work but are not tested.

Can I use GENESIS on Windows?

Currently, GENESIS is tested on macOS and Linux. Windows support is planned.

Development

Why aren't my functions being discovered?

Common causes:

  1. Service not running or on different DDS domain
  2. Forgot to call self._advertise_functions() in __init__
  3. Not enough time for DDS discovery (wait 2-3 seconds)
  4. Network firewall blocking UDP ports 7400+

Debug with: rtiddsspy -domainId 0

How do I isolate test environments?

Use different DDS domains:

# Production
export GENESIS_DOMAIN_ID=0

# Testing  
export GENESIS_DOMAIN_ID=5

How do I add a custom tool to my agent?

Use the @genesis_tool decorator:

from genesis_lib.decorators import genesis_tool

class MyAgent(OpenAIGenesisAgent):
    @genesis_tool
    async def my_tool(self, param: str) -> str:
        """Tool description for LLM."""
        return f"Result: {param}"

How do agents communicate with each other?

Enable agent communication in the constructor:

agent = OpenAIGenesisAgent(
    agent_name="MyAgent",
    enable_agent_communication=True
)

Other agents are automatically discovered and appear as tools.

Performance

How does function classification help?

When 200+ functions are discovered, the FunctionClassifier uses a lightweight LLM to select 5-10 relevant functions. This provides:

  • 90%+ token reduction
  • Faster responses
  • Better accuracy

What's the latency of DDS communication?

DDS provides sub-millisecond latency for local communication. Network latency depends on your infrastructure.

Troubleshooting

"NDDSHOME not set" error

Set the environment variable:

export NDDSHOME="/Applications/rti_connext_dds-7.3.0"

Or run ./rti_setup.sh --configure

Agent not responding to queries

  1. Check agent is in READY state
  2. Verify LLM API key is set
  3. Check for errors in agent logs
  4. Ensure agent hasn't crashed (check process)

Services disconnecting

Check for:

  • Network issues (firewall, VPN)
  • Resource limits exceeded
  • Service crash (check logs)

Getting Help

  • GitHub Issues: Bug reports and feature requests
  • Email: genesis@rti.com
  • RTI Support: For DDS-specific issues

Related Pages

Clone this wiki locally