Linux migration companion — proactive local LLM assistant for Windows and macOS switchers
Find a file
pyr0ball 5142e29ad9 fix(tray): prevent exit when chat window closes
Switched from Builder::run() to Builder::build() + App::run(event_handler)
so ExitRequested can be intercepted. Without this, the hidden chat window
failing to load localhost:1420 triggered a clean exit and Robin disappeared
from the tray silently.
2026-05-20 11:10:24 -07:00
.vscode feat: M0 scaffold — Tauri 2 + Vue 3, system tray, first-run onboarding, config layer 2026-05-18 10:06:49 -07:00
public feat: M0 scaffold — Tauri 2 + Vue 3, system tray, first-run onboarding, config layer 2026-05-18 10:06:49 -07:00
src feat(patterns): mobile-origin users + dual-boot supplement system 2026-05-19 09:32:18 -07:00
src-tauri fix(tray): prevent exit when chat window closes 2026-05-20 11:10:24 -07:00
.gitignore fix(m1): address HIGH review findings — journald zombie, silent exit, double-delivery 2026-05-18 18:56:45 -07:00
index.html feat: M0 scaffold — Tauri 2 + Vue 3, system tray, first-run onboarding, config layer 2026-05-18 10:06:49 -07:00
manage.sh feat(manage): manage.sh overhaul + exe-relative pattern loading + desktop entry 2026-05-20 11:06:55 -07:00
package-lock.json feat(m1): ChatPanel listens for robin:event, drains pending on open 2026-05-18 18:24:34 -07:00
package.json feat(m1): ChatPanel listens for robin:event, drains pending on open 2026-05-18 18:24:34 -07:00
README.md feat: M0 scaffold — Tauri 2 + Vue 3, system tray, first-run onboarding, config layer 2026-05-18 10:06:49 -07:00
tsconfig.app.json feat: M0 scaffold — Tauri 2 + Vue 3, system tray, first-run onboarding, config layer 2026-05-18 10:06:49 -07:00
tsconfig.json feat: M0 scaffold — Tauri 2 + Vue 3, system tray, first-run onboarding, config layer 2026-05-18 10:06:49 -07:00
tsconfig.node.json feat: M0 scaffold — Tauri 2 + Vue 3, system tray, first-run onboarding, config layer 2026-05-18 10:06:49 -07:00
vite.config.ts feat: M0 scaffold — Tauri 2 + Vue 3, system tray, first-run onboarding, config layer 2026-05-18 10:06:49 -07:00

Robin

Linux, with a guide who's been there.

Robin is a proactive Linux companion for users migrating from Windows or macOS. It watches your system, detects migration friction, and surfaces plain-language help before you know what to search for.

Status License


What Robin does

  • Lives in your system tray — out of the way until it has something useful to say
  • Watches journald, dmesg, and system events for common migration pain points
  • Knows what you came from: "where's My Documents?" maps to ~/Documents; "how do I install this .exe?" becomes a package manager explainer
  • Learns what you already know — stops offering suggestions you keep dismissing
  • All inference runs locally via Ollama — nothing leaves your machine

Target users

People switching from Windows or macOS who are not comfortable with the terminal, don't know what a log is, and are experiencing friction they can't name.

Robin is not a sysadmin tool. See Turnstone for that.

Real test cases

Test case 1 Test case 2
Source OS macOS Windows
Target distro CachyOS (Arch) Linux Mint (Ubuntu/Debian)

Both users' real friction points during migration are the ground truth for the pattern library.


Stack

  • Backend: Rust + Tauri 2
  • Frontend: Vue 3 + TypeScript (chat panel, onboarding)
  • System integration: D-Bus, journald, inotify (via Rust crates)
  • LLM: Ollama (local inference, any compatible model)

Getting started (development)

Prerequisites

Arch/CachyOS:

./manage.sh install-deps-arch

Debian/Ubuntu/Mint:

./manage.sh install-deps

You also need Rust and Node 18+.

Dev mode

./manage.sh dev

This starts the Vite dev server and launches the Tauri app with hot-reload.

Build

./manage.sh build
# Produces: src-tauri/target/release/robin
# Installers: src-tauri/target/release/bundle/

Install as a service

./manage.sh install   # registers systemd user service
./manage.sh start     # start Robin

Robin starts with your desktop session and lives in the system tray.


Milestones

Milestone Scope
M0: Scaffold Repo structure, Tauri skeleton, system tray placeholder, first-run onboarding
M1: System presence journald/dmesg watcher, D-Bus events, desktop notifications, /etc/os-release detection
M2: CachyOS/macOS patterns macOS → CachyOS translation layer, AUR failure detection — validated on Xander's machine
M3: Mint/Windows patterns Windows → Mint translation layer, apt/Flatpak/Timeshift patterns — validated on Muninn
M4: Robin agent Ollama integration, full chat, RAG migration knowledge base
M5: Fluency model Dismissal learning, confidence calibration, graduation handoff

Architecture

System events (journald, dmesg, D-Bus, inotify)
        │
        ▼
Event classifier (pattern matching + Ollama when needed)
        │
        ▼
Migration context (source OS, distro, fluency level)
        │
        ▼
Robin agent (Ollama — local LLM)
  + Migration knowledge base (equivalents, common friction, distro docs)
        │
        ▼
Chat panel (Tauri webview, Vue 3)
  + System tray notifications

License

System monitor and pattern matching: MIT Robin chat agent and migration knowledge base: BUSL-1.1 (converts to MIT after 4 years)

Part of the Circuit Forge menagerie.