Ave
Open-source Rust workspace for building, embedding, and exposing Ave ledger nodes.
Ave is organized as a set of crates that cover the full stack of a node:
- cryptographic identity primitives
- shared domain and API types
- peer-to-peer networking
- runtime orchestration and contract execution
- application integration
- a ready-to-run HTTP API server
This repository is intended both for users who want to run Ave components and for developers who want to inspect, extend, or reuse parts of the stack.
What this repository contains
The workspace is split into focused crates:
| Crate | Purpose |
|---|---|
ave-identity |
Cryptographic primitives, keys, signatures, hashes |
ave-common |
Shared domain models, bridge types, and common utilities |
ave-network |
libp2p-based peer-to-peer networking layer |
ave-core |
Main runtime engine for building and running Ave nodes |
ave-bridge |
Application-facing integration layer over the runtime |
ave-http |
Axum-based HTTP API, auth system, admin surface, and startup wiring |
The runtime also depends on the sibling ave-actors workspace for the actor model and persistence backends.
How the pieces fit together
At a high level:
ave-identityprovides keys, signatures, and digest types.ave-commondefines the shared request, response, governance, and bridge-facing models.ave-networkprovides peer discovery, messaging, and node networking.ave-corecombines networking, persistence, contract execution, and workflow logic into a node runtime.ave-bridgewraps the runtime into a simpler integration surface for services and applications.ave-httpexposes that integration layer over HTTP with authentication, admin APIs, OpenAPI, and operational middleware.
If you only need one layer, you can depend on that crate directly. If you want the full HTTP server, start with ave-http.
Main capabilities
- event-driven node runtime built in Rust
- actor-based orchestration
- peer-to-peer networking over libp2p
- internal persistence with SQLite or RocksDB
- external SQLite-backed ledger/state storage
- Wasmtime-based contract execution
- sink delivery to external systems with retries and auth bootstrap
- HTTP API with auth, admin endpoints, quotas, API keys, and audit logs
- OpenAPI generation and Swagger UI
- Prometheus metrics support
Repository layout
Top-level folders you will likely care about first:
identity: crypto cratecommon: shared modelsnetwork: P2P layercore: runtime enginebridge: application integration layerhttp: HTTP server and Docker build flow
If you are browsing the code for the first time, a good reading order is:
Getting started
Requirements
- Rust toolchain compatible with the workspace
rust-version - Cargo
- Docker, if you want to build the container images from
http/docker
Build the workspace
Run the workspace tests
Check formatting and lints
Running the HTTP server
The ready-to-run executable is in the ave-http crate.
Run it with the default feature set:
Feature constraints used across the runtime:
- exactly one of
sqliteorrocksdbmust be enabled ext-sqliteis required by the current runtime
Example with RocksDB internal storage:
Docker builds
The repository includes Docker build assets under http/docker.
The main build helper is:
That script supports:
- production builds for both AMD64 and ARM64
- development builds for selected architectures
- SQLite and RocksDB variants
- separate Cargo profiles for production and experimental builds
Configuration
Configuration is layered through the workspace:
ave-coredefines the runtime configurationave-bridgeadds application, auth, logging, sink, and HTTP-related settingsave-httpuses that configuration to start the full HTTP service
The most important configuration areas are:
- key management
- network addresses and boot nodes
- internal and external database paths
- logging outputs and rotation
- sink destinations and sink auth
- HTTP, TLS, proxy, and CORS behavior
- auth and rate-limit settings
Which crate should I use?
- Use
ave-httpif you want a complete HTTP server. - Use
ave-bridgeif you want to embed Ave into an application or daemon. - Use
ave-coreif you want the runtime engine directly. - Use
ave-networkif you only need the P2P layer. - Use
ave-commonfor shared domain and API models. - Use
ave-identityfor cryptographic primitives.
For developers reading the code
If you are here to understand the internals rather than just use the crates:
- start in
core/src/lib.rsto see the runtime entry points - inspect
network/src/lib.rsandnetwork/src/worker.rsfor the networking layer - inspect
bridge/src/lib.rsfor the integration facade - inspect
http/src/startup.rsandhttp/src/server.rsfor process startup and HTTP routes
That path gives a reasonable top-down view of how the workspace is assembled.
Open source
Ave is free software. The source is published so it can be studied, audited, adapted, and improved by others.
This project is a fork of kore, originally developed by Kore Ledger, SL, modified in 2025 by Averiun Ledger, SL, and distributed under the same AGPL-3.0-only license.