Skip to content

Your First Garden

With the binaries installed, softfig onboard turns an empty machine into a working garden: it sets your passphrase, shows a recovery phrase once, and writes an encrypted genesis commit.

softfig onboard prompts for a passphrase, so it needs a terminal.

Terminal window
softfig onboard
Flag Default Meaning
--garden-root PATH ~/soft-fig_garden where the plaintext view mounts
--state-root PATH ~/.local/share/softfig/<garden-dir-name>/ (honors $XDG_DATA_HOME) where the encrypted .softfig/ store lives
--machine NAME system hostname machine identity stamped into the skeleton
--customize off interactively pick which concept dirs to include
--yes off accept defaults and skip the concept-dir prompts (the passphrase still needs a terminal)

Onboarding refuses to run if a garden already exists at the state root.

The wizard asks for a master passphrase twice, then prints the recovery phrase.

  • The passphrase unlocks the garden day to day.
  • The recovery phrase is a second door in, used with softfig vault recover if you forget the passphrase. It is never stored in plaintext.

The scaffold is born in FUSE: the embedded skeleton is encrypted straight into the state root as the genesis init commit, and no plaintext ever lands on disk. It also writes a small keeper.toml pointer (under .softfig/ at the garden root and beside the state) telling the daemon where the state lives. Until the daemon mounts the garden, the garden root holds only that pointer.

If onboard-device.sh enabled the systemd unit, the daemon is already running, locked. Otherwise start it yourself. Unlocking mounts the garden.

Terminal window
# if the unit is enabled:
systemctl --user status softfig-keeperd # running, locked
# ...or run it in the foreground (use a second terminal for the next command):
softfig daemon start --garden ~/soft-fig_garden
# then, once per boot:
softfig daemon unlock # prompts for your passphrase

The garden stays mounted until the daemon stops or locks. Check it any time with softfig daemon status.

Terminal window
ls ~/soft-fig_garden
# CLAUDE.md config/ inbox/ journal/ meta/ packages/ services/ ...
cat ~/soft-fig_garden/CLAUDE.md # the root map that routes any question

Before unlock that ls shows no garden files; stop the daemon and they vanish again, because plaintext exists only through the mount.

Most concept directories are deliberately thin stubs. Growing them is the practice; see Make It Your Own.

Open Claude Code from the garden root, so its always-loaded CLAUDE.md gives the session the map:

Terminal window
cd ~/soft-fig_garden && claude

Make it a habit with an alias:

Terminal window
alias garden='cd ~/soft-fig_garden && claude'

Claude can read the garden as soon as it is unlocked. To let it write through soft-fig’s verbs, do the one-time softfig-mcp registration.