trusty-mpm 1.8.2

trusty-mpm: unified multi-agent orchestration platform (core, daemon, CLI, TUI, Telegram)
docs.rs failed to build trusty-mpm-1.8.2
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: trusty-mpm-1.7.9

trusty-mpm

Harness role: The Meta-Harness — PM-style multi-agent orchestration over coding work. Manages multi-project sessions, relays hooks, and exposes an MCP server to Claude Code sessions. Delegates coding tasks to trusty-code (tcode). See docs/architecture/harnesses.md for the full three-harness architecture and delegation graph.

Why: A single cargo install trusty-mpm should install all trusty-mpm tooling — the background daemon, the CLI, the TUI dashboard, and the Telegram bot — without requiring users to install eight separate packages and coordinate their versions.

What: Unified crate combining the formerly separate trusty-mpm-{core,client,mcp,daemon,cli,tui,telegram} sub-crates into one package with a single [[bin]] target (tm / trusty-mpm) that exposes all functionality via subcommands.

Installation

From GitHub Releases (recommended for binary users)

Prebuilt binaries are available for macOS (Apple Silicon) and Linux (x86_64).

  1. Open GitHub Releases, choose the newest trusty-mpm-v<version> release, and download the archive for your platform.

  2. Extract and install:

    tar xzf trusty-mpm-*.tar.gz
    chmod +x tm trusty-mpm
    sudo mv tm trusty-mpm /usr/local/bin/    # or ~/.local/bin/ if you prefer user install
    
  3. Verify the installation:

    tm --version
    

From crates.io

trusty-mpm 1.8.0 is published on crates.io. Requires Rust 1.94 or later (install Rust).

cargo install trusty-mpm --version 1.8.0 --locked

From Source with Cargo

Requires Rust 1.94 or later (install Rust).

cargo install --git https://github.com/bobmatnyc/trusty-tools trusty-mpm --locked

This builds from the latest commit on main and installs the binaries (tm and trusty-mpm) to ~/.cargo/bin/. Make sure ~/.cargo/bin/ is on your PATH.

To install a specific release, replace <version> with its tag version:

cargo install --git https://github.com/bobmatnyc/trusty-tools --tag trusty-mpm-vx.y.z trusty-mpm --locked

With Homebrew (recommended)

brew tap bobmatnyc/trusty
brew install trusty-mpm

Or install directly without tapping:

brew install bobmatnyc/trusty/trusty-mpm

Homebrew provides:

  • Automatic updates via brew upgrade trusty-mpm
  • Standard macOS / Linux PATH integration
  • Easy dependency management

The formula depends_on "rtk", so a Homebrew install pulls it in: tm compress routes tool output through the rtk binary and falls back to a slower native compressor when it is absent. cargo install users install it separately with brew install rtk. Do not run rtk init — it installs a competing PreToolUse hook, and tm invokes rtk directly.

Prerequisites & Special Cases

System Requirements

  • Node.js (optional): only needed if you plan to use the MPM JavaScript SDK or integrate with third-party JavaScript tooling. The daemon and CLI work independently of Node.
  • OS: macOS 12+ or Linux. Windows support is not yet available.

Binaries Installed

This crate installs two binaries with the same functionality:

  • tm — shorter alias for quick access
  • trusty-mpm — canonical name

Both are identical; choose whichever you prefer. The CLI (tm / trusty-mpm) discovers the running daemon automatically via the standard socket or HTTP port and requires no configuration beyond a running daemon.

Configuration

The daemon reads from ~/.config/trusty-mpm/config.yaml by default. See the trusty-mpm crate README for configuration examples and the full option reference.

tm daemon --config /path/to/config.yaml

Verify Installation

All installations can be verified by running:

tm --version

Expected output: the semantic version of the installed binary (e.g., tm 1.8.0).

Feature Flags

Feature Description Enables
default Common install: CLI + daemon cli, daemon
cli tm / trusty-mpm binary daemon, tui, telegram
daemon Daemon library module + daemon subcommand mcp
mcp MCP server library module —
tui TUI library module (tm tui) ratatui, crossterm
telegram Telegram bot library module (tm telegram) teloxide

Binary

There is a single binary, tm. cargo install trusty-mpm also installs trusty-mpm, a small compatibility alias that runs the tm installed beside it, so launchd plists and hook commands written by older releases keep working.

Binary Feature Description
tm cli Unified CLI: daemon control, sessions, projects, TUI, Telegram, MCP
trusty-mpm cli Compatibility alias: execs the sibling tm with the same arguments

All functionality previously in standalone shim binaries (trusty-mpmd, trusty-mpm-tui, trusty-mpm-telegram) is now accessed through subcommands: tm daemon, tm tui, tm telegram.

