Skip to content

ribosome

One manifest declares the language runtimes and the MCP servers a project needs. ribosome resolves them together, deduplicates shared runtimes, and pins everything into one reproducible lockfile — before any workflow runs.

Standing up a project that uses MCP servers today means doing two unrelated jobs by hand: installing the language runtimes each server needs, and configuring each server separately, with no shared version policy, no deduplication when ten servers all want node@24, and nothing pinned. Nothing ties the two together — you find out something’s missing when a run fails halfway through.

One manifest

Runtimes and MCP servers declared together in a single ribosome.json, instead of two separate, unsynced configs.

Resolved up front

A missing tool or an unresolvable server fails at validation time – before any workflow runs – with every failure reported at once, not one at a time.

Deduplicated and pinned

Ten servers needing node@24 produce one pool entry, one install. Every resolution lands in a single reproducible lockfile.

  1. Declare your runtimes and MCP servers together in one ribosome.json.
  2. Resolve — ribosome provisions each runtime, resolves each server against its registry, and deduplicates shared runtimes into a pool. If anything can’t be resolved, it reports every failure at once, before any workflow runs.
  3. Pin — the whole result lands in one ribosome.lock.json: a deduplicated runtime pool plus one isolated environment view per server, reproducible on the next run.
Terminal window
npx @medullaflow/ribosome resolve

Ready to try it? Start with the Quickstart →, or read how ribosome works for the full design.