Skip to main content

SDK for building hosted multi-agent Mash applications.

Project description

Mash

A Python SDK and host runtime for building self-hosted multi-agent applications.

Mash gives you a Python AgentSpec contract for defining agents, a HostBuilder for composing them into a multi-agent host, a FastAPI server for deployment, and a CLI/REPL for interacting with a running host.

Install

pip install mashpy

Requires Python >= 3.10. Set your LLM provider key:

export ANTHROPIC_API_KEY=...   # or OPENAI_API_KEY or GEMINI_API_KEY

What Mash Provides

  • Multi-agent composition — define a primary agent, add specialized subagents, and compose workflows behind a single host. Agents delegate to each other without a separate coordination layer.
  • Durable harness — requests execute through a durable engine and are recorded as replayable runtime events. Retries, restarts, and long-running work just work.
  • Human-in-the-loop — agents can pause for approval or ask users questions mid-execution. Interactions survive host restarts.
  • Workflows — ordered task sequences with structured output, defined in code or published dynamically at runtime.
  • Observability — span trees, trace analysis, telemetry API, built-in dashboard, and CLI trace inspection. No external APM needed.
  • Self-hosted interfaces — HTTP API with streaming, CLI, and interactive REPL. Deploy locally, in Docker, or on any cloud.
                  ┌─────────────────────────────────────────┐
                  │          Durable Request                │
                  │                                         │
                  │   ┌─ context ─── memory ──┐             │
                  │   │                       │             │
request ────────► │   │     Agent Loop        │ ──► signals │
(cli/api)         │   │ think → act → observe │      │      │
                  │   │                       │      ▼      │
                  │   └─ tools ───── skills ──┘  structured │
workflow ───────► │        ▲                      output    │
(schedule/trigger)│        │ user interaction               │
                  │        ▼ (approval / ask-user)          │
                  │                                         │
                  │       resumable · replayable            │
                  └─────────────────────────────────────────┘

See the product brief for a deeper look at each capability.

Quick Start

1. Define an agent

# my_agent/spec.py
from mash.core.config import AgentConfig
from mash.core.llm import AnthropicProvider
from mash.runtime import AgentSpec, HostBuilder
from mash.skills import SkillRegistry
from mash.tools import ToolRegistry


class PrimaryAgent(AgentSpec):
    def get_agent_id(self) -> str:
        return "primary"

    def build_tools(self) -> ToolRegistry:
        return ToolRegistry()

    def build_skills(self) -> SkillRegistry:
        return SkillRegistry()

    def build_llm(self):
        return AnthropicProvider(app_id="primary")

    def build_agent_config(self) -> AgentConfig:
        return AgentConfig(
            app_id="primary",
            system_prompt="You are a helpful assistant.",
        )


def build_host():
    return HostBuilder().primary(PrimaryAgent()).build()

2. Serve it

mash host serve --host-app my_agent.spec:build_host --port 8000

3. Connect

mash connect --api-base-url http://127.0.0.1:8000 --api-key secret --agent primary
mash repl

Key Concepts

Concept What it is
AgentSpec Abstract contract defining one agent (id, tools, skills, LLM, config)
HostBuilder Fluent builder that composes agents and workflows into an AgentHost
ToolRegistry Register callable tools; built-ins include Bash, AskUser, InvokeSubagent
SkillRegistry Markdown instruction bundles loaded on demand via a meta-tool
LLMProvider Adapters for Anthropic, OpenAI, and Gemini
WorkflowSpec Ordered task chains with structured output, orchestrated by DBOS

Example: Mash Pilot

Mash Pilot is a full example host app built on the Mash SDK. It demonstrates multi-agent composition, custom REPL commands, workflows, and deployment. Use it as a reference when building your own host.

Build with a Coding Agent

This repo includes CLAUDE.md so coding agents like Claude Code, Codex, and Cursor can scaffold a Mash-powered agent from a natural language prompt. Copy it into your project or point your agent at this repo to get started. The Pilot agent also includes a build-mash-agent skill for interactive agent scaffolding.

Documentation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mashpy-0.5.0.tar.gz (217.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mashpy-0.5.0-py3-none-any.whl (264.2 kB view details)

Uploaded Python 3

File details

Details for the file mashpy-0.5.0.tar.gz.

File metadata

  • Download URL: mashpy-0.5.0.tar.gz
  • Upload date:
  • Size: 217.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mashpy-0.5.0.tar.gz
Algorithm Hash digest
SHA256 f1c0875bb596c86a5c0968ded25bbeae6a52ff6e9fa9bfdfaf7e7c3a6c01a366
MD5 65d8e77a70593106d0479b6f40dd973f
BLAKE2b-256 27a5b0725342abfbd95e6b45994ffb2aa453de5b5effece1c3c7fc31483e524e

See more details on using hashes here.

Provenance

The following attestation bundles were made for mashpy-0.5.0.tar.gz:

Publisher: publish.yml on imsid/mashpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mashpy-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: mashpy-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 264.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mashpy-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fcc6458fb84b6a840336f16b0dd77c3ceeca6c7e56c0c60f6e3fcb1a700c7a7a
MD5 21d887bc12f9ea4d1a25eee517ecfb3a
BLAKE2b-256 0bce2581374370e5ba1b941d6bcd70030d3bfc76b56c964af1947baf4aee197c

See more details on using hashes here.

Provenance

The following attestation bundles were made for mashpy-0.5.0-py3-none-any.whl:

Publisher: publish.yml on imsid/mashpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page