README.md

June 15, 2026 · View on GitHub

Vellum

Vellum

Open protocol for multi-party enterprise workflows.

What it is · Use cases · Quickstart · Architecture · Modules


Vellum open protocol: the Protocol interfaces, types, and configuration schemas for multi-party coordination — negotiation, persistence, integrity, and identity — plus in-memory reference doubles you can run against immediately.

The vertical changes. The protocol doesn't.

The coordination engines (consensus, negotiation runtime, sealing workflow, persistence pipeline, sync) ship under commercial license. Implement the protocols here against your own runtime, use the in-memory reference doubles for testing and prototyping, or contact the maintainer.

What Vellum Is

LayerWhat this repo provides
NegotiationConsensus rule schema, proposal types, store protocol + in-memory store, namespace adapter protocol, entity-type registry
State MachineConfig schema, transition result type, and the transition-validator protocol
PersistenceProtocol interfaces (type resolution, ID generation, validation, backend) + in-memory backend
SealingContent hashing reference impl (SHA256 + canonical JSON) and seal authority protocol
IdentityActor context, role-based access control primitives
MiddlewareIdempotency, rate limiting, retry-with-backoff, audit pipeline hooks
EventsTyped event sourcing primitives, event stream protocol, in-memory recorders

Use Cases

Any domain where multiple parties negotiate terms and settle agreements on record.

DomainPartiesWhat they negotiate
Securities Settlementdealer, counterparty, custodiansettlement date, price, delivery method
Repo Agreementsrepo desk, counterpartyrepo rate, haircut, collateral, maturity
Insuranceinsurer, reinsured, brokerpremium, coverage, deductibles, exclusions
Syndicated Loanslead arranger, participant banks, borrowerspread, covenants, drawdown
Real Estate & Leaseslessor, lesseerent, term, break clause, fit-out, deposit
Healthcare Contractsprovider, payerreimbursement rates, formulary, prior auth rules
Energy Tradinggenerator, offtakerstrike price, volume, delivery point, curtailment
Cross-Border Paymentsoriginator, correspondent, beneficiary bankFX rate, fees, compliance

Quickstart

Define a consensus rule schema and entity type. The protocol is what's public; the engine that interprets it ships separately.

from vellum.negotiation import (
    ConsensusConfig,
    ConsensusRule,
    EntityTypeConfig,
    register_entity_type,
)

# Declarative consensus rules — what fields require what approvers
config = ConsensusConfig(
    party_roles={"lessor", "lessee"},
    default_required_approvers={"lessor", "lessee"},
    default_authoritative_role="lessor",
)
config.add_rule(ConsensusRule(
    field_pattern="rent.*",
    required_approvers={"lessor", "lessee"},
    authoritative_role="lessee",
))

# Register your entity type
register_entity_type(EntityTypeConfig(
    graphql_type="LeaseAgreement",
    lifecycle_stages=["DRAFT", "NEGOTIATING", "SIGNED", "ACTIVE"],
    participant_fields={
        "lessor": ("lessorId", "lessor.id"),
        "lessee": ("lesseeId", "lessee.id"),
    },
    source_namespace_field="lessorId",
    field_path_mappings={},
))

Use the protocols (ProposalStore, NamespaceAdapter, ContentHasher, SealAuthority, PersistenceBackend) to wire your own runtime.

Install

pip install -e .

Architecture

┌─────────────────────────────────────────────────────────┐
│                   Your Application                      │
│         (transport, auth, UI, chain submission)          │
└────────────────────────┬────────────────────────────────┘

┌────────────────────────▼────────────────────────────────┐
│              Vellum Protocol  (this repo)               │
├─────────────┬──────────────┬──────────────┬─────────────┤
│ Negotiation │ State Machine│   Sealing    │   Events    │
│   schema    │   schema     │   hashing    │  protocols  │
│   types     │   protocol   │   protocol   │   types     │
├─────────────┴──────────────┴──────────────┴─────────────┤
│              Identity  &  Persistence                   │
│                                                         │
│        Protocols, types, reference utilities            │
├─────────────────────────────────────────────────────────┤
│                    Middleware                            │
│                                                         │
│  Idempotency, rate limiting, retry, pipeline hooks      │
└────────────────────────┬────────────────────────────────┘

┌────────────────────────▼────────────────────────────────┐
│       Vellum Core Runtime  (commercial license)         │
│                                                         │
│  Consensus engine · Field state machine · Proposal      │
│  manager · Orchestrator · Sealing workflow              │
└─────────────────────────────────────────────────────────┘

Modules

ModulePurpose
vellum.negotiationConsensus rule schema, proposal types, store protocol, entity registry
vellum.statemachineFSM config schema + transition-validator protocol
vellum.sealingSHA256 content hashing, seal protocol, verification types
vellum.identityActor context, RBAC primitives
vellum.persistencePersistence protocols, type resolution, in-memory backend
vellum.middlewareIdempotency keys, rate limiting, retry with backoff, audit pipelines
vellum.eventsEvent sourcing, typed event streams, replay
vellum.coreShared utilities

Requirements

Python >= 3.10.

License

MIT — see LICENSE.

The Vellum Core runtime (consensus engine, orchestration, sealing workflow, vertical templates) is shipped separately under a commercial license.