Open Source · Apache-2.0

Medusa Ledger — Open Source Trust Ledger for Business

Append-only SHA-256 ledger so anyone can prove business events — without replacing your ERP.

SHA-256 · append-only Single ledger per instance npm · Spring · Docker · .NET

Core vs Cloud

Open the engine. Keep multi-tenant business features commercial.

Medusa Core (OSS)

Blocks, hashes, events, verify, basic API, Docker, SDK, docs.

Medusa Cloud

Multi-tenant / white-label, payment anchors, analytics hubs, SLA, ERP connectors.

How an event becomes proof

You define the event. Medusa makes it verifiable.

1
YOUR APP
2
EVENT + payload
3
SHA-256
4
BLOCK
5
VERIFY

Open Concept guide

Storage SPEC

Operational DB is state. Medusa is evidence. The chain lives next to the app — not in the other service’s Mongo.

Embedded

npm install · FileStore · ./ledger/blocks/*.json

Sidecar

Docker / K8s volume · HTTP append + verify from any language

Cloud

Managed ledger per business unit · backups, anchors, multi-tenant

Open Storage SPEC

Install SPEC

Same protocol. Pick the stack already in the project. Node is the hash reference in v0.1; Spring and .NET talk HTTP to the sidecar.

Embedded Core in Node

In-process FileStore. No extra container required.

npm install @medusa-ledger/core
const { MedusaChain, FileStore } = require("@medusa-ledger/core");

const chain = new MedusaChain(new FileStore("./ledger"), { autoSeal: true });

await chain.appendEvent({
  eventId: "order-001",
  eventType: "ORDER_CREATED",
  payload: { amount: 50000, currency: "COP" }
});

console.log(await chain.verifyChain());

Quick start

Append ORDER_CREATED, then PAYMENT_RECEIVED, then verify. Same two events on every stack.

Install the Core

npm install @medusa-ledger/core

Append two events

const { MedusaChain, FileStore } = require("@medusa-ledger/core");
const chain = new MedusaChain(new FileStore("./ledger"), { autoSeal: true });
await chain.appendEvent({ eventId: "order-001", eventType: "ORDER_CREATED",
  payload: { customerId: "customer-42", amount: 50000, currency: "COP" } });
await chain.appendEvent({ eventId: "payment-001", eventType: "PAYMENT_RECEIVED",
  payload: { orderId: "order-001", amount: 50000, currency: "COP" } });

Verify the chain

console.log(await chain.verifyChain());
// { valid: true, message: "Ledger integrity verified" }

Core v0.1 lives on main. Node hashes are canonical; Spring and .NET use the Docker sidecar until native SPEC hashes ship.

Usage manual

Install, API reference, block/tx model, chain verify, and OSS limits.

GitHub Sponsors

Core is open; Cloud is managed. Sponsors fund discovery and roadmap — not a back door into multi-tenant, payment hubs, or SLA.

Community · $0

Medusa Core: blocks, hashes, events, verify, Docker, NPM, docs. Run the ledger on your disk.

Cloud / Business / Enterprise

Hosted ledgers per unit, white-label, payment anchors, analytics, ERP connectors, SLA.

Become a sponsor

Need hosted multi-tenant?

Medusa Cloud runs isolated ledgers per business unit with analytics and payment anchors.