← Journey Phase 0 — Foundation

The plan

What I'm building, why, and where it stands after the first week. A homelab, a personal vault, a design agent pipeline, and a site to document all of it.

I’ve been meaning to build this for a while. A system that connects my notes, my tools, and my design work — without depending on a stack of SaaS subscriptions I don’t fully control. This site is where I document it as it gets built.

What I’m building

Three things that feed into each other:

A homelab — two always-on machines running the services I actually use: n8n for automation, Penpot for design, Ollama for local AI, CouchDB for vault sync. Everything behind Tailscale and Nginx Proxy Manager, accessible anywhere via *.[domain].

A personal vault — Obsidian notes that sync in real time across Mac, iPhone, and eventually any device. Self-hosted LiveSync over CouchDB instead of Obsidian Sync. No data leaving my infrastructure.

A design agent pipeline — an n8n workflow that takes a brief, generates design variants using local and cloud AI models, and outputs them to Penpot. Built around the design system I work with daily.

This site documents the build. Every major milestone gets a post here, generated automatically when I tick a checkbox in my planning doc.

The hardware

Cloudflare dns · r2 cdn · tunnel
NPM *.[domain] · Pi4
— Tailscale mesh —
☁️ Linode VPS · always-on
  • Pi-hole DNS
  • Exit node
  • Watchtower
💻 DaniAIR Mac · daily driver
  • Claude Code
  • Obsidian vault
  • Figma · Browser
🖥 GMKtec always-on compute
  • n8n
  • Penpot
  • CouchDB
  • Ollama · Open WebUI
🍓 Pi4 reliable infra
  • NPM reverse proxy
  • Immich
  • Homepage
  • Uptime Kuma
📱 iPhone mobile
  • Obsidian
  • Blink Shell

The GMKtec runs an AMD 780M iGPU with 3GB actual VRAM — enough for qwen2.5:7b via Vulkan, which handles all automation. Heavier quality work goes to the Claude API. The Pi handles everything that needs to be reliable but doesn’t need compute.

The phases

The full plan runs across 7 phases. Each one gates the next.

PhaseWhatStatus
0GitHub backbone, artupinad.com rebuild, foundation files✅ Done
1AGMKtec services live (n8n, Penpot, CouchDB migration)✅ Done
1BVault migration from Pi4 SSHFS → GMKtec CouchDB✅ Done
2Vault structure, CLI layer, note templates🔄 Now
3CLI tools wired to n8n webhooks
4A/4Bn8n core agents + design agent pipeline
5a/5bDesign system in Storybook
6RAG with Qdrant — askvault() in terminal
7Multi-agent critic loop

What’s been built

Phase 0 involved more decisions than work. The biggest was dropping Sanity.

I built the first version of this site with Astro + Sanity CMS. The journey post automation wrote drafts directly to Sanity via their write API. It worked, but Sanity was the only external dependency in the chain — a dashboard to manage, a token to rotate, a service to stay running.

Removed
  • sanity
  • @sanity/client
  • @sanity/astro
  • @portabletext/to-html
  • studio/ directory
Added
  • @astrojs/mdx
  • src/content.config.ts
  • src/content/journey/*.mdx

Posts are now MDX files committed directly to this repo. The automation still works the same way from the outside: tick a checkbox in MASTERPLAN.md, push, a Claude-written draft appears as a PR. The difference is one fewer service in the chain.

Phase 1A was infrastructure. Five services deployed to GMKtec, CouchDB migrated from Pi4 to GMKtec without dropping a single sync, n8n and Penpot accounts set up with proper SMTP, Cloudflare R2 wired as the CDN.

What’s next

Phase 1B migrates the Obsidian vault off the Pi4 SSHFS mount and onto the new GMKtec CouchDB backend. This eliminates the last fragile dependency in the daily workflow: the SSHFS mount that breaks whenever the Mac sleeps wrong.

After that, Phase 2 scaffolds the vault folder structure and CLI aliases. Then Phase 3 wires the CLI to n8n webhooks. Then the agent work starts.

The goal isn’t to finish fast. It’s to build something I’ll actually use every day.