Where R You?

Active

Where R You? sets my Slack status across every workspace I'm in, automatically, based on where I actually am — a Wi-Fi network, an Ethernet cable, a Google Calendar event, or a manual override — resolved through a reorderable priority ladder I configure per workspace. It's a Tauri 2 desktop app, macOS-first, built at and for Reaktor (chartreuse branding, a Reaktor R in the nav).

Repository: https://gitlab.com/KirboDev/agentic-coding/where-r-you — actively developed on the next branch, not yet released.

What it does

  • Detects where you are — the Wi-Fi network and the specific access point (SSID (Service Set Identifier)/BSSID (Basic Service Set Identifier)), a wired Ethernet link, or a matching Google Calendar event — and sets each connected Slack workspace's status independently
  • Resolves conflicts through a per-workspace priority ladder: a manual override always wins when active; below it, a reorderable middle — one tier per connected calendar plus a locked Wi-Fi unit (BSSID (Basic Service Set Identifier) always outranks SSID (Service Set Identifier)) and Ethernet, dragged into whatever order matters for that workspace; a fallback status underneath everything
  • Lets you override any subset of workspaces at once, with an explicit clear condition — a specific time, a duration, joining or leaving a network, the next calendar event, or manual
  • Keeps one shared list of presets (remote, office, lunch, …) consumed identically by the Presets view, the tray, the override dialog and the CLI (Command-Line Interface)
  • Ships a local-only wru CLI (Command-Line Interface) that dispatches through the exact same command table as the app and the tray — no behavior is ever UI (User Interface)-only
  • Lives in the system tray, staying resident when the window closes

Overview

The Overview screen is the home base. Three connected workspaces sit on the left — Reaktor and Acme Corp live, Dev Community paused — under the current connection, Office-5G · 5th Floor, Helsinki, showing Connected. Reaktor's own priority rail sits on the right: no override is set, so the ladder falls through to the Work calendar tier, highlighted ACTIVE while Manual override sits on NO MATCH above it — and the result line spells out the whole chain: Working remotely · won by Work calendar.

No override set: Work calendar tier ACTIVE, Manual override on NO MATCH — resolving to "Working remotely," won by Work calendar.

Priority rules

The Rules screen is where that ladder actually gets edited, one workspace tab at a time. Reaktor's breadcrumb across the top reads OVERRIDE › WORK CAL › PERSONAL CAL › BSSID (Basic Service Set Identifier)SSID (Service Set Identifier) › ETHERNET › FALLBACK, and underneath it sit the rules that feed each tier: three title-prefix regexes (^Standup, ^All-hands, ^Sprint planning, one of them marked "Skipped for this workspace"), the Office-5G SSID (Service Set Identifier) and its AA:BB:CC:11:22:33 BSSID (Basic Service Set Identifier) both toggled on, and a Working remotely fallback pinned at the bottom with an explicit LOWEST PRIORITY tag.

Reaktor's priority breadcrumb — Override, Work Cal, Personal Cal, BSSID (Basic Service Set Identifier), SSID (Service Set Identifier), Ethernet, Fallback — with the regex calendar rules and the Office-5G network rules beneath it.

Networks

On macOS, reading the SSID (Service Set Identifier), BSSID (Basic Service Set Identifier) and signal strength goes through a signed Swift helper over CoreWLAN, gated behind Location Services authorization — a network you haven't connected to can only ever be seen at the SSID (Service Set Identifier) level, since the BSSID (Basic Service Set Identifier) isn't knowable until you actually join it. The Networks screen makes that distinction concrete: the connected Office-5G access point is listed resolved all the way down to its AA:BB:CC:11:22:33 BSSID (Basic Service Set Identifier), alongside a separate SSID (Service Set Identifier)-level rule for "any Office-5G AP" tagged At the office, an Ethernet rule for the docked DD:EE:FF:AA:BB:CC link, and — honestly — a "Scanning for nearby networks is coming soon" note where in-range-but-unconfigured networks will eventually turn into one-click rules.

The connected Office-5G access point resolved to its BSSID (Basic Service Set Identifier), next to the separate SSID (Service Set Identifier) and Ethernet rules that back it — and the not-yet-built network scanner.

Calendar

The calendar side runs a live regex preview in Rust: typing a pattern in the rule drawer highlights matching events across the Month/Week/Day views in real time, with per-workspace statuses attached to each rule and its own tier in the ladder for every connected calendar. On the Month view for August 2026, the sidebar lists the same three rules read-only, with the ^Standup one spelling out exactly what it does per workspace: In a standup for Reaktor, Remote work for Dev Community, and "1 workspace skipped" — Acme Corp never gets a standup, so the rule leaves its status alone.

August 2026, with the read-only sidebar spelling out the "^Standup" rule per workspace — one skipped, two resolved.

Architecture

Architecturally it follows the same split as Switchboard: the "beef" — resolution, network reads, calendar polling, Slack calls — lives in Rust; React is a thin webview that renders already-resolved state and dispatches intents, and never computes priority itself. The resolver is a pure function of workspaces, world state and priority order, with no I/O, which makes it the highest-value test surface in the app — it's exhaustively unit-tested before any UI (User Interface) exists. Rust and TypeScript share one type contract via ts-rs: bindings generate into the frontend on every cargo test, and CI (Continuous Integration) fails on drift, so the two sides can't quietly disagree about a shape.

Process

Everything else follows the same discipline as Switchboard: TDD (Test-Driven Development) throughout — no production code lands without a failing test first — every component ships a Storybook story before it's wired into a screen, secrets live in the OS (Operating System) keychain rather than the settings store, and one event bus means every action becomes exactly one humanized row in an in-memory activity log.

Status

Actively developed, macOS-first, not yet released. The pure resolver, the token-based design system, the event/command bus, and all seven application screens (Overview, Rules, Calendar, Networks, Presets, Settings, Activity) are built and match the behavior spec. Still ahead: real Slack/Google OAuth (Open Authorization), disk persistence, the CLI (Command-Line Interface)'s local socket transport, and Developer ID signing. Read the build story in the Where R You? blog post.