Ask me about him. I'll answer and take you there.

Ask your own question
← Back to the page

The full story · Jun 2026 to now · solo · 120 commits

Mei

An AI assistant built into the GNOME desktop that does things for you, and asks first.

Watch the demo ▸
600automated tests, about
38design decisions written down
10+model providers, local and cloud, behind one interface
0passwords it will ever type

The hard parts

A web page must not be able to give it orders

Problem
An assistant that reads files and pages can be tricked by text inside them into doing something harmful.
What I did
The approval rules live outside the model. Anything irreversible, involving secrets, or suggested by a file or page always asks you first.

Running commands without risking the machine

Problem
A useful assistant has to run commands, and commands can destroy things.
What I did
Commands run in a jail that sees only the folders you name, read-only by default, with no network unless you allow it.

Using apps the way a person would

Problem
Most desktop apps have no API for an assistant to call.
What I did
It reads a window's controls through accessibility and clicks and types for you. It never types passwords, and one key press stops it instantly.

It kept hearing itself

Problem
Talking over Mei through laptop speakers made it cut its own replies short and take its own words as a request.
What I did
I read every real conversation and measured echo cancellation in a sandboxed audio lab. Talking over Mei now needs the canceller or earphones, instead of hiding the symptom.

Also in it

  • Local models (Ollama, llama.cpp, LM Studio) and cloud models behind one interface
  • Finds, reads, writes and moves files; opens apps and switches windows
  • Memory you can search, pin, keep local or delete
  • On-device voice by default
  • Background tasks with notifications
  • "Ask about this" on the current window
  • An installer for apt, dnf, pacman and zypper that needs no sudo
  • API keys kept only in the system keyring

Built with

GitTypeScriptAutomated testingLLM APIsPythonArchitecture decision recordsLinuxTool callingHuman-in-the-loopBashSSELocal models (Ollama)Prompt-injection defenceSpeech (STT / TTS)pytestGNOME Shell extensionsGJSSQLiteComputer-use agentsSandboxing

Honest gaps

It is in active development and not released yet.