Open-source healthcare interface engine

Your fast path off
legacy interface engines.

Interface-engine costs are climbing just as healthcare budgets tighten. MessageFoundry is the open-source alternative — self-hosted, with no per-interface licensing. It connects a wide range of healthcare protocols and message types, with deep HL7 v2 support and AI-assisted migration to get your interfaces off legacy fast. It's more than an HL7 interface engine.

Free & open source No per-interface fees No per-seat fees Fast legacy migration Now in Early Access
IB_Test_ADT
The IB_Test_ADT interface as a wired graph An MLLP inbound named IB_Test_ADT is wired by the name adt_router to a router, then by the name map_location to a handler that translates the patient location (PV1-3) from 4N-412B to ROOM412-B via the bed_locations translation table, then sends to a file outbound named FILE_Test_ADT. Non-ADT messages branch off as UNROUTED; unmapped locations are dead-lettered (held for review) — both tracked, never silently dropped. router="adt_router" → ["map_location"] Send("FILE_Test_ADT") INBOUND IB_Test_ADT MLLP · :2575 ROUTER adt_router route(msg) HANDLER · TRANSFORM map_location PV1-3 · patient location 4N-412B → ROOM412-B OUTBOUND FILE_Test_ADT File · out/adt UNROUTED not ADT DEAD-LETTER unmapped location delivered tracked — never dropped
from messagefoundry import MLLP, File, Send, code_set, inbound, outbound, router, handler

# Connections — named endpoints, wired together by name
inbound("IB_Test_ADT", MLLP(port=2575), router="adt_router")
outbound("FILE_Test_ADT", File(directory="./out/adt", filename="{MSH-10}.hl7"))

# Router — routes each message to handlers by name
@router("adt_router")
def route(msg):
    if msg["MSH-9.1"] != "ADT":
        return []          # not ADT → UNROUTED
    return ["map_location"]

# Translation table — edited in a grid, stored as version-controlled CSV
ROOMS = code_set("bed_locations")

# Handler — translate the patient location for the receiver
@handler("map_location")
def map_location(msg):
    msg["PV1-3.1"] = ROOMS[msg["PV1-3.1"]]   # unmapped → held for review
    return Send("FILE_Test_ADT", msg)

One example route. Use the Graph / Code toggle above to switch between the explainer diagram and the plain code.

Built to recognized standards
NIST SP 800-218 (SSDF) NIST SP 800-115 NIST SP 800-66 Rev. 2 (HIPAA Security Rule) OWASP ASVS 5.0 Level 3

Engineered for PHI and built to the security frameworks a healthcare CISO already trusts. See our security posture & standards →

A focused, dependable alternative to expensive legacy engines — for any interface you run, whatever the protocol or message type. Every message is delivered reliably and never silently dropped, your team stays in control instead of locked into a vendor's platform, and you can stand it up fast and migrate your existing interfaces over with AI assistance.

Why MessageFoundry

Built for analysts and developers alike

You don't have to be a developer to get started — setup wizards in the VS Code extension generate the wiring for you. And because Python is one of the easiest languages to learn, your interfaces stay readable and reviewable as your team grows into them.

Your config lives in git

Every interface change is a reviewable diff in version control — see who changed what, roll back in seconds, and ship with confidence. Nothing critical is hidden inside a database.

Ordered, reliable delivery — no broker

Durable delivery, in order to each destination — retried automatically, replayable on demand, and active-passive for high availability. No separate broker to install, run, or babysit.

Patient data protected by default

Built to recognized standards — NIST SSDF, the HIPAA Security Rule, and OWASP ASVS Level 3 — with authentication, least-privilege access, a tamper-evident audit trail, and encryption on by default. PHI is protected from day one, not bolted on later.

Our security, standards & PHI posture →

Handles real-world, messy HL7

Real-world HL7 is rarely textbook-perfect. MessageFoundry keeps quirky, non-conformant messages flowing — and applies strict validation only where you choose to turn it on.

Never lose track of a message

Every message that arrives is persisted the moment it lands, then tracked to a clear outcome as it's processed in order — so nothing is ever silently dropped, and your counts always reflect what really happened.

