Mercury Composable for Rust¶
Mercury Composable lets you build backend applications as composable, event-driven systems — and, increasingly, as Active Knowledge Graphs you evolve by editing a model rather than rewriting code. Functions are fully decoupled — they know each other only by route name, wired through event envelopes — so orchestration is configuration, not code. This is the official Rust implementation: the event-driven core descends from the Scala/Akka actor model, realized here on tokio async/await, with the canonical Java engine as the behavior specification — same three layers, same flow YAML, behavior-synced release by release.
New here? Start with Getting Started.
A layered ascent¶
Mercury grew in three layers. Each builds on the one beneath it, and you can mix them in a single application — drop down a layer exactly where you need more control, and no further.
| Layer | You express behavior as… | What you write |
|---|---|---|
| Event-driven Platform Core |
decoupled functions reacting to events |
Rust functions, addressed by route name |
| Composable Event Script |
YAML flows that choreograph functions |
~50% config, 50% code |
| Semantic Active Knowledge Graph |
a graph whose nodes execute during traversal |
a model — little or no code |
Knowledge Graph as application¶
The newest layer is a paradigm shift: model business intent, enterprise knowledge, and system behavior as one executable Active Knowledge Graph. Behavior runs as the graph is traversed, so changing what a system does means refining the model, certifying it, and deploying the updated model — not rewriting and redeploying code. Humans and AI companions co-author the same model in a live Playground.
Why a Rust port¶
The same destination as the Java engine, re-reached in Rust: AI-assisted Semantic Application Development, on a lightweight, fast foundation (the ported event bus benchmarks at ~155K RPC ops/s at 6 µs round-trip). The port is faithful by design — the Java project remains the canonical behavior specification (map, don't mirror) — with deliberate, documented divergences where the platform differs (tokio instead of virtual threads, compile-time registration instead of classpath scanning, no Kafka service mesh, no Spring).
Building with an AI agent¶
Mercury's DSLs ship agent-ready specifications — a rule-based grammar plus a machine-readable catalog — so an AI agent can generate correct artifacts deterministically, without inferring from examples or reading engine source:
- MiniGraph commands — build graphs via the companion endpoint.
- Event Script flows — author flow YAML.
- Composable functions — the Rust authoring contract.
A machine-readable map of the whole site lives at llms.txt — engine-verified; a
fresh agent can build graphs from it with zero out-of-band context.
Explore the docs¶
- Get started — Getting Started
- Guides — Event-driven Functions · Event Script Flows · REST Automation · Event over HTTP · Polyglot Functions · Observability
- Knowledge Graph — Knowledge Graph as Application · Build Your First Graph · Workflow Suspension · Playground & AI Companion
- Concepts — Methodology · Architecture Overview · Port Scope & Fidelity · Architecture Decision Records
- Reference — Macros · Configuration · Event Envelope · Flow Schema · API Overview
Project¶
- Source: github.com/Accenture/mercury
- Release notes: CHANGELOG
- Contributing: CONTRIBUTING · Code of Conduct
- Java version: Mercury's canonical Java implementation — same three layers, same flow YAML, behavior-synced with this engine: github.com/Accenture/mercury-composable · documentation
- Polyglot functions: write functions in Python or Node.js and call them from flows and graphs — see Polyglot Functions: Composable for Python · Composable for Node.js
Rust port
Throughout this site, boxes like this mark the places where the Rust port deliberately differs from the Java original — no silent divergence.