Autonomous agents that negotiate, delegate, and execute — with
Contract-Net dialogue, directories, and schedulers.
LLM, MCP, and A2A support are optional.
Pre-1.0 — on Maven Central since 0.34.0.
Every breaking change is marked in the changelog:
read the changelog.
Workers bid on a task; the manager awards it to the lowest bidder — a built-in dialogue of CFP, PROPOSE, and AGREE performatives. No LLM in the loop.
See the full example →
agenor-core plus agenor-runtime is already a complete
multi-agent system: agents, messaging, directory, scheduler. Reasoning,
extended behaviors and classpath scanning are three separate modules you
add only if you need them.
Dialogue and negotiation protocols — including Contract-Net — plus agent directories, schedulers, and message dispatch. The core runtime has zero dependencies on any LLM.
When does this run? has three answers: once, on an interval, or as an FSM that decides its own transitions. Compose the rest. Retry, batching, rate limiting and circuit breaking are deliberately not behavior types — they wrap a call, and belong to a resilience library, or to the runtime's delivery layer and mailbox.
Plug in LLM-powered reasoning, memory, guardrails (PII redaction, content policy) and reflection — an add-on module, not a dependency of the core runtime. Human-in-the-Loop approval lives outside it: pausing for a person needs no model.
Optional adapters for MCP tool servers and the A2A protocol, built on the official Java SDKs — for when your agents need to reach outside the JVM.
Start in-memory with nothing to install. Swap in Redis Streams for at-least-once delivery across nodes, or a JDBC-backed directory and approval queue when agents must outlive a restart. A message the runtime gives up on lands in a dead-letter queue you can read back — in memory by default with nothing to wire, or off the Redis stream. Every component is an interface, so agent code doesn't change.
Each message handler runs on its own virtual thread, so an agent's handlers overlap rather than queue — guard shared state, and keep them idempotent, because a transport with redelivery runs a failed handler again. OpenTelemetry tracing is opt-in and no-op by default. A web console, a CLI, and a scenario evaluation harness ship with it.
A starter for Spring Boot 4.x. One dependency, one YAML block, Actuator health indicator included. Your agents are Spring beans.
Agenor is a multi-agent coordination framework, not a general-purpose LLM toolkit.