AI coding agents like Claude Code are terminal programs. Inference โ the actual thinking โ runs on the provider's servers. The client just needs a shell, a filesystem, and a network connection. So the machine you "work on" can be a small, silent, 5-watt ARM board, as long as it's always on and reachable.
ORCHARD splits your workstation into three roles:
All inference. The Pi sends prompts, gets diffs and answers back.
Source of truth for code.
Source of truth for notes (plain Markdown).
Claude Code ยท tmux ยท git ยท notes sync ยท whisper.cpp. Always on, ~5 W.
Xcode ยท fastlane ยท signing. Ships to App Store / Play.
iOS simulators ยท Android device via adb.
Any device. SSH in, attach tmux, type or talk.
Lose any single device and you lose hardware, not data โ everything stateful lives in GitHub, Nextcloud, or your provider account. That's the whole security and recovery model.
Each track is a complete, working build. Later tracks add capability and effort. AI subscription cost is the same on every track (see ยง17) and excluded here. Below Seedling there's also a $0 on-ramp โ the ๐ฐ Pip rungs on the next page.
| Track | What you get | Setup | Upkeep | Cost ฮ |
|---|---|---|---|---|
| ๐ฑ Seedling beginner |
Pi + Tailscale + AI client + notes sync. Chat with a frontier model from anywhere, write code and notes. No mobile builds. | 1 evening (2โ4 h) |
~15 min/mo | $140โ220 (the Pi kit) |
| ๐ Grafted intermediate |
Seedling + Mac build/simulator nodes running your existing fastlane lanes. Full Flutter โ App Store / Play pipeline. This guide's main path. | 1 weekend (6โ10 h) |
~30 min/mo + Xcode updates | +$0 with spare Macs; used M-series mini $350โ600 |
| ๐ง Hydroponic intermediate |
Seedling + no Macs: iOS/Android builds run on Codemagic or GitHub Actions macOS runners; fastlane publishes from CI. | 1 weekend (mostly CI config) |
~20 min/mo | $0 hardware; CI $0โ95/mo by usage |
| ๐ก Greenhouse advanced |
Grafted + self-hosted everything: Headscale instead of Tailscale's control plane, self-hosted Nextcloud, Gitea mirror. Maximum data sovereignty. | 2โ3 weekends | 2โ4 h/mo (you are now an ops team) | +$5โ15/mo VPS or +$100 second board |
| ๐ฒ Wild advanced |
Any track + local fallback models on the Pi itself via llama.cpp โ "usable offline assistant," not frontier. | +1 weekend | as desired | +$0 (get the 16 GB board) |
| ๐ Heirloom advanced |
Any track + a dedicated local-model box: a GPU PC or big-RAM Mac on the tailnet serving open-weight models via llama.cpp. Prompts never leave home. Details in ยง20. | 1โ2 weekends | ~1 h/mo (models, drivers) | +$0 with an owned gaming PC; used 24 GB GPU $600โ900 |
Every rung is a price tag โ spend nothing until something actually pinches. And note the bottom rung: AI is optional. This build works as a pure shared docs-and-notes system for $0, with AI added per-person, later or never.
| You spend | The build | You get / what pinches |
|---|---|---|
| $0 nothing, ever |
Notes only โ no AI at all. Any machine you own (retired laptop, ยง19) + free hosted Nextcloud (The Good Cloud, 2 GB) + Tailscale + Obsidian on your devices. Skip ยง10 entirely. | A complete private docs/notes system, synced everywhere โ for one person or several (share the vault, ยง12). Nothing pinches. This can be the whole build. |
| $0 still nothing |
Add free AI โ when, and only if, someone wants it: Ollama Cloud or Gemini CLI free tier. Vault-sharers who don't want AI never touch it. | AI chat, notes help, light writing and code. Pinches: rate limits and model quality. |
| $150 once |
A dedicated board (Pi kit, ยง4) โ when the borrowed machine gets reclaimed or its fan noise outstays its welcome. | Same capability, now silent, always-on, 5 W. |
| $50โ150 per year |
Paid fixes for whichever pinch arrived first: a bigger vault tier (~$30โ60/yr) ยท occasional pay-per-token credits for harder tasks ($5โ15/mo light use). | Covers most notes-and-assistant lives indefinitely. Many people never climb past here. |
| $240โ2,400 per year |
A frontier subscription (Claude Pro โ Max) โ when the agent becomes a daily coworker and free-tier quality starts costing you time. | The Field Guide's main path: quality that compounds (ยง17, ยง19). |
| +$0โ600 once ยท +$99/yr |
Build nodes โ spare Macs (ยง13) or CI (Hydroponic), plus Apple's developer fee, for shipping real apps. | The full orchard (ยง17 has the complete math). |
more: thegood.cloud ยท nextcloud.com/sign-up ยท ollama.com ยท openrouter.ai
This build isn't just for developers. Each card names the track (ยง2), the hardware and software that fit, and the realistic cost.
A frontier model on tap for problem sets, papers, and side projects, plus a synced vault of lecture notes. Dorm-cheap, and running it is a Linux course. Check the GitHub Student Pack for freebies.
A private assistant for life admin: journaling, drafting emails, trip planning, budgets, and a notes vault that follows you everywhere. No developer parts โ stop at ยง12 and you're done.
The full guide: agent HQ on the Pi, spare Macs building and shipping via fastlane, simulators on demand. Ship an app to TestFlight from a phone on a train.
Prototype without owning the toolchain: describe screens, get running Flutter/web previews on a simulator, pull screenshots back to critique. The vault holds specs, copy decks, and design notes.
Website tweaks, marketing copy, spreadsheet questions answered in plain English, and a synced binder of SOPs, supplier notes, and prices โ without hiring out every small change.
One always-on box for the crew: shared repos, a communal wiki-vault, game-night tooling. Everyone SSHes in with their own Linux account; AI is per-person and optional (subscriptions are individual by ToS) โ split only the hardware.
A tiny ops hub for a nonprofit or club: grant and newsletter drafting, meeting-minute summaries, and a shared knowledge base volunteers can actually search. When data must stay in-house, step up to self-hosted Nextcloud on the same board โ the Greenhouse track's gentler half.
| Part | Pick | Price |
|---|---|---|
| Board | Orange Pi 5, 8 GB minimum (16 GB for the Wild track). The RK3588S runs this workload at single-digit watts. No Pi? A retired laptop works โ see ยง19. | $90โ150 |
| Storage | 256 GB+ NVMe SSD (M.2 2242). Boot from NVMe, not SD โ worn-out SD cards are the #1 killer of always-on boards. Keep an SD only as the installer. | $25โ40 |
| Power | Quality 5 V/4 A USB-C supply. Cheap supplies cause random crashes you'll blame on software. | $12โ15 |
| Case | Passive aluminum heatsink case โ no fan, no noise, no dust maintenance. | $15โ25 |
| Network | Ethernet to your router. Wi-Fi works; wired is boring, and boring is the goal. | $5 |
| Total | One complete Grove | โ $150โ235 |
| You areโฆ | Orange Pi 5 | Raspberry Pi 5 | Why |
|---|---|---|---|
| New to Linux beginner |
DietPi (RK3588 image) | Raspberry Pi OS Lite (64-bit) | Menu-driven setup, sane defaults, big communities. DietPi installs Tailscale in two keystrokes. |
| Comfortable in a terminal intermediate |
Armbian (Ubuntu 24.04) โ this guide's default | Ubuntu Server 24.04 LTS | Armbian is the gold standard for non-Raspberry boards: proper kernel support, armbian-config handles NVMe boot. |
| Ops person advanced |
Ubuntu Rockchip (Joshua-Riek) or NixOS | NixOS | NixOS makes the whole box one declarative config file โ the ultimate rebuild-from-nothing story. |
more: armbian.com ยท dietpi.com ยท raspberrypi.com/software ยท nixos.org
ssh root@<pi-ip> # Armbian first-boot wizard: set passwords, create your user
sudo armbian-config # System โ Install โ boot from NVMe โ follow prompts sudo reboot # then pull the SD card
sudo raspi-config โ Advanced โ Boot Order โ NVMe first, clone with sudo rpi-clone nvme0n1, reboot without the SD.more: etcher.balena.io ยท armbian.com/orange-pi-5
sudo apt update && sudo apt full-upgrade -y
sudo apt install -y unattended-upgrades tmux git curl htop
sudo dpkg-reconfigure -plow unattended-upgrades # auto security patches: YES
Switch SSH to keys only. (After ยง8, Tailscale can own SSH auth entirely.)
# from your laptop โ copy your key onto the pi ssh-copy-id you@<pi-ip> # on the pi โ turn off password logins sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config sudo systemctl restart ssh
systemctl status unattended-upgrades shows activesudo hostnamectl set-hostname groveTailscale builds an encrypted WireGuard mesh between your devices โ zero open ports, zero router config. The free Personal plan covers this entire build.
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up --ssh # --ssh: tailscale handles SSH auth via your identity
Then in the admin console at login.tailscale.com:
grove from every device on your tailnet.ssh grove = your dev environment in your pocket.sudo ufw allow in on tailscale0 && sudo ufw enable. The box is now unreachable except through your tailnet identity.more: tailscale.com/kb ยท tailscale.com/kb/1193/tailscale-ssh
tmux keeps terminal sessions alive when you disconnect โ that's what makes "start a task from the couch, check it from the train" work.
# ~/.tmux.conf
set -g mouse on
set -g history-limit 100000
set -g default-terminal "tmux-256color"
# daily-driver alias (~/.bashrc or ~/.zshrc) alias work='tmux new -A -s main' # attach if it exists, create if not
Every login becomes ssh grove โ work โ exactly where you left off, agent mid-task and all. On flaky mobile connections add mosh (sudo apt install mosh) for lag-free roaming.
Rather not SSH at all? The โ chat mode side quest turns the agent into a contact in the Claude app or your group chat.
more: github.com/tmux/tmux/wiki ยท mosh.org
Examples use Claude Code; the pattern is identical for Codex CLI, Gemini CLI, or aider โ all run on ARM64 Linux.
# Node 22 LTS via nvm (survives distro upgrades better than apt's node) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash source ~/.bashrc && nvm install 22 npm install -g @anthropic-ai/claude-code claude # first run: browser-based login
Headless login: the login flow wants a browser. Either paste the printed URL into any browser and copy the code back, or port-forward: ssh -L 54545:localhost:54545 grove and open the URL locally.
more: docs.claude.com/en/docs/claude-code ยท github.com/nvm-sh/nvm ยท aider.chat
sudo apt install -y gh
gh auth login # choose SSH, let it generate + upload a key
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
mkdir -p ~/lazy-agent/projects && cd ~/lazy-agent/projects && gh repo clone you/your-app
Keep every active repo under ~/lazy-agent/projects โ the agent workspace (ยง21). The agent works in these clones. GitHub is the bridge to the Macs: they pull what the Pi pushes.
more: cli.github.com
Each Obsidian vault is a folder of Markdown files โ Obsidian never runs on the Pi. Keep every vault under one parent, ~/lazy-agent/vaults/ (ยง21), and a single sync covers them all: personal, shared, per-project.
sudo apt install -y nextcloud-desktop-cmd
mkdir -p ~/lazy-agent/vaults
# use an APP PASSWORD: Nextcloud โ Settings โ Security โ Devices & sessions
Create a service + timer so sync runs every 5 minutes, forever:
# /etc/systemd/system/vaultsync.service [Unit] Description=Nextcloud vault sync [Service] Type=oneshot User=you ExecStart=/usr/bin/nextcloudcmd --non-interactive \ --user you --password-from-env \ /home/you/lazy-agent/vaults https://cloud.example.com/remote.php/webdav/Vaults EnvironmentFile=/home/you/.config/vaultsync.env # NC_PASSWORD=app-password ยท chmod 600 # /etc/systemd/system/vaultsync.timer [Unit] Description=Sync vault every 5 min [Timer] OnBootSec=2min OnUnitActiveSec=5min [Install] WantedBy=timers.target
sudo systemctl enable --now vaultsync.timer
systemctl list-timers | grep vault # verify
Now "take notes in my Obsidian" is just the agent writing Markdown into a vault โ add a vault by adding a directory. Each vault carries an AGENTS.md telling agents how to treat it; layout and ready-made files in ยง21.
*_conflict-* โ ask the agent to merge it; it's good at that. Chat mode (โ
) avoids conflicts entirely โ the agent becomes the vault's only writer.vaults/shared) with other accounts and each person syncs it to their devices โ a free, private, multi-user docs system, no AI required. AI stays per-person and opt-in.more: docs.nextcloud.com ยท obsidian.md
About 10 minutes per Mac:
mac-build, mac-sim โ so lanes and docs survive hardware swaps.sudo pmset -a sleep 0 disablesleep 1. Laptops: keep the lid open or add a dummy HDMI plug โ simulators want a "display."xcodes; then sudo xcodebuild -license accept.~/src/your-app.fastlane match development. Keep MATCH_PASSWORD and the App Store Connect API key in ~/.zshenv (chmod 600), never in the repo.mac-sim (or the Pi) โ adb devices over USB, or Wi-Fi adb across the tailnet. Google ships no Android emulator for ARM Linux; real devices are better for end-to-end testing anyway.codemagic.yaml or a GitHub Actions workflow on macos-latest that runs your existing fastlane lanes on push or tag. The Pi's job ends at git push; TestFlight and Play uploads happen in CI. Free tiers cover light use; heavy shipping runs $30โ95/mo.more: docs.fastlane.tools ยท docs.fastlane.tools/actions/match ยท github.com/XcodesOrg/xcodes ยท codemagic.io
The part that feels like magic: the agent on the Pi treats the Macs as tools. Because fastlane already encodes your signing and release logic, the agent never needs to understand Xcode โ it runs lanes over SSH and reads the output.
# things the agent (or you) run from the pi
ssh mac-build 'cd ~/src/your-app && git pull && fastlane ios beta'
ssh mac-sim 'xcrun simctl boot "iPhone 16"; cd ~/src/your-app && flutter run -d iPhone'
ssh mac-sim 'xcrun simctl io booted screenshot /tmp/s.png' && scp mac-sim:/tmp/s.png .
Teach every repo the topology with a CLAUDE.md (or AGENTS.md) block:
# CLAUDE.md (excerpt)
## Build topology
- This machine (grove) is ARM Linux: edit, test pure-Dart, git. No Xcode here.
- iOS build/publish: ssh mac-build 'cd ~/src/your-app && fastlane ios beta'
- iOS simulator runs: ssh mac-sim 'โฆ' โ screenshot via simctl, scp back to inspect
- Android device tests: adb over the tailnet on mac-sim
- Always commit + push before triggering remote lanes (Macs build from git)
Allow-list the pattern once in the project's .claude/settings.json so remote builds don't prompt every time:
{ "permissions": { "allow": [ "Bash(ssh mac-build *)", "Bash(ssh mac-sim *)" ] } }
more: docs.claude.com/en/docs/claude-code/settings
small/base comfortably. Record a voice memo on your phone โ it syncs into ~/vault/Inbox/ via Nextcloud โ a systemd path unit transcribes it into your daily note or feeds it to the agent as a prompt. About an hour of glue scripting.git clone https://github.com/ggerganov/whisper.cpp && cd whisper.cpp cmake -B build && cmake --build build -j ./build/bin/whisper-cli -m models/ggml-small.bin -f memo.wav -otxt
Be clear-eyed about one thing: cloud inference and anonymity are at odds. The provider sees your prompts, code, and notes, attached to a paying account. The realistic posture is trusted provider + minimized exposure, not anonymity theater.
| Layer | Posture |
|---|---|
| Provider | Pick one with no-training-on-your-data terms for your plan, and verify the current policy. Keep secrets out of prompts and out of repo files โ agents read files. Env files, not code. |
| Network | Tailscale is WireGuard: end-to-end encrypted, no inbound ports. Coordination metadata does pass through Tailscale Inc. โ if that's unacceptable, Headscale (Greenhouse track) self-hosts it at real ops cost. |
| The Pi | Key/Tailscale-identity SSH only ยท unattended-upgrades ยท secrets in chmod-600 env files ยท LUKS-encrypt the NVMe if other people can physically reach the device. |
| Vault | Nextcloud is as private as its host โ self-host it or use end-to-end-encrypted folders for sensitive areas. Keep truly private notes in folders outside the agent's working directory, with deny rules so it can't wander in. |
| Blast radius | Macs hold only clones + signing certs (recoverable via match). The Pi holds clones + a vault copy (recoverable from GitHub/Nextcloud). Any device can be wiped and rebuilt from this guide in an afternoon โ that is the security model. |
The AI subscription dominates everything else. The hardware is a rounding error next to a year of inference โ which is exactly why the client belongs on a $150 board instead of a $2,000 laptop.
| Cadence | Task | Time |
|---|---|---|
| Automatic | Security patches (unattended-upgrades) ยท vault sync (systemd timer) ยท Tailscale self-updates on most installs | 0 |
| Monthly | ssh grove โ sudo apt full-upgrade && sudo reboot ยท glance at systemctl --failed and disk space | 10 min |
| When Apple ships | Update Xcode on the Macs (pin with xcodes), run one fastlane ios beta to confirm the pipeline | 30 min, ~quarterly |
| Twice a year | Check NVMe health (smartctl) ยท confirm you could still rebuild: is this guide + your dotfiles repo current? | 20 min |
Plant once, water monthly, harvest daily. ๐
The two most common "couldn't I justโฆ?" swaps: what you gain, what you give up, and why the main path is prescribed anyway.
Any x86-64 laptop that still boots can be the Grove. Flash Ubuntu Server 24.04 from a USB stick (DietPi ships x86 images too), set HandleLidSwitch=ignore in /etc/systemd/logind.conf, and every command in this guide runs unchanged. What you gain:
Why the guide leads with the Pi anyway:
Verdict: if the spare laptop already exists, it's the best $0 Seedling hardware there is. The architecture doesn't care which rig you pick โ state lives in the Sky either way.
:free ones; drops into aider and most CLI agents. Drawbacks: free models are rate-limited and mid-tier, some free endpoints log or train on prompts (check each model's data policy), and there's now a middleman seeing your traffic.ollama CLI, with a usable free tier. Drawbacks: usage caps, and open-weight quality still trails frontier models on long agentic coding runs.Why the guide prescribes a paid frontier plan anyway: agentic coding compounds โ a model that's 20% weaker doesn't cost 20% more time; it fails tasks you then finish yourself. Flat-rate billing is predictable, and paid plans carry the clearest no-training terms (ยง16). The honest free path: prove the build free, then pay once it earns its keep. Want the model fully in-house instead? That's the ๐ Heirloom build โ ยง20.
more: openrouter.ai ยท ollama.com ยท github.com/google-gemini/gemini-cli
So far the Grove has been a terminal. Give it a desktop and it becomes something better: one personal computer that lives in one place and appears on any screen you're near โ same files, same apps, same half-finished document, whether you're on a tablet in a cafรฉ or a borrowed laptop on another continent. Tailscale already makes it reachable; a desktop makes it feel plugged in.
sudo apt install -y xfce4 xrdp # lightweight desktop + RDP server sudo systemctl enable --now xrdp # if you enabled ufw in ยง8, RDP is already tailnet-only โ nothing else to open
From any device, open an RDP client โ Windows App (macOS/iOS), Microsoft Remote Desktop (Windows/Android), Remmina (Linux) โ point it at grove, and log in with your Pi user. A full desktop appears, riding the tailnet like everything else: zero ports open to the internet.
rpi-connect on, or Preferences โ Raspberry Pi Connect), then open connect.raspberrypi.com from any browser, anywhere. The easiest possible version of this quest.~/lazy-agent and ~/read-space, so the documents you write on this desktop stay yours.more: github.com/neutrinolabs/xrdp ยท xfce.org ยท raspberrypi.com/software/connect ยท octave.org
Everything so far assumes you like terminals. Not everyone does โ and not everyone you share the orchard with will. Chat mode turns the Grove into a contact in apps people already use: no Tailscale client on the phone, no SSH app, no tmux. Two flavors:
/rc)ssh grove && work # tmux, as usual claude # start the agent /rc # remote control: continue this session in the Claude app
The same session now appears as a live chat in the Claude mobile/web app โ same repo, same vault, permission prompts included (you approve writes with a tap). Back at a keyboard later? It's still running in tmux, right where the conversation left off. Commands evolve โ run /help for the current remote-control syntax.
Hermes (Nous Research's open-source agent) runs on the Pi as an always-on service, uses your cloud provider for inference, and shows up as a bot in Discord, Slack, Telegram, WhatsApp, or Signal. Anyone you allow can message it โ ask questions, request notes updates, kick off tasks. For the Friend Group and Community Org personas this is the natural interface: vault-sharers chat with the bot and never need a Pi account, a terminal, or even Obsidian.
/rc they surface right in the app for you to approve.more: hermes-agent.ai ยท github.com/0xNyk/awesome-hermes-agent ยท docs.claude.com/en/docs/claude-code
For the skilled โ or anyone who wants to become skilled. The ๐ Heirloom track moves inference itself in-house: one strong machine on your tailnet serves an open-weight model through llama.cpp, and your prompts never leave the building. Everything else in the architecture stays exactly where it was.
Join the strong box to the mesh like every other node and name it by role: mill. The Grove remains the brain-client; only the "inference" arrow moves โ from the Sky to the Mill. GitHub and Nextcloud keep their jobs, and the Mill holds no unique state: models re-download, configs live in your dotfiles repo. Blast radius intact.
| Hardware | What it runs | Cost |
|---|---|---|
| Gaming PC you already own (12 GB+ GPU) | 7โ14B models, snappy โ solid chat, notes, and light code. | $0 + power |
| Used 24 GB GPU (RTX 3090-class) in any PC | 30B-class quantized models โ the local sweet spot right now. | $600โ900 |
| Mac with 32โ128 GB unified memory | Big models via llama.cpp's Metal backend โ simple and silent, somewhat slower. | $0 if owned |
A GPU box idles at 30โ80 W (โ $40โ110/yr) โ let it sleep and wake-on-LAN it from the Grove when needed.
# on the mill โ build llama.cpp, grab a GGUF model from Hugging Face git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp cmake -B build -DGGML_CUDA=ON && cmake --build build -j # Macs: no flag, Metal is automatic ./build/bin/llama-server -m model-q4.gguf --host 0.0.0.0 --port 8080 # on the grove โ point any OpenAI-compatible agent at it aider --openai-api-base http://mill:8080/v1
Expose port 8080 to the tailnet only (the same ufw pattern as ยง8). Ollama is the low-friction alternative โ same idea, one command per model. Note that Claude Code speaks Anthropic's API only: for this lane use OpenAI-compatible agents (aider, or Hermes pointed at the Mill). Many Heirloom builders run both โ a cloud agent for the hard work, the Mill for private or offline work.
This is the one build where "private AI" is literal โ prompts, notes, and code never cross your tailnet boundary. Pair it with Greenhouse (self-hosted Headscale + Nextcloud) for a fully sovereign orchard.
more: github.com/ggml-org/llama.cpp ยท huggingface.co (GGUF models) ยท ollama.com
Agents work best โ and feel safest to live with โ inside a structure that tells them what everything is. The ๐ฟ Trellis is ORCHARD's workspace layout: two folders with hard rules, everything else invisible. It ships as a copy-ready starter (lazy-agent-starter/, beside this guide) and gets a full deep-dive in Annex 02: The Trellis.
~/lazy-agent/ is the agent's whole world: every vault, every repo, a scratch workbench. Full read-write, no prompts, no sprawl โ everything the agent makes stays inside.~/read-space/ is consent, made spatial: putting a file there is the permission to read it. Read-only, enforced by deny rules in .claude/settings.json โ not by politeness.AGENTS.md โ what the folder is, how agents should treat it, what must never happen there โ plus a one-line CLAUDE.md ("Read AGENTS.md") so every agent brand lands on the same truth.cd ~/lazy-agent && claude โ the working directory is the wall. Anything outside the trellis triggers a visible permission prompt instead of a silent read.The starter also ships working .claude folders with four skills (daily-note, inbox-triage, vault-gardener, new-plot) and the permission rules above. Annex 02 goes deeper: context management, session hygiene, and durable agent memory.
more: agents.md ยท docs.claude.com/en/docs/claude-code/skills
Project ORCHARD Field Guide v2.8 ยท July 2026 ยท Assembled with Claude Code. Prices are July-2026 US ballparks โ verify current pricing and provider data-use policies before relying on them. Commands target Armbian/Ubuntu 24.04 (๐) and Raspberry Pi OS Bookworm (๐). Share this guide with anyone who wants to grow their own.