Reef and Spores
Reef is Praval’s agent-to-agent delivery substrate. It supports in-process delivery and an optional RabbitMQ distributed backend. Agents exchange structured messages called Spores.
from praval import agent, broadcast, start_agents, get_reef
@agent("researcher", provider="ollama", responds_to=["query"])
def researcher(spore):
broadcast({"type": "finding", "text": "answer"})
start_agents(researcher, initial_data={"type": "query"})
get_reef().wait_for_completion()
get_reef().shutdown()
Spore.knowledge is preserved for compatibility. V2 payload fields can be used
alongside it where available, but handlers should continue to tolerate legacy
spores.
Redis is not a Reef backend; it belongs to the storage system. AMQP, MQTT, and STOMP adapters belong to the optional secure transport layer. Applications are responsible for correlation, idempotency, bounded retry policy, terminal results, and shutdown.