# Why FoxWatch opens to nothing

I just wrapped Phase 0 of FoxWatch, a free PC health monitor I'm building, and the milestone is kind of funny to type out: the app now successfully does *nothing*.

You launch it and there's no window. Just a little fox in your system tray. Click it and you get a dashboard that basically says "everything's fine." That's it. That's the whole Phase 0 deliverable, and honestly I think it's the most important call in the entire project.

Let me explain why I'm weirdly proud of an app that opens to a blank slate.

## The whole idea

Every PC monitor out there shows you the same stuff: CPU graph, memory graph, disk gauge, a wall of temperatures. And here's the thing. Collecting all that is *free*. The OS just hands it to you. There are a dozen libraries that wrap it in an afternoon.

So if the data's free, the data can't be the product. Right?

The actual product is the part that decides *what's worth bugging you about*, and 99% of the time the honest answer is "nothing, your machine is fine." That's the bet FoxWatch is making. Not "here's another dashboard to check." More like a quiet watcher that earns the right to interrupt you exactly once, when your SSD is actually dying, and stays invisible every other day.

Once I framed it that way, a lot of decisions got easy. FoxWatch isn't something you open. It's something you forget about until it taps you on the shoulder.

And honestly that's the part I need, personally. My brain (ADHD, plus a few years of a military always-be-scanning habit) does not need one more thing to half-watch in the background. I want something that's got my six. Something quietly holding the watch so I don't have to carry it around in my head. Less to track, less load. For me that *is* the feature, more than any graph could be.

## So yeah, the first feature is being invisible

Which is why Phase 0 is deliberately an app that opens to nothing:

- **Lives in the tray, not the taskbar.** The tray icon color *is* the UI. Green means ignore, amber means "eh, worth a look, no rush," red means deal with this now. You read your machine's health with a glance and never open anything.
- **Closing it hides it, doesn't quit it.** Hit the X and it tucks back into the tray and keeps running. An always-on monitor you can accidentally close by clicking X isn't really always-on.
- **Starts with Windows, straight to the tray.** No window flashing on login, it's just quietly there.
- **The dashboard default is "you're good."** Not a grid of gauges, just "everything's healthy, nothing needs you," plus a little sleep log: how long the fox has been napping. (Mine's on a 2-day nap as I write this.)

None of that was technically hard. The hard part was not filling the empty space. Every builder instinct I have says *put something on the screen*. But the rule I set is: if it doesn't map to something you'd actually do, it doesn't get shown. The empty screen is the feature.

## What's actually under it

Phase 0's a [Tauri v2](https://tauri.app) shell: Rust core, Svelte frontend running in the native WebView. I went Tauri specifically because I didn't want to ship a whole browser like Electron would; an always-on watcher needs to be tiny. Tray, hide-on-close, autostart, all wired and working.

The part I'm quietly happy about: the triage engine is *already in there*. I'd written it as a spike before committing to the architecture, and it's a pure function (metrics + history in, decisions out, no I/O, no reading the clock) so I can test the hell out of it. It's sitting in the core right now with literally nothing to do. Asleep, basically. Which, for a thing built by Narcoleptic Fox, feels about right... it looks like it's dozing, but it's wired to snap awake the second you need it. Phase 1 gives it real data. Phase 2 is where it actually wakes up.

Also, real talk: I nearly nuked the whole design folder this week. Ran a scaffolder in a folder that wasn't empty and it happily wrote over my stuff. Got it back, moved the project somewhere clean, and left myself a big angry warning in my own notes. Building in public means posting the dumb ones too.

## The thing I had to get comfortable with

An app whose goal is "the user never opens it" is a strange thing to build. There's no engagement number to chase. If it's doing its job you forget it exists for weeks, and then one random Tuesday it goes *"hey, your drive's failing, back up today,"* — and that one correct interruption is worth more than a thousand dashboard opens.

So Phase 0 opening to nothing isn't missing features. It's the whole personality showing up in the first ten seconds: quiet, private, out of your way, only speaks when it matters.

## Next up

Phase 1 is where it starts breathing. A `sysinfo` collector feeding real samples into local SQLite, and the dashboard finally showing your actual machine instead of a placeholder. Still quiet, but now quiet about something real.

More soon.

