Spruce Developer Update #25

At Spruce, we’re letting users control their identity and data across the web. Here’s the latest from our development efforts.

Spruce Developer Update #25

In case you missed it, check out our previous update here:

Spruce Developer Update #24
At Spruce, we’re letting users control their identity and data across the web. Every month, we release a developer update detailing our progress on our open source libraries and beyond.

At Spruce, we’re letting users control their identity and data across the web. Here’s the latest from our development efforts:

with Ethereum

Sign-In with Ethereum is a new form of authentication that enables users to control their digital identity with their Ethereum account and ENS profile instead of relying on a traditional intermediary.

  • The latest Sign-In with Ethereum community call took place earlier this week - you can listen to the recording here:
SIWE Community Call - November 2, 2022
  • We've released v.2.1.3-beta of our TypeScript library that incorporates a number of library improvements, additional tests, safeguards, and more:
Releases · spruceid/siwe
Sign-In with Ethereum library. Contribute to spruceid/siwe development by creating an account on GitHub.
  • As mentioned in a previous update, most of our efforts are currently focused on a product that will make working with Sign-In with Ethereum even easier for developers. Additionally, this initiative will also include enhancements to existing applications and additional information on user interactions. Interested in testing this out early? Get in touch!
  • As mentioned in a previous update, we're specifying ReCaps which provides concise wallet-signable messages with capability delegations. If approved, this will be EIP-5573, and an extension specification to Sign-In with Ethereum. For more information on ReCaps, check out this post:
Extending Sign-In with Ethereum to Authorizations - ReCap
Sign-In with Ethereum describes how Ethereum accounts authenticate with off-chain applications. ReCap introduces a mechanism that allows an off-chain application to combine authentication and authorization of such, while preserving security and optimizing UX.


Kepler is a decentralized storage network organized around data overlays called Orbits. Kepler allows users to Securely share their digital credentials, private files, and sensitive media to blockchain accounts, all using your Web3 wallet.

  • Kepler is undergoing architectural changes, doubling down on rust IPLD from the rust IPFS project, thereby improving performance by removing the block size restrictions. This will further improve maintainability and agility to select network protocols, which we hope to contribute back to the rust IPFS ecosystem soon.


SpruceID is a decentralized identity toolkit that provides everything you need for signing, sharing, and verifying trusted information. Documentation for our core identity tooling can be found here:

SpruceID - SpruceID
The Toolkit for Decentralized Identity


  • Added support for did-jwk (#466).
  • Added support for VP holder bindings (#450).
  • Updated cryptographic libraries, allowing for better definition of hashes length (#385).
  • Fixed the default verification method selection (#475).
  • Refactored features across crates and improved CI coverage of features (#479).


  • Merged support for Solana wallets, as well as linking accounts together for both Ethereum and Solana wallets respectively (#32).
  • We are concluding our work on a workflow that involves linking an email address to a public key (#34).


  • Upgraded the json-ld and rdf-types dependency libraries to the latest versions, 0.9.0-beta and 0.12.2 respectively (#39, #36, #33). This will allow TreeLDR to compile with stable Rust 1.65.
  • Added support for literal identifiers (#46) - this is particularly useful when exporting TreeLDR to JSON-LD contexts to specify a type field to be exported to the JSON-LD `@type` keyword:
  • Added support for the combination of multiple and required property/field attributes (#47), When specifying both attributes, required was ignored before.
  • Fixed a bug where the field name in a type definition was ignored in the associated implicit layout definition (#48).
  • Added new tests to the parser and JSON-LD context generator (#44).

Spruce lets users control their data across the web. Spruce provides an ecosystem of open-source tools for developers that let users collect their data in one place they control, and show their cards however they want.

If you're curious about integrating Spruce's technology into your project, come chat with us in our Discord: