Testing a non-browser, headless daemon flow on testnet v0.15.5 (miden-client 0.15.5) surfaced three operational items for daemon/agent builders:
1. ClientBuilder::for_testnet() requires non-default tonic feature
ClientBuilder::for_testnet() is gated behind #[cfg(feature = "tonic")]. The standard getting-started docs show ClientBuilder::for_testnet(), but a fresh binary with miden-client = "0.15.5" fails compilation until features = ["tonic"] is added.
2. Private note discovery side-channel
Notes minted via private faucet (or external note creation) do not surface through sync_state. Ingesting a private note headlessly requires fetching note bytes manually (GET /get_note) and passing them to import_notes() before calling consume_notes(). This aligns with the note transport layer requirements outlined in #1796.
3. Local key rebind vs. AuthSingleSig authority
Wiping an account's primary keystore while retaining store.sqlite3 allows local state re-hydration using an isolated secondary Falcon key (AuthSecretKey::new_falcon512_poseidon2). However, because AuthSingleSig commits to the initial public key, on-chain execution under the rebound key will fail auth validation until multi-sig or Guardian account components are used for full key rotation.
Reference implementation: https://github.com/agent-default/miden-agent
Testing a non-browser, headless daemon flow on testnet v0.15.5 (
miden-client0.15.5) surfaced three operational items for daemon/agent builders:1.
ClientBuilder::for_testnet()requires non-defaulttonicfeatureClientBuilder::for_testnet()is gated behind#[cfg(feature = "tonic")]. The standard getting-started docs showClientBuilder::for_testnet(), but a fresh binary withmiden-client = "0.15.5"fails compilation untilfeatures = ["tonic"]is added.2. Private note discovery side-channel
Notes minted via private faucet (or external note creation) do not surface through
sync_state. Ingesting a private note headlessly requires fetching note bytes manually (GET /get_note) and passing them toimport_notes()before callingconsume_notes(). This aligns with the note transport layer requirements outlined in#1796.3. Local key rebind vs.
AuthSingleSigauthorityWiping an account's primary keystore while retaining
store.sqlite3allows local state re-hydration using an isolated secondary Falcon key (AuthSecretKey::new_falcon512_poseidon2). However, becauseAuthSingleSigcommits to the initial public key, on-chain execution under the rebound key will fail auth validation until multi-sig or Guardian account components are used for full key rotation.Reference implementation: https://github.com/agent-default/miden-agent