The Zcash User Universe
ZUU is a synthetic monorepo for building Free2Z products against the Zcash ecosystem from source. It brings our applications, shared wallet code, documentation, and upstream Zcash projects into one integration tree.
Our flagship app is ZUULI: a Zcash-native desktop and mobile app that combines a self-custody wallet with the free2z platform's AI, livestreaming, articles, and 2Z economy. ZUULI is experimental; its implemented surfaces and known release gaps are tracked in its status document.
Important
Local main is read-only. Every change starts from origin/main in a new
branch and isolated worktree, goes through an issue and pull request, and is
squash-merged on GitHub. Local main moves only with
git pull --ff-only origin main. Read AGENTS.md before changing
anything.
The z/ tree vendors 30 Zcash-ecosystem repositories as Git submodules,
organized as z/{github-owner}/{repository}. Our applications can therefore
build and test against real upstream source instead of waiting for published
packages. The complete, authoritative list of submodule URLs and tracked
branches is .gitmodules.
This repository tracks upstream HEAD and fixes forward. If a dependency update exposes a bug in our code, we port our code. If it exposes a genuine upstream regression, we contribute the fix upstream and use a reachable fork commit only as a temporary bridge. AGENTS.md documents that contribution doctrine and the repository's dependency guardrails.
Submodules are intentionally not initialized in a fresh worktree. Initialize
only what your project needs; initializing the entire ecosystem is expensive.
ZUULI and Zuuallet currently require librustzcash:
git submodule update --init --recursive z/zcash/librustzcash| Path | Purpose | Start here |
|---|---|---|
wallet/zuuli/ |
Flagship ZUULI desktop/mobile app (React, TypeScript, Tauri, Rust) | README, status, contributor instructions |
wallet/plugins/tauri-plugin-zcash/ |
Shared native wallet engine over librustzcash |
README, contributor instructions |
wallet/zuuallet/ |
Focused reference wallet using the shared plugin | README, contributor instructions |
ts/react/free2z/ |
Free2Z React frontend | README |
ts/svelte/free2z/ |
Free2Z Svelte frontend | README |
py/dj/proj/zuu/ |
Open-source Free2Z Django backend components | README |
docs/ |
Product, architecture, operations, and contributor documentation | parallel-agent workflow |
z/ |
Upstream Zcash ecosystem Git submodules | submodule manifest |
scripts/ |
Repository-wide Rust, dependency, and CI policy checks | Rust guardrails |
Install only the toolchains needed by the project you choose:
- Git is required; the GitHub CLI (
gh) is used for the issue/PR workflow. - ZUULI frontend development uses Node.js 24, matching CI, and
npm. - Native wallet work uses
rustup;wallet/rust-toolchain.tomlselects the exact Rust compiler for every wallet crate. - Tauri builds need platform-specific system dependencies. iOS and Android builds also need their respective Xcode or Android SDK/NDK tooling; the ZUULI README lists the project commands.
.devcontainer/is an optional general-purpose development container. Project READMEs and CI remain authoritative for current build commands and versions.
The fixture-backed browser mode is the lightest way to explore the flagship UI; it does not require Rust, native SDKs, or submodules:
git clone https://github.com/free2z/zuu.git
cd zuu/wallet/zuuli
npm ci
VITE_MOCK=1 npm run devMock mode is UI/demo evidence, not an end-to-end wallet or production proof.
For the real staging API, native wallet, tests, release state, and mobile
commands, continue with the ZUULI README and
wallet/zuuli/CLAUDE.md.
- Start with open issues labeled
agent-ready. good first issueidentifies narrower entry points;help wantedmarks work where another contributor is especially useful.- Read the issue, its linked code, and the closest
CLAUDE.mdbefore claiming it. Comment on the issue so parallel contributors do not duplicate work. - If the work is not already tracked, open an issue with a bounded scope and acceptance criteria before writing code.
The full process, including review, CI, merge, and safe cleanup, is in docs/PARALLEL-AGENTS.md. The short version for a repository collaborator is:
-
Create or claim one issue and mark it
in-progress. -
Fetch the remote, then create one isolated worktree and branch from
origin/main(never from localmain):git fetch origin git worktree add -b <type>/<issue>-<slug> <worktree-path> origin/main
-
Make one focused change, follow the nearest project instructions, and run the relevant checks in that worktree.
-
Push the branch and open one pull request against
main; includeCloses #<issue>in its body. -
Wait for required CI and an approving review. A red gate never merges.
-
Squash-merge on the remote. Only then fast-forward the primary checkout's local
mainfromorigin/mainand perform the audited worktree cleanup.
Contributors without repository push access should still start from an issue,
keep local main clean, branch from the upstream main, and open the pull
request from a fork.
The submodules currently span:
- Core protocol and nodes: Zcash, Zcash Foundation, and Zakura projects,
including
librustzcash, Orchard, Zebra, Zallet, Zcash, and Zakura. - Wallets and SDKs: Zcash mobile SDKs, ZODL wallets, Warp, and ZWallet.
- Community implementations: ChainSafe WebZjs, Zingo Labs, Nozy Wallet, and QED-it's ZSA work.
Always use .gitmodules rather than this summary when deciding
which upstream repository and branch a path tracks.
ZUU's own source is available under the MIT License. Each Git submodule is an independent upstream repository with its own license and contribution rules.