Skip to main content

Mech Server

PyPI PyPI - Python Version PyPI - Wheel License Downloads

Sanity checks and tests Coverage flake8 mypy Black bandit

A CLI to create, deploy and manage Mechs — AI agents that execute tasks on-chain for payment — on the Olas Marketplace.

Note: The codebase uses the term service (from the underlying Open Autonomy framework) interchangeably with AI agent.

Quick Start

pip install mech-server
mech setup -c <chain>
mech run -c <chain>

Supported Chains

Chain Native OLAS Token USDC Token Nevermined
Gnosis ✅ ✅ ❌ ✅
Base ✅ ✅ ✅ ✅
Polygon ✅ ✅ ✅ ✅
Optimism ✅ ✅ ✅ ✅

Requirements

Commands

Command Description
mech setup -c <chain> Full first-time setup: workspace, agent build, mech deployment, env config, key setup
mech add-tool <author> <name> Scaffold a new mech tool
mech prepare-metadata --name <name> -c <chain> Recompute package fingerprints, push packages and metadata to IPFS, and write METADATA_HASH and TOOLS_TO_PACKAGE_HASH to .env
mech prepare-metadata --name <name> -c <chain> --offchain-url <url> Same as above, also sets the offchain URL in metadata and .env
mech prepare-metadata --name <name> -c <chain> --operator-name <op> --operator-domain <host> Same as above, also records who operates the mech (--operator-contact is optional)
mech prepare-metadata --name <name> -c <chain> --benchmark-url <url> --benchmark <tool> <metric> <window> Same as above, also links each tool to its live score (--benchmark is repeatable)
mech prepare-metadata --name <name> -c <chain> --terms-url <url> Same as above, also publishes the operator's terms link in the metadata and on off-chain responses
mech prepare-metadata --name <name> -c <chain> --erc8004-agent-id <id> Same as above, with the ERC-8004 agent id set by hand instead of resolved from the marketplace
mech update-metadata -c <chain> Update the metadata hash on-chain via Safe transaction
mech run -c <chain> Run the mech AI agent via Docker
mech stop -c <chain> Stop a running mech AI agent

Developing a new tool

New service (no existing mech)

  1. Set up the workspace and deploy the mech on-chain:

    mech setup -c <chain>
    
  2. Scaffold a tool:

    mech add-tool <author> <tool_name> -d "Tool description"
    
  3. Implement the tool logic in ~/.operate-mech/packages/<author>/customs/<tool_name>/<tool_name>.py. The scaffold generates a working stub with the correct structure:

    ALLOWED_TOOLS = ["tool_name"]
    
    def run(**kwargs: Any) -> MechResponse:
        prompt = kwargs.get("prompt")
        if prompt is None:
            return error_response("No prompt has been given.")
        result = do_work(prompt)
        context = None
        artifact = None
        callback = None
        return result, prompt, context, artifact, callback
    
  4. If your tool requires API keys or other secrets, add them to ~/.operate-mech/.env.

  5. (Optional) If your mech should serve off-chain requests over HTTP, provide a URL that routes to the mech's HTTP server (localhost:8000). This URL is included in the mech's on-chain metadata so that clients can discover it:

    mech prepare-metadata --name <name> -c <chain> --offchain-url <url>
    

    Alternatively, set MECH_OFFCHAIN_URL in ~/.operate-mech/.env.<chain> and run prepare-metadata without the flag.

  6. Generate and publish metadata (to IPFS), then update the on-chain registry. --name is the human-readable mech name and is required:

    mech prepare-metadata --name <name> -c <chain>
    mech update-metadata -c <chain>
    
  7. Run:

    mech run -c <chain>
    

Existing service (mech already running)

  1. Stop the service:

    mech stop -c <chain>
    
  2. Scaffold, implement, and set any required API keys (same as steps 2–4 above).

  3. Generate and publish metadata (to IPFS), then update:

    mech prepare-metadata --name <name> -c <chain>
    mech update-metadata -c <chain>
    
  4. Restart:

    mech run -c <chain>
    

Documentation

Find the full tutorial (tool development, publishing, sending requests) at stack.olas.network.

Metadata

Release files for mech-server 0.8.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mech-server 0.8.6
File Size Uploaded
mech_server-0.8.6.tar.gz 1.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for mech-server 0.8.6
File Interpreter ABI Platform
mech_server-0.8.6-py3-none-any.whl Python 3 none any Details

Total release size: 2.7 MB

Release files / mech_server-0.8.6.tar.gz

Download URL mech_server-0.8.6.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
08d22e318c4397f1c4c3952087369fdd8fd7ac484a09cb2da86c4297115b11cb
BLAKE2b-256 checksum
How to use checksums
9b6fa4f2319b82120e8c50f1063d36ce85b05a928648c26270be9c02f5765747
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / mech_server-0.8.6-py3-none-any.whl

Download URL mech_server-0.8.6-py3-none-any.whl
Size 1.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
21ffadb51b3cbc6ed8336ba94e9b6742ad93eff91197800610788b9181c609be
BLAKE2b-256 checksum
How to use checksums
ada3cf2beb15345bfe03755b83b3a758ab5e22d7ddacbe1800409b6ed5f71a08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.8.6 This release

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page