Expand description
§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
cargo build --workspace§Run the workspace tests
cargo test --workspace§Check formatting and lints
cargo fmt --all --check
cargo clippy --workspace --all-targets --all-features§Running the HTTP server
The ready-to-run executable is in the ave-http crate.
Run it with the default feature set:
cargo run -p ave-httpFeature constraints used across the runtime:
- exactly one of
sqliteorrocksdbmust be enabled ext-sqliteis required by the current runtime
Example with RocksDB internal storage:
cargo run -p ave-http --no-default-features --features "rocksdb ext-sqlite prometheus"§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.
Re-exports§
pub use ave_bridge as bridge;pub use ave_common as common;pub use ave_core as core;pub use ave_identity as identity;pub use ave_network as network;
Structs§
- Api
- AveApi
- AveConfig
- Node configuration.
- Bridge
- Bridge
Config - Control
List Config - Configuration for the control list behaviour.
- Digest
Identifier - Digest bytes plus the algorithm used to produce them.
- Namespace
- Dot-separated namespace.
- Network
Config - Network config
- Network
Worker - Main network worker. Must be polled in order for the network to advance.
- Public
Key - Public key bytes plus the algorithm used to interpret them.
- Routing
Config - Configuration for the routing behaviour.
- Routing
Node - A node in the routing table.
Enums§
- Bridge
Error - Bridge API errors.
- Core
Error - Core API errors that may be returned to users.
- KeyPair
- Owns a signing key and exposes a stable high-level API.
- KeyPair
Algorithm - Key pair algorithms supported by this crate.
- Machine
Profile - Predefined instance profiles with fixed vCPU and RAM.
They only exist to provide convenient default values — the actual
network tuning is derived from the resolved
ram_mbandcpu_cores. - Machine
Spec - How to size the network backend.
- Node
Type - Type of a node.