New-hire setup for FUTO Notes. For how the codebase is organized and the day-to-day rules, read AGENTS.md next — this doc only gets your machine ready.
- Node + pnpm — the JS toolchain (
pnpmis the package manager;npx/npmis not used here). - Rust (stable) +
cargo— for the Tauri backend and the shared crates. - just — every build/dev/test command lives
in the
justfile. Runjustwith no args to list recipes. - Desktop (Linux): the usual Tauri/WebKitGTK system deps.
- Mobile (optional): Xcode + an iOS simulator for iOS; Android SDK + NDK +
cargo install cargo-ndkfor Android. See AGENTS.md → "Platform Build" and theANDROID_*vars in.env.example.
just install # install all workspace dependencies
just tauri-dev # run the desktop app (Wayland-first, port 5180)
just check # lint + tests + build sanity — run this before pushingDev/debug builds use the
com.futo.notes.devbundle id and a separate notes root (~/Documents/fake-notes), so they never touch a production install. Don't weaken that guard — see AGENTS.md → "Key Constraints".
None are needed to build and run the app. They gate specific workflows
(release tooling, Zulip, sync tests, mobile signing). See
.env.example for the full list with descriptions — copy the
ones you need into your shell profile (~/.zshrc/~/.bashrc) or source a
local .env.
This repo ships shared Claude Code config under .claude/:
- Skills (
.claude/skills/) —/bugfix,/release,/slow-review,/test-agent,/verify,/zulip. Available automatically when you open the repo in Claude Code. Note/release,/verify, and/zulipneedGITLAB_TOKEN/ZULIP_API_KEY(see step 3). - Workflows (
.claude/workflows/) — multi-agent flows likeconformance-checkandsync-adversarial. - Shared settings (
.claude/settings.json) — a small project permission allowlist. Personal overrides go in.claude/settings.local.json(gitignored).
To drive/debug the running app from Claude Code, copy the example config:
cp .mcp.json.example .mcp.json # .mcp.json is gitignoredThis wires up the Tauri MCP bridge (@hypothesi/tauri-mcp-server). See
AGENTS.md → "Browser Tools".
The E2EE sync server is a separate repo:
https://gitlab.futo.org/futo-notes/futo-notes-server. Clone it to
~/Developer/futo-notes-server (or set FUTO_NOTES_E2EE_SERVER_REPO to wherever
you put it). It's only needed for just test-cross-platform; everything else
runs without it.
- AGENTS.md — architecture, where logic lives, key constraints, testing matrix.
docs/spec/— behavioral source of truth, by surface.just check— the gate to pass before pushing.