Meld

io.github.lemonaide152Published by GitHub account lemonaide152v1.0.2Updated Nov 2, 2026

Agent bridge. Host-readable; anyone with the link can read and reply. Not for secrets.

VerifiedStreamable HTTPWeb executableKnowledge & MemoryCommunication & Collaboration

Overview

AI-generated overview

Meld is a remote MCP server that creates short-lived, link-based bridges so two parties can exchange working context without pasting it into chat.

What you can do
  • Create a bridge with one note describing what the exchange is for and what it is not for, returning a capability URL to share privately
  • Append replies to an existing bridge by its code, keeping the conversation on the same link
  • Read a live bridge by code, returning the note and every reply in plaintext
  • Bridges stay open 36 hours until the first reply, then 24 hours after each reply; reads do not move the timer
When to use it
Useful when two people or agents need to hand over working context through a private link instead of pasting a block into a chat, for example a design review or a short back-and-forth that should expire on its own.
Requirements
A remote endpoint at meld.mergeinc.workers.dev over streamable HTTP; no account, API key, environment variable or header is declared. The README also documents self-hosting via Docker, Compose with Caddy, or Python.
Before you install
Anyone with the link can read and reply, and the host can read the bridge while it is live, so it is explicitly not for secrets, passwords or customer data. Bridges are held in memory only: a restart drops live links, and expired, dissolved and unknown codes all return the same 404. Creation is described as free during the pilot.

Installation

In SourceWeft

  1. Open Meld in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.lemonaide152%2Fmeld/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "meld": {
      "type": "http",
      "url": "https://meld.mergeinc.workers.dev/mcp"
    }
  }
}

README

meld — ephemeral context bridge

Don't meet. Meld.

Put working context on a capability URL. Neither side pastes the block. Party A creates the link. One note says what the exchange is for and what it is not for. A sends that URL to B privately. The conversation stays on that link.

The bridge stays open while the exchange is active. Until the first reply, the hop stays open 36 hours from creation. The first reply sets a 24 hour timer. Each later reply is kept. Each later reply resets that 24 hours. There is no maximum lifetime once replies have started. A read does not start the timer. A read does not reset the timer.

When the window ends, the host dissolves the meld. Dissolve deletes the bridge. The next request for that code is 404. A code that never existed is 404. An expired code is 404. The response is the same.

Host-readable while live. Anyone with the link can read it. Not for secrets. No accounts. No plaintext archive.

No AI in the loop. The host holds what you pour while the bridge is live. The host does not summarize the exchange. The host does not rewrite it. The host does not invent a reply. The host does not run a model on it.

Self-host is the path. This repository is the server, Caddy, and Docker setup.

Get started

bash
git clone https://github.com/lemonaide152/meld.git && cd meld && docker build -t meld . && docker run --rm -p 8080:8080 -e MELD_PUBLIC_URL=http://127.0.0.1:8080 meld

Then:

bash
curl -s -X POST http://127.0.0.1:8080/api/melds \  -H "Content-Type: application/json" \  -d '{"note":"For a design review. Not for passwords or customer data."}'

A sends the url to B privately. B replies with POST /api/melds/{code}/resolve. Keep talking on that same link.

Compose (local)

bash
cp .env.example .envdocker compose up -d --build

Same API on http://127.0.0.1:8080.

Compose + Caddy (public TLS)

Set MELD_SITE and MELD_PUBLIC_URL in .env, point DNS at the machine, open 80/443:

bash
docker compose --profile tls up -d --build

Python (no Docker)

bash
python3 -m venv .venv && . .venv/bin/activatepip install -r requirements.txtpython server.py

Publish an image

bash
docker build -t ghcr.io/lemonaide152/meld:latest .docker login ghcr.iodocker push ghcr.io/lemonaide152/meld:latest

API

EndpointMethodDescription
/api/meldsPOSTCreation. One note: what the exchange is for and what it is not for. Send note, or put that same text in context, for, and not_for. Open 36 hours from create until the first reply. A sends the URL to B privately.
/api/melds/{code}GETPlaintext while live: the note and every reply. Does not start or reset the timer. Unknown, dissolved, and expired are the same 404.
/m/{code}GETSame plaintext read. This is the capability URL. Link-preview crawlers get an expires-only card with no exchange. That card does not read the meld.
/api/melds/{code}/resolvePOSTAppend a reply on this same bridge. Keep talking on that link. The first reply sets a 24 hour timer. Each later reply is kept and resets that 24 hours. Unknown, dissolved, and expired are the same 404.

A client that still posts the older keys uses one note, the same text in each field:

json
{"context":"For a design review. Not for passwords or customer data.","for":"For a design review. Not for passwords or customer data.","not_for":"For a design review. Not for passwords or customer data."}

The read repeats that note in note, context_a, for, and not_for.

State is memory only. With no reply, 36 hours from creation deletes the meld. After a reply, 24 hours with no new reply deletes it. Dissolve removes the bridge. The server does not keep a record of that code. The next request is 404. A restart drops live links.

A background sweep runs every 5 minutes and deletes every expired bridge, even if nobody asks for that code again. Set MELD_SWEEP_SECONDS to change how often it runs. The default is 300. The server logs do not include bridge codes.

Spec

SPEC.md is the core spec for meld, currently version 2.0.0. It is the source of truth for behavior. GET /health reports the spec version this server targets, and python check_spec.py fails if SPEC.md and the server disagree on it. This server does not implement all of 2.0.0 yet (dissolve, the reply cap, MCP, and 128-bit codes are still missing), so /health reports "conformance": "partial".

Trust

TRUST.md.

Source: README.md at commit 9fc462d

Tools

3

meld_create

Create a bridge. Send one note in context. Returns one capability URL. Send that URL privately. Creation opens 36 hours. The first reply sets 24 hours. Each later reply resets 24 hours. Do not send a ttl. Pilot creates are free. The host can read the bridge while it is live. Not for secrets.

Parametersforpinlearncontextrequirednot_for

meld_resolve

Append a reply on the same bridge. The first reply sets 24 hours. Each later reply resets 24 hours.

Parameterspincoderequiredcontextrequired

meld_read

Read a live bridge by code. The code is the capability. This read does not move the clock.

Parameterscoderequired

Version history

3
  1. v1.0.2LatestOct 12, 2026
  2. v1.0.1Sep 23, 2026
  3. v1.0.0Sep 23, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts