Gunnar

nordisk/monetize

crates/monetize-front/Cargo.toml

# **`monetize-front` — the ONE monetize's intake and operator-side halves.**
#
# Moved from gunnar-front (gunnar-live 4c3d24d, 2026-09-27). Since r5.4 ("ONE
# monetize", K3/OM-8) there is no embedded monetize on an estate and no dial-in
# lane: no plugin door, no self-registration, no endpoint filled in. What stays
# is the pull channel — the feed taken into monetize's config (`intake`), the
# attach mint (`attach`) and the operator-sealed ledger backup (`ledger_backup`).
#
# ## A member of `monetize`'s workspace since T14 (A28 M1)
#
# `attach` speaks the installer's wire (Skidbladnir `nordisk-pairing`,
# `plugin-door-wire`), by sibling path. This crate was a detached workspace so
# that a clone of monetize needed no Skidbladnir checkout; the root's own
# members (monetize-estate-side, monetize-mail, lake-product) path-depend on
# `nordisk-pairing` now, so that reason is gone and the crate is in the root's
# lock and its `cargo test --workspace`.
[package]
name = "monetize-front"
version = "0.1.0"
edition = "2021"
rust-version = "1.85"
license = "AGPL-3.0-only"
publish = false
description = "The ONE monetize's intake (the operator's feed — plugins, vendors, clouds, the signup sink, secrets, monetize.toml — taken into monetize's config and guest files atomically, pull only), the attach mint and the operator-sealed ledger backup. No product type in it, no estate dialled."

[dependencies]
monetize-server = { path = "../monetize-server" }
# The vendor instance names (`<kind>/<instance>`) a fed `vendor.<kind>.<instance>.*` becomes.
monetize-pay = { path = "../monetize-pay" }
# The fed control principals are judged as OpenSSH keys by the one verifier
# monetize checks them with (control_auth over edda nornir-auth-sshsig).
monetize-proto = { path = "../monetize-proto" }
monetize = { path = "../monetize" }
# The one writer of a guest's secrets (`secrets::write`, 0600).
monetize-product-wasm = { path = "../monetize-product-wasm" }
nordisk-pairing = { path = "../../../Skidbladnir/crates/installer/nordisk-pairing", version = "0.5.11" }
plugin-door-wire = { path = "../../../Skidbladnir/crates/installer/plugin-door-wire", version = "0.1.0" }
axum = { version = "0.8", default-features = false, features = ["tokio", "http1", "http2", "json"] }
tokio = { version = "1", features = ["rt", "net", "time", "sync", "macros", "io-util"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = "1"
base64 = "0.23"
rand_core = { version = "0.6", features = ["getrandom"] }
tracing = "0.1"
anyhow = "1"
# ledger_backup: AES-256-GCM, SHA-256 and the randomness for the operator-sealed
# backup.
ring = "0.17"
# ledger_backup: `Ledger.Export` on the running monetize, over loopback.
tonic = { version = "0.14", default-features = false, features = ["transport", "codegen"] }

[dev-dependencies]
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
tempfile = "3"
# tests/attach.rs: the route driven without a socket, the owner's key.
tower = { version = "0.5", features = ["util"] }
# The same ssh-key as plugin-door-wire (Skidbladnir c950175: 0.7), or its sign() takes a different key type.
ssh-key = { version = "=0.7.0-rc.11", default-features = false, features = ["ed25519", "std", "alloc"] }
sha2 = "0.11"
blake3 = "1"
# The admission test signs its guest under a fed root (every guest monetize runs is signed).
guest-host = { path = "../../../edda/crates/guest-host", features = ["verify-modules"] }