micro / micro/mu

Discussion: install and run agents and services without rebuilding Mu

Open
#1,630 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
434
Forks
21
Avg merge
18m
Merged PRs (30d)
326

Description

Why

Mu is a runtime for agents and services. Like an OS running apps, that creates an expectation that an operator can add something for Mu to run without forking or rebuilding the runtime. Micro is the first product on that runtime: a personal assistant. Future business deployments should use the same foundation with custom domains, organisation configuration, own keys/agents and external integrations.

This is a discussion proposal to revisit, not an implementation commitment.

What exists

  • User-defined agents are configuration (name, instructions, scoped tools), executed by Mu without rebuilding.
  • Built-in Go services are compiled into Mu's single binary.
  • External programs can consume Mu's API/MCP without being hosted by Mu.
  • Separately running go-micro services can be discovered with MU_REGISTRY=mdns. Mu calls them but does not install, start or supervise their processes. This mode also switches internal calls to HTTP and trusts the discovery network; it is not an authenticated extension boundary.
  • Importing an external Go module into the binary still requires rebuilding.

Proposed operating model

An operator installs a versioned agent/service package. A small manifest describes its identity, executable or image, version, configuration, requested capabilities and exposed interfaces. Mu validates it, obtains explicit operator approval for privileges, and starts it under a defined execution boundary. It registers the resulting capabilities, reports health and manages stop/restart/update/remove. Installation must not grant unscoped access to account data or host credentials.

Keep existing services in-process with memory transport. External services may run as separate processes or containers on the same machine; remote services are connected endpoints with separately owned lifecycle. Separate process placement should not force every built-in call onto network transport.

An external agent may bring its own reasoning loop and model keys while accessing scoped Mu tools. A configured Mu agent remains the simpler default. Service capability discovery should supply tool schemas and permissions; a custom UI is a separate concern, not implied by RPC registration.

Questions to resolve

  • Smallest first package format and execution backend: binary/process, container, or another sandbox? Who supplies and updates artifacts?
  • Use existing systemd/container supervision or own the lifecycle directly? Keep the runnable core simple and self-hostable.
  • Authentication, account identity propagation, capability grants, secrets and revocation across the external boundary.
  • Namespacing and collision rules; an extension must not impersonate a built-in service.
  • Discovery/schema contract: go-micro RPC, MCP, HTTP, or adapters? Support integrations without requiring every author to use Go.
  • Health, logs, resource limits, restart policy, upgrades, rollback and uninstall/data retention.
  • Separate local installation from connecting a remote endpoint in both API and UI.
  • How extensions appear in the existing service catalogue and assistant tool access without cluttering Home or adding competing navigation.

Possible first slice

One operator-installed example service, no Mu rebuild, isolated credentials and an authenticated connection, visible in the catalogue and callable by an authorised agent. Demonstrate start, stop, restart and removal while built-in calls remain in memory. A marketplace, arbitrary autonomous installation and business UI are outside that first slice.

The goal is a useful extension contract, not a requirement that every service become an agent or that every workload become multi-agent.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files, tests, or implementation entry points are named. Start by resolving the open questions around the package format, execution boundary, authentication, lifecycle, and discovery contract. Done would be a decided first-slice contract covering one operator-installed service without a Mu rebuild, isolated credentials, authenticated access, catalogue visibility, authorised calls, and start/stop/restart/removal.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend, infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.