Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/edda

crates/nornir-claude/Cargo.toml

[package]
name = "nornir-claude"
version = "0.1.1"
edition = "2021"
description = "The ONE shared Anthropic Claude Messages-API client for the nordisk constellation — a provider-agnostic `ClaudeTransport` seam with a deterministic offline stub (no network, no key) and a live HTTP transport, plus the full credential-resolution chain (ANTHROPIC_API_KEY → ANTHROPIC_AUTH_TOKEN → per-session token). REUSE (LAW #5): nornir's viz Claude tab and dwarves' ClaudeTab both consume this leaf instead of twinning a bespoke reqwest client. Never hardcodes a key."
license = "MIT OR Apache-2.0"
repository = "https://git.gunnar.rs/nordisk/edda"
keywords = ["claude", "anthropic", "llm", "messages-api", "transport"]
categories = ["api-bindings", "web-programming::http-client"]
exclude = ["/.nornir/"]

[features]
default = []
# `http` — the LIVE Anthropic transport (`HttpTransport`): a blocking `reqwest`
# POST to `/v1/messages` with rustls (no OpenSSL, LAW #9 — zero-shell). OFF by
# default so the offline stub + the pure types/credential-resolution compile
# with ZERO network deps — a lean/library build carries no reqwest.
http = ["dep:reqwest", "dep:rustls", "dep:webpki-root-certs"]
# `testmatrix` — emit each functional surface's health (offline send /
# credential precedence) into the nornir test-matrix via `functional_status`.
# OFF BY DEFAULT: a compiled-out no-op with no nornir dep.
testmatrix = ["dep:nornir-testmatrix", "nornir-testmatrix/testmatrix"]

[dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "2"

# The LIVE transport's HTTP client — only compiled with `--features http`.
# rustls (no OpenSSL); blocking (the viz is native + thread-driven, no tokio).
reqwest = { version = "0.13", default-features = false, features = [
    "blocking",
    "json",
    "rustls-no-provider",
], optional = true }
# reqwest 0.13 dropped its bundled roots and its `rustls` feature means aws-lc-rs (C)
# + the OS trust store. 0.12's `rustls-tls` was ring + the Mozilla bundle, so take
# `rustls-no-provider` and supply both here (see `tls_roots`). 2026-10-02.
rustls = { version = "0.23", default-features = false, features = ["ring", "std"], optional = true }
webpki-root-certs = { version = "1", optional = true }

# Introspection-marker emitter — only compiled with `testmatrix`. Path+version
# (like the other edda leaves) so the workspace resolves the local sibling.
nornir-testmatrix = { version = "0.2.7", path = "../nornir-testmatrix", default-features = false, optional = true }

[dev-dependencies]
serde_json = "1"