DevCloud
A native Mac app that finds every runtime, package manager and editor on your machine, tracks what changed, and backs it up.
- Role
- Solo: app, scanner and backend
- Where
- Personal product
- Year
- 2026
- Stack
- Rust, AppKit, Cloudflare Workers, D1 and R2
- Status
- In development
What it is
Set up a new Mac and you lose an afternoon working out which Node version you had, and whether Python came from pyenv or Homebrew. DevCloud answers that. One scan lists every runtime, package manager and editor, shows which version actually runs, and records each install, upgrade and removal from the menu bar.
A Rust scanner reads folder names and metadata only. It never runs your tools or reads code, .env files or keys. The app is native AppKit. Optional cloud backup runs on Cloudflare Workers, with D1 for accounts and R2 for snapshots.
What I did
- Wrote the Rust scanner that discovers tools, versions, providers, editor metadata and MCP configs without executing anything.
- Built the native macOS app in AppKit: overview, tools, workspaces, activity history, snapshot comparison and a menu-bar monitor.
- Built device sign-in: the app shows a code, the browser approves it through GitHub, and the session is stored in Keychain.
- Wrote the backend on Cloudflare Workers with Hono and Better Auth: snapshot upload, verified download, connected Macs, storage quotas and scheduled cleanup.
- Made account deletion and device revocation safe: deleting needs a fresh session and a typed confirmation, and removing a lost Mac ends its uploads.
- Wrote a leak checker that scans the source, the git history and the built binary for anything private before a release.
Hard parts
Backups that survive a crash
Back Up Now writes the inventory to a durable local queue first, and it only counts as saved once the server confirms a matching snapshot. Retry keys and exact bytes survive restarts, so a lost response never creates a duplicate. Writes are atomic, and corrupt, oversized, symlinked or loosely permissioned queue files fail closed.
Sign-in for a desktop app
A Mac app can't take an OAuth redirect cleanly, so the server runs its own device-code flow. The browser page checks the request origin, rate-limits attempts and expires unused codes, and only then hands off to GitHub.
Private by default
Only an allowlist of inventory fields ever leaves the Mac, and automatic backup is off until you turn it on. It only uploads after a fresh scan that actually changed something, never an old scan replayed at sign-in.
Not released yet. Integration tests run against disposable local storage with synthetic accounts.