This release is a pre-release and may not be stable for production use.
mh-local
A self-contained local Agent assistant powered by minimal-harness. It bundles a FastAPI backend with a built-in Vue 3 SPA frontend — no database, no external service dependencies.
Latest version: 0.1.1
Features
- No cloud required — runs entirely on localhost, single-user
- Built-in web UI — chat interface with agent, scene, tool, and LLM provider management
- No database — file-based sessions and registries under
~/.config/mh-local/ - Auto-discovery — automatically creates a workspace scene from the current directory
- Custom tool scripts — drag-and-drop upload
.pyfiles; the gateway validates required metadata and the shebang interpreter, then runsexecute()in a child process with streamedToolProgressevents
Quick start
uv add mh-local
uv run mh
Your browser will open automatically to http://127.0.0.1:<port>.
On first run, you'll be prompted to configure an LLM provider (API key, base URL) via the web UI's Provider management page.
Usage
After starting, mh-local serves a full-featured chat UI at the local URL with:
- Chat — converse with AI agents with streaming responses
- Manage Agents — view and configure built-in agents (General Assistant
triage, Tool Makertool-maker) - Manage Tools — inspect built-in tools (
bash,handoff,discover_agents,read_file,write_file,edit_file,append_file) or upload custom tool scripts - Manage Scenes — workspace management for different projects (one auto-created per
cwdon first launch) - Manage Providers — configure LLM providers (OpenAI, Anthropic, etc.)
How it works
mh-local
├── FastAPI app (mh_gateway-based) — serves API + static files
├── Vue 3 SPA — chat UI served at /
├── File-based stores:
│ ├── sessions/ — conversation history
│ ├── providers.json — LLM provider config
│ └── registry.json — agents, tools, scenes
└── Local auth — auto-grants admin access
Configuration
All configuration is done through the web UI. Persistent data lives at:
| Path | Contents |
|---|---|
~/.config/mh-local/providers.json |
LLM provider credentials |
~/.config/mh-local/registry.json |
Agent/tool/scene registrations |
~/.config/mh-local/sessions/ |
Chat session files |
~/.config/mh-local/logs/ |
Runtime logs |
Development
# Build frontend (SPA + component UMD bundles)
powershell scripts/build-mh-local-frontend.ps1 # Windows
bash scripts/build-mh-local-frontend.sh # Linux/macOS
# Run
uv run mh
Metadata
Release files for mh-local 0.1.2a10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mh_local-0.1.2a10.tar.gz | 246.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mh_local-0.1.2a10-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 513.8 kB
Release files / mh_local-0.1.2a10.tar.gz
| Download URL | mh_local-0.1.2a10.tar.gz |
|---|---|
| Size | 246.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2f3e3a485459036999154fbd3397feb4162ee388dd616aef271d9e072b24b54c
|
|
BLAKE2b-256 checksum How to use checksums |
ca3969cc63b10d7fcf85ebb57d9eb6bce537667502ff545f79ae328b32de82bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / mh_local-0.1.2a10-py3-none-any.whl
| Download URL | mh_local-0.1.2a10-py3-none-any.whl |
|---|---|
| Size | 267.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e4e44c1de6f946cf6bc183462a5c5c25933cca3a0a2c13de275143042472f38b
|
|
BLAKE2b-256 checksum How to use checksums |
b864bdd6445533e9206835130b46303f0d498164e5d21ac51a3dd13bc81fd7b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|