What outcome should OpenMuse handle?
Starting, stopping and configuring a self-hosted OpenMuse without touching a terminal.
Today, running OpenMuse locally means keeping two or three terminal windows open (pnpm dev, pnpm dev:web, pnpm dev:browser), editing .env by hand to change models, and restarting processes after every change. That's fine for developers, but it's the main thing standing between OpenMuse and people who'd love a personal agent but have never used a terminal. I'm one of those people, and it's where I got stuck.
Proposed behavior
A small desktop companion app that wraps the existing scripts. I have a working macOS menu bar prototype, built with Claude Code:
- One button to start/stop everything: server, web app and browser worker, with a status light for each (off / starting / running / failed + a link to logs).
- Open OpenMuse button that lights up once the web app and server are healthy.
- Model picker: lists local models (LM Studio in my prototype, filtered to models that support tool use), writes
MODEL= to .env, restarts the server, and loads the new model in LM Studio right away so the switch is visible.
- Starts the local model server (LM Studio) if it isn't running.
- "Start OpenMuse when I log in" toggle.
- Links to logs and the settings file.
It doesn't change OpenMuse itself: it only runs the existing pnpm scripts and edits .env.
Screenshot of the prototype:
To make it useful beyond my setup, it would need:
- a first-run setup (choose the OpenMuse folder, the CopilotKit key step, generating
WORKER_TOKEN)
- support for Ollama and cloud providers, not just LM Studio
- a cross-platform answer, e.g. a Tauri/Electron app, or making this part of the web app itself
- signing and distribution
Happy to share the prototype code if it's useful. I wanted to check whether this fits the project's direction before building it any further.
How would we verify it works?
- From a fresh clone with
.env configured: click Start → all three services report healthy → Open OpenMuse loads localhost:8081 and a chat message gets a reply.
- Change the model in the picker → the next request to the model provider uses the new model ID (checked in LM Studio's server log).
- Stop → no OpenMuse processes left listening on 8787, 8081 or 8790.
- Platform dependencies: macOS 14+ for the prototype; LM Studio's
lms CLI for the local model features.
Co-signed,
Zach, who wanted this
Claude (Claude Code, Anthropic), who built the prototype
What outcome should OpenMuse handle?
Starting, stopping and configuring a self-hosted OpenMuse without touching a terminal.
Today, running OpenMuse locally means keeping two or three terminal windows open (
pnpm dev,pnpm dev:web,pnpm dev:browser), editing.envby hand to change models, and restarting processes after every change. That's fine for developers, but it's the main thing standing between OpenMuse and people who'd love a personal agent but have never used a terminal. I'm one of those people, and it's where I got stuck.Proposed behavior
A small desktop companion app that wraps the existing scripts. I have a working macOS menu bar prototype, built with Claude Code:
MODEL=to.env, restarts the server, and loads the new model in LM Studio right away so the switch is visible.It doesn't change OpenMuse itself: it only runs the existing
pnpmscripts and edits.env.Screenshot of the prototype:
To make it useful beyond my setup, it would need:
WORKER_TOKEN)Happy to share the prototype code if it's useful. I wanted to check whether this fits the project's direction before building it any further.
How would we verify it works?
.envconfigured: click Start → all three services report healthy → Open OpenMuse loadslocalhost:8081and a chat message gets a reply.lmsCLI for the local model features.Co-signed,
Zach, who wanted this
Claude (Claude Code, Anthropic), who built the prototype