Skip to content
jaciskoPublic
forked from join3r/stem

About

An isolated, pi-backed macOS personal assistant with rich MDX output, app-scoped skills, MCP, and Stem Recall memory.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

929 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stem

A desktop AI assistant that remembers you, reads your folders and runs jobs on a schedule.
It runs on the ChatGPT or Grok subscription you already pay for, any API key, or a local model.

Download · macOS (Apple Silicon) · Linux (AppImage, deb) · Windows · User guide

Stem answering from an invoices folder with a stacked bar chart of 2026 billing by client and a client comparison, chats filed into nested folders on the right

Answers you can scan

Replies render as MDX. You get charts, stat tiles, sortable tables, side-by-side comparisons, diagrams, step lists, quizzes and forms when the question calls for one, and a plain paragraph when it doesn't. Any chat can switch to Markdown.

A diagram of how dispatch-api deploys, drawn from an Argo CD repo Stripe Checkout and Payment Element compared side by side, one marked recommended A risograph-style poster for an 18 km Saturday run along the Donaukanal, generated in the chat
Diagrams Comparisons Pictures, on your ChatGPT plan

Memory you can audit

Stem pulls durable facts out of your chats and folders. Each message gets only the facts that matter for it, ranked on your machine by bundled models (the EmbeddingGemma 2 embedder, a Qwen3 reranker and Stem's own GTE Memory model). Every fact shows where it came from and whether the last answer used it. Pin, confirm or forget any of them, or switch memory off.

A dinner suggestion that respects a vegetarian partner and a peanut allergy, next to the stored facts, the three it used marked Injected

Stem also keeps a short summary of you, written from your facts and from how you write, and sends it with every chat that can see your memory. You can edit it or switch it off. A deep check reads every fact against where it came from, fixes what it can prove, and mails you the rest: questions you answer with a click, and facts to keep or retire.

The deep check's mail with a multiple-choice question and facts to keep or retire, next to the summary of you in the Memory tab

Your folders, read in place

Connect an Obsidian vault, a repo or a folder of invoices. Stem reads the files where they live and indexes them locally. Say what kind of folder it is (notes, code, documents, confidential) and Stem fills in the settings, or let it look inside and suggest them. Folders are read-only until you allow writes, and you decide per folder whether Stem may learn from it.

An answer about client commitments built from meeting notes, with five connected folders listed on the right

Personas and mail

A persona is a saved setup: instructions, model, tools, MCP servers, memory, a coding agent or a computer it may drive. You mail it like a colleague and the reply lands in the Inbox, newest on top. Scheduled tasks report here too, and only when they found something.

The Bookkeeper persona's reply naming an overdue invoice with a reminder draft, the Inbox on the right

A persona allowed to start helpers splits a big job. It starts named agents from your other personas, each works one piece, and you get one answer with their mails folded in under it.

The Secretary's answer about a client demo, with the mail from the billing agent it started unfolded underneath

Quick Chat

A global shortcut opens Quick Chat over whatever app you're in. Ask, hit Enter, and it gets out of the way. A pill in the corner tells you when the answer is ready.

The Quick Chat overlay with a running pace table
The pill announcing the answer is ready

Also in the box

  • Coding agents. A persona hands work to Claude Code or any other ACP agent, on the server or on one of your computers. The agent's permission requests arrive as cards in the chat.
  • Computer control (alpha). A persona pinned to your Mac can work in its apps, including windows on another Space or behind other windows. macOS 14 or newer.
  • Skill recorder (alpha). Record yourself doing a task on the Mac. Stem writes it up as a draft skill, and a practice run tries it before you save it.
  • Browser control. The Stem extension for Chrome, Arc, Dia, Brave, Edge and Chromium lets Stem use your own signed-in browser in background tabs, on a Mac or Linux.
  • Scheduled tasks. Ask for "every weekday at 8, check…" and you get a cron job. Each run starts in a fresh thread.
  • Shell commands. A safety check runs what you asked for and turns the rest back. You decide only after repeated refusals, and you can always allow commands by name or pattern.
  • MCP servers and skills. Add MCP servers by command or URL, OAuth included. Stem writes skills from work that went well and rewrites the ones that failed.
  • Pinboard. Pin a message, a highlighted phrase or your own note to the top of a chat. Stem keeps the board in context for the rest of that chat.
  • Private chats. A private chat doesn't read your memory and teaches it nothing.
  • Dictation. The mic button transcribes with Apple's on-device speech models; the audio never leaves the Mac. macOS 26 or newer.
  • Long chats. /compact condenses a chat's history when it gets long, with an optional focus for what to keep.
  • Themes. Light, dark, bundled themes, or a JSON file of your own that can also set fonts and spacing.
Settings, Models: the ChatGPT provider and model roles Settings, Features: mail, image generation, commands, coding agents The Bookkeeper persona's Access tab: private memory, your memory, helpers, MCP servers, send budget
Models Features A persona
Four scheduled tasks with their schedules, personas and next runs A scheduled task's last three runs, none of which needed to mail A connected folder's search and learning settings
Scheduled tasks A task's runs A connected folder
Two MCP servers, one command and one URL, both running Skills Stem saved, with the setting for when it may save new ones Five connected folders: two notes vaults, two code folders and a confidential one
MCP servers Skills Connected folders

Models

Provider How you connect
ChatGPT, Grok Sign in with your subscription
Anthropic, OpenAI, OpenRouter, xAI API key
Ollama, LM Studio Local server, no key
Anything OpenAI- or Anthropic-compatible Custom endpoint

A Claude subscription doesn't cover Stem. Anthropic bills third-party apps from your extra usage, not your plan limits, so use an Anthropic API key for Claude models.

Switch models per chat, mid-conversation. Web search works with every model and cites its sources; a ChatGPT or Grok sign-in covers it without a separate search key.

Run it on a server

By default Stem runs on your computer. Move it to a VPS with Docker and Caddy, or to a box on your Tailscale network, and every Mac, Linux machine and the iPhone app (beta) becomes a client of that one Stem. They share chats, memory and tasks, and scheduled runs fire while the laptop is closed. An MCP server or folder that only makes sense on your laptop stays pinned to it.

Running on a server · Running on a LAN or Tailscale

On your iPhone

The iPhone app (beta) pairs with a server Stem by scanning the QR code from Settings → Server → Devices → Pair a phone. It has your chats, with the same tables and diagrams, plus mail from your personas, dictation and the approvals Stem is waiting on. New chats can go to a persona that is open to phones.

The Chats tab on iPhone listing four chats, three marked unread An Argo CD reconciliation flowchart drawn in a chat on the phone The Bookkeeper's mail on the phone: an invoice status table and a payment reminder draft

Install

Grab the latest build from Releases:

  • macOS. .dmg for Apple Silicon, signed and notarized.
  • Linux. .AppImage for any distro, or .deb for Debian and Ubuntu (also puts stem on your PATH). Both for x64 and arm64.

First launch walks you through signing in to a provider.

Linux notes
  • Quick Chat on Wayland. Electron's global shortcuts don't fire in default GNOME and KDE sessions. Bind a system shortcut to stem --quick-chat (deb) or /path/to/Stem.AppImage --quick-chat; a second launch hands the toggle to the running app. On X11 the in-app shortcut works.
  • Tray. The tray icon offers Summon Quick Chat, Open Stem and Quit. Stock GNOME hides tray icons without the AppIndicator extension; running stem again reopens the main window.
  • Closing the window leaves Stem running in the background. Quit from the tray.
  • Secrets are encrypted with the system keyring (libsecret or kwallet). Without one, Stem falls back to files readable only by your user (mode 0600).

Build from source

Node.js 24 or newer, then npm install && npm run dev. Scripts, Windows and the rest are in docs/development.md.

About

An isolated, pi-backed macOS personal assistant with rich MDX output, app-scoped skills, MCP, and Stem Recall memory.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages