Got a project in mind? Book a free 30-minute call

Saadaan Hassan
Case study

Orbit: A Companion That Remembers Your Work

Orbit: A Companion That Remembers Your Work

Summary

A quiet companion in your Mac's menu bar, built so that after a holiday, a weekend or a switch between projects you can get back to where you were in a minute or two instead of twenty.

My part

My RoleSole developer
Stack
RustTauriReactTypeScriptFastAPIPythonSQLite FTS5QdrantGroqVoyage AI

The problem

I built Orbit for a problem I kept having myself: coming back to a project after a few days and spending the first twenty minutes working out where I'd left off.

People don't struggle with doing their work. They struggle with restarting it. Come back from a week off, open your laptop on a Monday, or jump between three projects in one day, and the first stretch goes on rebuilding where you were: which file, which tab, what you'd already tried, what you were about to do next.

From the first day, Orbit's one-line pitch was "I help you continue."

A companion, not another app

Orbit sits quietly in your Mac's menu bar while you work. It doesn't interrupt, nudge or tell you what to do; it just remembers. When you need it, Option+Space opens it.

The goal I designed for: turn those twenty minutes into one or two. Sit down, open Orbit, and be back in the same frame of mind.

Coming back, step by step

  1. Active Projects. Orbit opens on your projects. Each card shows what you last did, how much time you've spent on it this week, and when you last touched it. It recognises the same project across your editor, your browser and your documents.
  2. "Where did I leave off?" Click a project and Orbit asks for you: "Where did I leave off with {project}?" The answer streams back in plain English, pinned to when and where you were working.
  3. The Daily Journey. The Timeline lays out each day's work sessions. Every session records its Focus Goal, what you were doing, the files and links you used, what you were Stuck On, and Where you left off. Its date picker covers the last ten days you actually worked, so a week away doesn't bury anything.
  4. Ask anything. "What was I reading yesterday?" "What was I doing before lunch?" Or tap Ask Orbit on any session for the full story of that day's work.

How it remembers

Knowing which app was open isn't enough. Early on, the most common complaint was "it knows the app but not what I was doing in it," so Orbit combines several signals:

  • Small Rust monitors record the active app and window, browser URLs, the files you change, the clipboard, lock and sleep, and visible on-screen text into a local SQLite database.
  • Every 30 minutes, a local service groups those events into work sessions, splitting them wherever you locked the screen or the Mac slept.
  • An AI step, using your own Groq key, reads the signals together, works out which project you were on, and writes the session's goal, last action, blockers, key resources and where you left off. Its instructions put continuation first: where you were in the work is the most valuable thing to capture.

The rules it never breaks

A companion that watches your screen only works if you can trust it completely.

  • It never reads a password field. It skips secure text fields at every level of the macOS Accessibility tree.
  • It never records keystrokes. Idle detection only asks how many seconds have passed since your last input.
  • Secrets are redacted before anything reaches disk, and again before anything goes to an AI provider.
  • Nothing is captured until you agree, source by source.
  • No server of mine is in the loop. Your keys live in the macOS Keychain, no key means no network calls, and there's no telemetry.

Decisions worth explaining

Describe where you were, never prescribe what's next

One line from the planning docs shaped the product: "Orbit does not know your priorities. It knows where you were." So the session field became "Where you left off" instead of "Next step", and recall answers are told to describe your position in the work, not to tell you what to do.

From a hosted beta to bring-your-own-key

The first versions sent AI calls through a small cloud proxy on my keys, with a waitlist, analytics and signed, auto-updating releases. In a public app, a shared key can be extracted and run up a bill on someone else's account, so the open-source version uses bring-your-own-key only. Analytics were removed entirely rather than made optional, which also cut the frontend bundle from 830 KB to 492 KB.

Keyword search first

Full-text search over SQLite FTS5 works offline and costs nothing, so it's always on. Semantic search through a local Qdrant file loads only once you add a Voyage key.

A locked-down local API

The local service listens only on your Mac and needs a fresh 256-bit token each session, plus exact Host and Origin checks, so a web page can't quietly read your history.

What it cost to run, and why I stopped

Orbit worked. It was still an MVP, but it proved the idea. Using it seriously, though, exposed a different problem: cost. With my first implementation on Claude, running it could cost roughly $3 to $5 per active user per day. Moving the heavy parts to Groq brought that closer to $0.50 to $1.50.

Could it go lower? Probably, with better-structured model calls and more processing on the device. But it made the bigger picture clear: getting an MVP to work is very different from running a product that makes sense. Cost is only one part; reliability, infrastructure, distribution and pricing all come after it. With client work and other projects needing my time, I put Orbit on hold. I'd rather make a deliberate stop than keep building something just because I'd already spent time on it.

Why it's open source now

Orbit handles a lot of personal context, so I didn't just push the old repo public. I went back through the architecture first: consent for each category, secrets redacted before clipboard data reaches disk, telemetry and crash reporting removed, and AI made fully optional, with requests going straight from your Mac to the provider on your own key. There's no AI backend of mine, and without a key Orbit still works locally.

It's now public under Apache-2.0 as a working reference: something to read, fork, build on, or take in a completely different direction. I'm not actively maintaining it, but I may come back to the same problem one day, with a different architecture or a different version of the idea. I wrote about both steps on LinkedIn: putting Orbit on hold and open-sourcing it.

Limits worth knowing

  • The minute-or-two return is the design goal, not a measured result. Telemetry was removed before there was data to measure it.
  • Session summaries and project cards need your own Groq key. Without one, Orbit still captures your work and keyword search still runs, but the "where you left off" picture isn't built.
  • It's a beta (v0.2.4, Apache-2.0) for macOS 13 and later, built from source, with no signed download.
  • How much on-screen text macOS exposes varies from app to app, and redaction is a best effort, not a guarantee.

If I pick it up again

The parts of the original plan that never shipped are the ones that would make it feel most like a companion: a gentle note on Monday morning ("last week you were integrating Stripe, want to pick up there?"), and a Continue button that reopens the files and tabs from where you left off.

How it was built

AI coding agents wrote part of the code. The product idea, the privacy rules, the architecture, and the decisions to go bring-your-own-key and then fully open source were mine.

Project Showcase

System Visuals

Orbit's Recall tab: project cards showing what was worked on and for how long (sample data)
Freelance and contract

Have a similar engineering problem?

Let’s discuss your requirements, constraints, and what a useful solution would look like.