Skip to content

[Feature] A desktop control panel so non-developers can run OpenMuse without terminals #78

Description

@littlegreenman-art

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:

OpenMuse Control prototype panel

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions