Dependencies

Built on a Lean Foundation

Anvil DB is deliberately light on third-party crates. The graph data model, the Cypher engine, the GraphQL layer, the graph algorithms, the plugin framework, and the Rust client driver are all written against the standard library with no external dependencies. Third-party crates are concentrated in the HTTP server, the storage engine, and the CLI.

~22
Direct external crates
294
Total resolved packages
9
Crates with zero external deps

Zero-dependency core

These crates are implemented entirely on the Rust standard library — they depend only on each other, never on a third-party package.

anvil-core

Graph data model — nodes, relationships, properties, labels, schema. Depends on nothing.

anvil-cypher

Cypher lexer, parser, analyzer, planner, and Volcano executor. Depends on nothing.

anvil-graphql

Auto-generated GraphQL schema and resolvers. Depends on nothing.

anvil-client

Official Rust client driver. Pure std, depends on nothing.

anvil-algorithms

Graph algorithms (PageRank, shortest paths, community detection). Only anvil-core.

anvil-plugin-sdk

Plugin framework traits and registry. Only anvil-core.

anvil-migration

Import/export (Cypher dumps, CSV, GraphML, JSON-LD). Only anvil-core.

anvil-apoc

Built-in standard-library plugin. anvil-core + anvil-plugin-sdk.

anvil-cluster

Replication, Raft consensus, sharding. anvil-core + anvil-storage.

External crates

Every third-party crate in the workspace, grouped by what it does and annotated with how Anvil actually uses it.

Web server & async runtime

6
tokiov1full

The async runtime that powers everything server-side: the HTTP listener, WAL/checkpoint background tasks, graceful shutdown, and async CLI operations.

axumv0.8

HTTP routing, handlers, and extractors for the whole API surface: REST DB endpoints, GraphQL, the document store, file storage, and auth.

axum-serverv0.7tls-rustls-no-provider

The TLS-terminating HTTP listener used when a cert/key are configured (HTTPS). It pins no crypto backend, so the whole binary standardizes on the ring provider.

tower-httpv0.6cors

CORS middleware, so the Hammer UI (served from a different origin) can call the API from the browser.

tokio-utilv0.7io

ReaderStream / StreamReader bridges for streaming file-storage objects between disk and HTTP bodies without buffering them fully in memory.

futures-utilv0.3

Stream combinators (TryStreamExt) used alongside tokio-util for streaming object uploads and downloads.

Serialization

2
serdev1derive

Derive Serialize/Deserialize for API request/response types and configuration structs.

serde_jsonv1

JSON encoding/decoding for HTTP request and response bodies, and for document-store values.

Authentication & cryptography

7
jsonwebtokenv9

Encode and verify JWT access tokens using RS256; backs the /.well-known/jwks.json endpoint.

rsav0.9

Generate and serialize (PKCS#1) the RSA key pair that signs JWTs. Generated on first boot and persisted to data/jwt_key.pem.

argon2v0.5std

Argon2id password hashing and verification for user credentials.

sha2v0.10

SHA-256 for refresh-token hashing, file content hashing (dedup), image content hashes, and the digest inside HMAC-signed URLs.

hmacv0.12

HMAC-SHA256 to sign and verify time-limited signed storage URLs.

base64v0.22

Base64 for SMTP AUTH credential encoding and URL-safe encoding of signed-URL signatures and tokens.

uuidv1v4

Random v4 identifiers for users, roles, and temporary key files during URL signing.

TLS (outbound SMTP)

2

The outbound TLS client for verification / one-time-password emails. The inbound HTTPS listener (axum-server) and the CLI (reqwest) also use rustls — all three resolve to the ring crypto provider, chosen so exactly one provider is compiled into the binary.

tokio-rustlsv0.26loggingtls12ring

The rustls-based async TLS client for the SMTP connection. Pinned to the ring provider so it never conflicts with the other rustls consumers.

webpki-rootsv1

Mozilla's root CA trust anchors, used to validate the SMTP server's certificate.

Storage engine

1
memmap2v0.9

Memory-mapped file I/O (MmapMut) for the page-based storage engine's on-disk pages.

Media

1
imagev0.25pngjpegwebp

Decode, resize, and re-encode images stored in the file-storage subsystem — on-the-fly thumbnails and format transforms. Default features are off; only the three needed codecs are enabled.

CLI HTTP client

1
reqwestv0.12jsonblockingrustls-tlsstream

The blocking HTTP client the anvil CLI uses to talk to a running server (e.g. the anvil storage subcommands). Uses rustls (ring) rather than system OpenSSL.

Development & benchmarking

2

Not shipped in the release binaries.

criterionv0.5html_reports

Statistical benchmarking harness for storage, Cypher, and the LDBC SNB workload; emits HTML reports.

tempfilev3

Throwaway temporary directories and files in CLI tests.