Spruce Developer Update #28

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 #28

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

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

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


SSX (Self-Sovereign Anything), is the easiest way to integrate Sign-In with Ethereum, enable DAO logins, resolve ENS names, and more. It is the go-to library for developers in web3 to get started with decentralized identity.

Last month, we released a product update covering the latest development efforts on SSX - you can check that out here:

SSX Product Update - Optimization Updates, New Features, and More
We launched SSX in November to provide developers with the easiest way to integrate Sign-In with Ethereum. We are continuously working on a positive developer experience, and additional features to enable builders to work with emerging decentralized identity paradigms.

Additionally, we've released the first of many developer tutorials to come, using SSX with RainbowKit and Alchemy to build your first token-gated dapp:

Tutorial: Build a Basic Token-Gated App with SSX, RainbowKit, and Alchemy
This example will show developers how to build and enable token-gated access in their dapp with SSX based on holding an ENS name. Additionally, it will show a developer how to also use SSX with RainbowKit and Alchemy.

We've continued to work on ways developers can leverage user-controlled data, wider support for NextAuth and Auth.js, additional test coverage, and a big push for ETHDenver this year. Stay tuned for that upcoming release!

with Ethereum Core Libraries

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.

  • We plan on moving EIP-4361 from Review to Last Call this month to fully advance the standard to Final.
  • We are currently updating our ReCap library for extended compatibility with other specifications. We plan on updating EIP-5573 to reflect these changes (siwe-recap #14).
  • Our next community call for Sign-In with Ethereum is this Wednesday - make sure to tune in to hear from us and our friends at Unlock Protocol!
  • We're waiting for some additional external review of our changes to the siwe TypeScript library (#138 and #139).


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.

  • We've recently refactored Kepler to rely on libp2p, and libipld while removing the rust-ipfs dependency (kepler #132).
  • We've added support for a capability read function so clients can read capabilities delegated to them and others if authorized (kepler #134).
  • We've updated the Kepler SDK to account for the changes in Kepler for the capability read function (kepler-sdk #53).


SpruceID is a decentralized identity toolkit that provides everything you need for signing, sharing, and verifying trusted information.


  • We've updated our ssi library to use the latest version of json-ld (ssi #500).


TreeLDR is a schema definition language that aims to describe the structure and semantics of the defined schema in a comprehensible way. It lies at the intersection between RDF and structure-oriented schema definition frameworks such as JSON Schema.

  • We optimized unification of non-recursive blank nodes. The unification phase now runs in O(n) time average instead of O(n²) (treeldr #101).
  • We've added type hierarchy support. TreeLDR now understands what a sub class is. (treeldr #105).
  • We re-introduced RDF loader. This will allow the compiler to accept any RDF syntax as input in the future. For now, only N-Quads (besides the TreeLDR DSL) is supported. (treeldr #108).
  • We relaxed ordering constraints on layout intersection. Intersecting two structure layouts sharing the same fields but in a different order will not raise an error anymore (treeldr #110).
  • We minimalized the rdfs:domain and rdfs:rangerelations. This simplifies a lot of internal reasoning about properties (treeldr #112).

Standards and Community

  • We've contributed a holder-binding focused use-case to the W3C VC use cases (vc-use-cases #129).

Spruce lets users control their data across the web. Spruce provides an ecosystem of open-source tools and products 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: