Client Libraries Overview
API Reference — This section is for developers consuming Akāmu’s HTTP APIs or using the Rust client libraries. It covers the Admin REST API, ACME protocol wire formats, and the
akamu-jose/akamu-client/akamu-cliSDK. If you are deploying or operating the server, see the Operator Guide. If you are contributing to Akāmu itself, see the Implementation Guide.
The Akāmu repository ships three standalone crates in addition to the server binary. They were extracted from the server so that external Rust applications can speak ACME without pulling in the full server stack.
| Crate | What it provides |
|---|---|
akamu-jose | RFC 7517/7515 JWK/JWS primitives, key thumbprints, ML-DSA signatures |
akamu-client | Full RFC 8555 ACME client lifecycle (async, tokio + hyper) |
akamu-cli | End-user CLI wrapping akamu-client |
Crate dependency graph
graph LR
CLI["akamu-cli"]
CLIENT["akamu-client"]
JOSE["akamu-jose"]
SYNTA["synta-certificate"]
CLI --> CLIENT
CLIENT --> JOSE
JOSE --> SYNTA
The server binary (akamu) also depends on akamu-jose directly; its src/jose/ module is a thin re-export layer.
When to use which crate
Use akamu-jose when you need only cryptographic primitives: JWK parsing, JWS signing/verification, thumbprint computation, or algorithm support. It has no HTTP or database dependencies and compiles quickly.
Use akamu-client when you want to drive the full ACME protocol from Rust code — account registration, ordering, challenge solving, finalization, and certificate download. It brings in tokio and hyper but nothing database-related.
Use akamu-cli when you want a command-line tool and do not want to write Rust. It wraps akamu-client and exposes register, issue, and deregister subcommands.
Getting started
Add crates to your Cargo.toml
[dependencies]
# ACME client + JWK/JWS:
akamu-client = { path = "/path/to/akamu/crates/akamu-client" }
# Or just the crypto primitives:
akamu-jose = { path = "/path/to/akamu/crates/akamu-jose" }
Verify the build
cargo build -p akamu-jose
cargo build -p akamu-client