Tools for your whole team

A monitoring console to watch interfaces live and replay with a click, plus a VS Code extension with setup wizards — so analysts and developers can configure, test, and operate from familiar tools.

Security & standards

Built to the standards your security team already trusts

For PHI, security is the foundation — not a feature. MessageFoundry follows a published Secure Development Standard and is aligned with the frameworks a healthcare CISO already knows, so the trust conversation starts from common ground.

NIST SSDF 800-218

Built through a secure development lifecycle — threat-modeled per interface, peer-reviewed, and secure by default.

NIST 800-115

Security testing in CI — SAST, dependency, and secret scanning on every build. An independent external review and penetration test are planned after Early Access.

NIST 800-66 Rev. 2

Controls mapped to the HIPAA Security Rule — access control, audit, integrity, and transmission security.

OWASP ASVS 5.0 Level 3

Self-assessed against the highest application-security assurance level — ASVS Level 3 — for software handling the most sensitive data. Across all 345 L3 requirements: 212 met, 0 failed, 0 partial, 133 not applicable. A self-assessment, not an external audit.

Secure by default — TLS on by default, encryption on, least-privilege access, a tamper-resistant audit trail, and no PHI in logs — with sign-in via local accounts or Active Directory (LDAP). The software supports a HIPAA-compliant deployment; you stay in control of your environment.

Why switch

Ditch legacy prices and lock-in

Open source and self-hosted, so your costs don't climb every time you add an interface, and nothing is locked inside a vendor's runtime or contract.

See why teams are leaving legacy engines →

  • No per-interface licensing — it fits into your environment, and you add interfaces without a bigger bill each time.
  • Migrate with AI, not a project — the assistant drafts MessageFoundry equivalents from your existing channels, so you move off your current engine in weeks, not quarters.
  • Own your stack — your configuration lives in your git and your messages in your database; switch on your terms, with no contract lock-in.
  • Ships through your own CI/CD — review interface changes in pull requests and gate them with automated tests, like the rest of your software.
  • Easy to configure, powerful when needed — setup wizards generate the config for you, with full Python control whenever a case calls for it.
FAQ

Frequently asked questions

What is MessageFoundry?

MessageFoundry is an open-source, self-hosted healthcare interface engine written in Python. It routes, transforms, and validates messages across a wide range of protocols and message types — with deep HL7 v2 support — and runs entirely on your own infrastructure.

Is MessageFoundry free and open source?

Yes. The engine is free and open source under AGPL-3.0-or-later, installable from PyPI with pip install messagefoundry. A low-cost commercial license is also available from the non-profit for organizations that can't use copyleft terms.

What protocols and message types does MessageFoundry support?

It connects a wide range of protocols and message types, with deep HL7 v2 support — plus FHIR, X12/EDI, and DICOM — over transports including MLLP (with TLS), HTTP/REST, SOAP, files, SFTP, and databases.

Is MessageFoundry an alternative to legacy interface engines?

Yes. MessageFoundry is a modern, open-source alternative to legacy healthcare interface engines such as Mirth Connect, Rhapsody, and Corepoint. It is self-hosted and Python-native — interfaces are plain Python under version control — with no per-interface licensing.

Where does my data live?

On your own servers. MessageFoundry is self-hosted on-premises or in your private cloud, so PHI never leaves your infrastructure. It starts zero-config on SQLite and scales to PostgreSQL or SQL Server.

How much message volume can MessageFoundry handle?

Comfortably more than a single hospital's interface needs, with headroom to scale. On anonymized production telemetry, one inbound interface sustains a measured ~50 messages per second on commodity hardware — which works out to roughly 180,000 in a peak hour. A hospital's full ADT feed peaks at only around 1-2 messages per second, so a single interface carries that workload with room to spare, and interfaces scale out horizontally for higher volumes. Real-world throughput depends on your transforms, storage, and hardware. Whatever the rate, every message is persisted before it's acknowledged and delivered in order per interface, at-least-once — so messages aren't silently dropped.

How throughput really works →

Get off legacy on your own terms.

Configure interfaces with guided wizards, keep full Python control when you need it, and run it in your own environment — with no per-interface fees.