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.
These crates are implemented entirely on the Rust standard library — they depend only on each other, never on a third-party package.
anvil-coreGraph data model — nodes, relationships, properties, labels, schema. Depends on nothing.
anvil-cypherCypher lexer, parser, analyzer, planner, and Volcano executor. Depends on nothing.
anvil-graphqlAuto-generated GraphQL schema and resolvers. Depends on nothing.
anvil-clientOfficial Rust client driver. Pure std, depends on nothing.
anvil-algorithmsGraph algorithms (PageRank, shortest paths, community detection). Only anvil-core.
anvil-plugin-sdkPlugin framework traits and registry. Only anvil-core.
anvil-migrationImport/export (Cypher dumps, CSV, GraphML, JSON-LD). Only anvil-core.
anvil-apocBuilt-in standard-library plugin. anvil-core + anvil-plugin-sdk.
anvil-clusterReplication, Raft consensus, sharding. anvil-core + anvil-storage.
Every third-party crate in the workspace, grouped by what it does and annotated with how Anvil actually uses it.
tokiov1fullThe async runtime that powers everything server-side: the HTTP listener, WAL/checkpoint background tasks, graceful shutdown, and async CLI operations.
axumv0.8HTTP 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-providerThe 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.6corsCORS middleware, so the Hammer UI (served from a different origin) can call the API from the browser.
tokio-utilv0.7ioReaderStream / StreamReader bridges for streaming file-storage objects between disk and HTTP bodies without buffering them fully in memory.
futures-utilv0.3Stream combinators (TryStreamExt) used alongside tokio-util for streaming object uploads and downloads.
serdev1deriveDerive Serialize/Deserialize for API request/response types and configuration structs.
serde_jsonv1JSON encoding/decoding for HTTP request and response bodies, and for document-store values.
jsonwebtokenv9Encode and verify JWT access tokens using RS256; backs the /.well-known/jwks.json endpoint.
rsav0.9Generate and serialize (PKCS#1) the RSA key pair that signs JWTs. Generated on first boot and persisted to data/jwt_key.pem.
argon2v0.5stdArgon2id password hashing and verification for user credentials.
sha2v0.10SHA-256 for refresh-token hashing, file content hashing (dedup), image content hashes, and the digest inside HMAC-signed URLs.
hmacv0.12HMAC-SHA256 to sign and verify time-limited signed storage URLs.
base64v0.22Base64 for SMTP AUTH credential encoding and URL-safe encoding of signed-URL signatures and tokens.
uuidv1v4Random v4 identifiers for users, roles, and temporary key files during URL signing.
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.26loggingtls12ringThe rustls-based async TLS client for the SMTP connection. Pinned to the ring provider so it never conflicts with the other rustls consumers.
webpki-rootsv1Mozilla's root CA trust anchors, used to validate the SMTP server's certificate.
memmap2v0.9Memory-mapped file I/O (MmapMut) for the page-based storage engine's on-disk pages.
imagev0.25pngjpegwebpDecode, 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.
reqwestv0.12jsonblockingrustls-tlsstreamThe 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.
Not shipped in the release binaries.
criterionv0.5html_reportsStatistical benchmarking harness for storage, Cypher, and the LDBC SNB workload; emits HTML reports.
tempfilev3Throwaway temporary directories and files in CLI tests.