Library Modules

trusty_mpm::core       // Domain types: agents, sessions, hooks, IPC protocol
trusty_mpm::client     // Daemon HTTP client, command model, executor
trusty_mpm::mcp        // MCP server: OrchestratorBackend trait + dispatch  (feature: mcp)
trusty_mpm::daemon     // Daemon library: API router, DaemonState, serve_http  (feature: daemon)
trusty_mpm::tui        // ratatui coordinator dashboard  (feature: tui)
trusty_mpm::telegram   // Telegram bot library  (feature: telegram)

Quick Start

# Start the daemon
tm start

# Check status
tm status

# Launch a Claude Code session in the current directory
tm launch

# Open the TUI dashboard
tm tui

# Pair a Telegram bot
tm telegram pair

What's in 1.8

tm worktrees [--json] [--no-size]   # count and GiB per project from the worktree ledger
tm secrets doctor                   # project secrets through trusty-secrets (set, list, remove, import, copy)
tm memory forget --fact-key <key>   # forget the drawer that holds a slot (or pass a drawer id)
tm services                         # trusty-search is probed with search.health on its Unix socket
tm fleet init                       # resumes the Architect's prior Claude conversation

tm pr open tags a phase pull request with its [EPIC_N PHASE_M] issue title. tm doctor gains a worktree_registry row. tm services init starts trusty-search with --no-http, and port and url for trusty-search exit 1 naming the socket. See the CHANGELOG for the full list, including the breaking ServiceDecl change.

Token savings on the statusline

The tm statusline bar ends with a 💸 segment showing two whole-number percents: 💸34%/29% is the latest savings row's own reduction, then the mean across every savings row this session recorded (owner ruling 2026-09-15, #8063). Each row's percent is tokens_saved / tokens_before for that row alone, so the badge reports what the last tool call actually saved instead of diluting it across everything the session sent. With one row recorded, both figures are that row's. Three producers write the saved side to a ledger: instruction sources folded into one compiled prompt, bulk reads diverted to a cheap worker, and bash or gate output shrunk by tm compress — the segment itself folds the last two (#7867). A divert row's tokens are the diverted files' count minus the returned summary's; a compress row's are the input's minus the compressed form's, and a run that returned its input unchanged writes none. The segment reads 💸— when nothing has been recorded for the session, and it never renders 0%.

Rows live in ~/.trusty-mpm/usage/savings.jsonl and are folded at read time. The figure is an estimate, and it is NOT subtractable from the cost segment beside it. Mechanism, per-technique basis, and how to read the ledger: docs/trusty-mpm/statusline-savings.md.

GUI Note

There is no desktop GUI. The Tauri client (trusty-mpm-gui) and tm gui were retired (#7964); the fleet dashboard is hosted by trusty-console (#6924).

Upgrading / Migration

The standalone shim binaries trusty-mpmd, trusty-mpm-tui, and trusty-mpm-telegram have been removed. Their functionality is now exposed through subcommands of the single tm binary:

Old binary New command
trusty-mpmd [--addr <addr>] tm daemon [--addr <addr>]
trusty-mpm-tui tm tui
trusty-mpm-telegram tm telegram

Update any external references (launchd LaunchAgent plists, systemd units, Docker CMD, shell aliases, CI scripts) that reference trusty-mpmd to use tm daemon --addr <addr> instead. No symlink or wrapper shim is provided — this is a clean break with a documented migration path.

Example launchd plist update:

<!-- Before -->
<string>/Users/you/.cargo/bin/trusty-mpmd</string>

<!-- After -->
<string>/Users/you/.cargo/bin/tm</string>
<string>daemon</string>
<string>--addr</string>
<string>127.0.0.1:7880</string>

Architecture

crates/trusty-mpm/
├── src/
│   ├── lib.rs           # Re-exports core::* and client::*
│   ├── core/            # Domain types (agents, sessions, hooks, IPC)
│   ├── client/          # HTTP client + command model
│   ├── mcp/             # MCP server protocol (feature: mcp)
│   ├── daemon/          # HTTP daemon (feature: daemon)
│   ├── tui/             # ratatui dashboard (feature: tui)
│   ├── telegram/        # Telegram bot (feature: telegram)
│   └── bin/
│       └── tm/          # Single CLI entry point (compiled as both `tm` and `trusty-mpm`)
│           ├── main.rs
│           ├── cli.rs
│           ├── commands/
│           ├── formatters/
│           └── types.rs
└── tests/
    ├── e2e/             # HTTP-level daemon integration tests
    └── test_session_lifecycle.rs