The home for your personal software: a local, open-source desktop platform where the apps you vibe-code actually live — no servers, no ports, no docker, no deploy step. Like the vintage caddy that held your floppy disk collection, AppCaddy is one container for all the little apps that are yours.
AI tools made writing personal apps (recipe collector, personal CRM, finance dashboard) nearly free. Running them is still miserable: stateful apps need a database, a server process, dependency management, and a launch ritual every time. AppCaddy removes all of that — an app is just a folder, and it's always running.
- plan.md — product plan, milestones, positioning
- docs/architecture.md — how the platform works and why
- docs/app-contract.md — what makes a folder an app
- glossary.md — shared vocabulary
host/— the Host: the single Node process that mounts every app (backend via export-default Hono routers loaded through Vite SSR, frontend via per-app Vite middleware) and serves the platform UI at/. Control API:/host/api/apps, per-app/logsand/reload.examples/— bundled demo apps: 🍲 recipes, 👥 contacts. User apps do NOT live here — they live anywhere on disk (default~/AppCaddy/), tracked in~/.appcaddy/registry.json.template/— the starter templateappcaddy createscaffolds from: Vite + React + Tailwind + Hono + Drizzle + SQLite, with AGENTS.md and a pre-generated initial migration.cli/— theappcaddyCLI: create, register, list, conventions, schema, query (read-only), reload, logs, migrate. Agents drive it via the appcaddy skill (.claude/skills/appcaddy/) and each app's generated AGENTS.md. Dependency-free (SQLite vianode:sqlite); in a checkout,node cli/src/index.ts <command>runs it directly.shell/— the Tauri desktop shell: a native window on the Host. On every launch it installs the appcaddy skill into agent skill directories and writes the CLI launcher at~/.appcaddy/bin/appcaddy. Release builds bundle everything the CLI needs — a private Node runtime, pnpm, the CLI, the template — viashell/scripts/stage-resources.mjs, so installed users need no repo checkout, Node, or pnpm.
cd host && pnpm install && pnpm dev # Host on http://localhost:4800
# examples install their own deps once: (cd examples/recipes && pnpm install; cd examples/contacts && pnpm install)
cd shell && pnpm install && pnpm dev # desktop window (Tauri)Open http://localhost:4800 — left-nav app switcher, active app in the content pane. Apps are equally reachable in any normal browser tab.
M0 (spike) is done: the Host mounts both example apps in one process — each with its own vite.config.ts, per-app node_modules, lazy mounting — and the Tauri shell renders the platform UI.
M1 infrastructure is done: the CLI passes an end-to-end agent loop (create scaffolds + installs + serves; schema edit → migrate → reload applies on next mount; query is read-only-enforced; adoption validates the contract with actionable fixes), and distribution is in place — the Release workflow builds installers for macOS/Windows/Linux, and the shell ships the skill and the appcaddy CLI (with a private Node runtime) to end users on launch. Remaining for M1: dogfood — build a real personal app end-to-end using only a coding agent + AppCaddy. See plan.md.