Open-source project
ReviewStage/luke avatar
ReviewStage/luke

Luke is a macOS voice sidecar that interrupts you only when an agent needs you

Open-source coding agent manager

34 stars2 forksTypeScriptApache-2.0

At a glance

What is it?
An open-source coding agent manager for Apple Silicon Macs, where the conversation lives on Luke's service rather than on your machine, agents announce themselves when they need attention, and connecting a calendar buys you silence during meetings.
Who is it for?
Luke fits a workflow where several coding agents run at once and you supervise them by ear rather than by polling, and the calendar integration is the feature that makes it viable in a meeting-heavy day. It is Apple Silicon and macOS 14 or newer only, distributed as a DMG you drag into Applications, so there is no Linux or Windows path.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 18 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 4, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • ReviewStage/luke34 ★ · +13
Star history
Repository2026-08-262026-10-04
ReviewStage/luke2134

13 Stars in the last 39 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The conversation thread lives on the service, not on your Mac

The most consequential design decision is stated in the middle of a feature description, and it is easy to skim past. The Conversation tab draws the conversation Luke's own service keeps for your account, the same thread on every Mac you sign in on, showing its 200 most recent turns. Nothing on this Mac holds a copy of the thread. That has two consequences. Clearing it is a server operation rather than a local one, since Clear asks the service to mark that conversation deleted and open a fresh one. And signing in on a second machine gives you the same history, which is convenient until you wanted the two machines to be separate. The tab has a second control, Agents, which turns it into the list of agents Luke follows plus the sub-agents he delegated to, so supervision and history share one surface.

Luke keeps a memory and you have to ask him to drop it

When Luke thinks on the service, he also silently keeps a small memory of useful preferences, personal context, goals and recurring constraints. The three verbs in the documentation are ask, correct and forget: ask him what he remembers, correct something that is wrong, or tell him to forget it. The word silently is doing the work here, because nothing in the feature list tells you the memory exists at first run. Combine that with the server-held conversation and the sign-in requirement, and Luke behaves less like a local tool than like an account you have created with a company that runs a service. That is a defensible design for a voice interface that has to keep generating a reply after you close the app, but it is the part to read PRIVACY.md about before handing it access to your agent sessions.

Announcements are batched into one breath, not one sentence per event

Luke speaks up when an agent is waiting for you, hits an error, or finishes, and the mechanism behind that is a filter rather than a stream. He goes by what an agent's provider reports about it, and for a Conductor agent he can also read the conversation itself when the status alone is not enough. Then he judges whether it is worth interrupting you for, and says everything worth saying in one breath instead of a sentence per event. That batching rule is the difference between a notification tool and a colleague, and it is also the part most likely to need tuning for your own workflow, since the README gives no setting for how chatty it should be. The input side matches the output: hold the option and space keys to talk from any app, so every ask is spoken and there is nothing to type.

Three agents run locally and one runs in the cloud

The supported agent table is short and is machine-generated, bracketed by provider-agents markers in the source. Claude Code, Codex and OMP are marked for local use, and Conductor is marked for the cloud, with the opposite column empty in each case. Alongside it the README claims Luke works with any agent, both locally and in the cloud, and points to the table for the full list, so the table is the authoritative subset and the sentence is the direction of travel. The cloud entries are configured in Settings with an API key, which is where Conductor's key goes. The Apple Silicon and macOS 14 or newer requirement applies to the app rather than to the agents, so a cloud agent is still fronted by a Mac that has to stay awake for the session to be useful.

Install is a DMG, a drag to Applications, and a Google or GitHub sign-in

There is no package manager route. The install steps are to download Luke from the releases page as a DMG, open it and drag Luke into Applications, then launch it and sign in with Google or GitHub. The release asset name is fixed as `Luke.dmg` under a permanent latest download link, so the same URL tracks the newest release the way a package registry would. Everything else is optional and lives in Settings: connecting supported cloud agents with their API keys, connecting Apple or Google Calendar, and customizing Luke's voice, keyboard shortcuts, appearance and workspace defaults. The calendar connection is the one with a behavioural consequence rather than a cosmetic one, since it is what makes Luke stay quiet until your meeting is over.

A private package whose version tracks its release tag

The root package is named `luke` at version 0.6.0, marked private so nothing is published to a registry, and described more precisely than the repository blurb as a notch-attached desktop sidecar for coding-agent sessions. That version matches the newest release tag exactly, which means the tag is derived from the package rather than maintained beside it. The toolchain requirement is Node 24 or later under pnpm 10.34.5, which is a contributor constraint rather than an end-user one, since end users get a signed disk image. The repository is Apache-2.0 licensed, has a documented site at tryluke.dev, and lists two named builders. Its last push landed on 30 September 2026, three weeks after the 0.6.0 tag, so the branch is ahead of the release.

Two linters, a custom rule directory, and per-agent config folders

The repository root shows the shape of a project built by people who use several coding agents themselves. Alongside `AGENTS.md` and `CLAUDE.md` there are `.agents/`, `.claude/`, `.codex/`, `.conductor/`, `.cursor/`, `.entire/` and `.opencode/`, one directory per tool, plus a `skills-lock.json`. Linting is doubled up: `biome check .` runs alongside a separate `oxlint` script that shells out to `./scripts/oxlint.sh`, and the oxlint plugins are pinned to the same 1.79.0 as the linter. Under `tools/` sits `oxlint/anti-slop/`, a directory of custom rules with its own test files, which is a stronger signal about the project's values than any feature bullet. The test script is two-stage, running a `node --test` harness over the shell scripts, the iOS app tests and those anti-slop tests before a shard runner takes over.

Editorial conclusion

Luke fits a workflow where several coding agents run at once and you supervise them by ear rather than by polling, and the calendar integration is the feature that makes it viable in a meeting-heavy day. It is Apple Silicon and macOS 14 or newer only, distributed as a DMG you drag into Applications, so there is no Linux or Windows path. Read PRIVACY.md before signing in, since the conversation thread is kept on Luke's service across every Mac you sign into and Luke also retains a memory you have to ask him to forget.

Frequently asked questions

What does Luke do for coding agents?

It is a macOS voice sidecar that reports the status of your coding agents, starts new ones and messages them on your behalf. Announcements arrive when an agent waits for you, hits an error or finishes, batched into one spoken message.

Which coding agents does Luke support?

Claude Code, Codex and OMP are listed for local use, and Conductor for cloud use. Cloud agents are connected in Settings with their API keys.

What are the system requirements for Luke?

Apple Silicon Macs running macOS 14 or newer. Installation is a DMG from the releases page that you drag into Applications, then sign in with Google or GitHub.

Does Luke store my conversation history locally?

No. The Conversation tab draws the thread kept by Luke's own service for your account, the same on every Mac you sign in on, showing its 200 most recent turns, and nothing on this Mac holds a copy.

Does Luke remember things about me?

When Luke thinks on the service he keeps a small memory of useful preferences, personal context, goals and recurring constraints. You can ask him what he remembers, correct something, or tell him to forget it.

What licence is Luke released under?

Apache License 2.0. The root package is marked private at version 0.6.0, so it is distributed as a signed macOS disk image rather than published to a registry.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/reviewstage-luke.svg)](https://hysenlabs.com/projects/reviewstage-luke)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/reviewstage-luke.svg)](https://hysenlabs.com/projects/reviewstage-luke)