Early Access · beta. We're building toward 1.0 — and we want people involved now, while it can still be shaped. Where the project stands →

Feature list

Every feature, in one table

A complete, scannable index of what MessageFoundry does in Early Access, grouped by area. Want the story behind each capability? The detailed features page walks through them. Possible future additions are in their own table at the end.

Feature What it does
Open source & no lock-in
AGPL-3.0-or-laterOpen license — read it, run it, fork it. A low-cost commercial edition is available when the AGPL doesn't fit.
Configuration as codeConnections, Routers, and Handlers are diffable, reviewable modules — wizard-generated or hand-written. The database holds runtime state and messages only, never configuration.
Standard databasesRuns on SQLite, PostgreSQL, or SQL Server — no proprietary data platform required, and no proprietary scripting language to staff for.
No runtime or contract lock-inSelf-hosted, on your infrastructure, on your terms.
Reliability
Durable before acknowledgedThe inbound is ACKed only after the received message is committed to the store on ingest, so an accepted message survives a crash before any processing begins.
Reliable deliveryEvery accepted message is persisted and delivered; nothing is silently dropped.
Ordered (FIFO) deliveryMessages to a given destination are delivered first-in, first-out, preserving per-connection sequence.
Per-outbound workersEach destination drains independently; one slow or failing peer never blocks the others.
Automatic retries & failure policyBack off and retry on a configurable policy, then dead-letter, with a bulk-replay view for recovery.
ReplayRe-drive a stored message through delivery from the console or API.
Automatic crash recoveryAfter a restart or crash, in-flight messages resume from the durable store with no manual cleanup.
Nothing silently droppedEvery message is persisted on ingest, then processed to a recorded disposition — routed, filtered, or unrouted.
Message formats
HL7 v2, deeply parsedFull parsing and validation: fast and tolerant on the hot path, strict and version-aware where you opt in — built to expect real-world, non-conformant HL7.
FHIRA FHIR codec with FHIRPath; create / update / transaction against a FHIR server (R4B default; R5 / STU3).
X12 / EDIAn on-demand X12 codec — tolerant routing peek, interchange splitting, and structured access.
JSONOne-call parsing to a dict, then transform with the full power of Python.
XML / SOAPRead with an XXE-safe parser — external entities, embedded DOCTYPE, and billion-laughs expansion are rejected, not parsed.
DICOM (headers / SR)Parsed by a pure DICOM codec (routing peek + header / Structured-Report walk); map SR → HL7 v2 in a code-first Handler. Headers and SR only, no pixel data. DICOM details →
Any other payloadCarried byte-faithfully and routed, transformed, and delivered with the full power of Python — bring your own library.
Encoding read from the messageFor HL7 v2, the field, component, repetition, escape, and subcomponent separators come from MSH, never hardcoded.
Raw message preservedKept alongside the transformed form, so an operator always sees exactly what arrived.
Parse failures isolatedRouted to the error / dead-letter path and logged, so a bad message never takes down the connection.
Connections
MLLPCorrect 0x0B … 0x1C 0x0D framing, inbound and outbound, with ACK/NAK generation (AA / AE / AR) and a per-connection ack mode.
TCPRaw stream endpoints.
X12 / EDIISA/IEA-framed X12 interchanges over TCP, inbound and outbound — paired with an on-demand X12 codec for structured access.
HTTP / RESTDeliver to modern REST APIs over HTTP(S). (An inbound REST listener is on the roadmap.)
SOAPDeliver to legacy SOAP / WS web services. (An inbound SOAP listener is on the roadmap.)
FHIR REST destinationCreate / update / transaction against a FHIR server — R4B default (R5 / STU3) — with a FHIR codec and FHIRPath. (An inbound FHIR listener is on the roadmap.)
Files — localRead from and write to local directories, with templated output names (e.g. {MSH-10}.hl7).
SFTP / FTP / FTPSRemote file transfer, inbound and outbound.
DatabasePoll records in and write results out.
DICOM imagingC-STORE SCP (receive) and SCU (send) plus C-ECHO over DIMSE, and DICOMweb STOW-RS over HTTP, with a code-first SR→HL7 v2 transform. DICOM details →
Count-and-log invariantEvery message a connection takes in or puts out is counted and logged; a router or filter decision is a recorded outcome (UNROUTED / FILTERED), never a silent drop.
Routing & transformation
One-to-many routing with filteringFan a message out to multiple destinations, or filter it out entirely; every decision is a recorded outcome.
Transform, enrich, validateReshape and augment messages mid-flight, with validation where you want it.
Translation tables (code sets)Edit value-mapping tables in a spreadsheet-style grid in the VS Code extension, stored as plain version-controlled CSV in your config — validated on save (no duplicate keys) and looked up in a Handler with code_set("…"). Diffable in git, not locked in a black-box database.
Live database lookupsQuery a live database during processing to enrich or validate a message.
Guided wizards or pure functionsNew Connection / New Route wizards generate the wiring, or write Routers and Handlers as plain functions registered by name — no proprietary DSL.
Dry-run with before/after diffPreview a route's effect on a real message before it ships.
Security & PHI
AuthenticationLocal accounts and Active Directory (LDAP) sign-in, with opaque, revocable sessions.
Multi-factor authenticationBuilt-in, required TOTP multi-factor authentication for local accounts.
RBACFixed built-in roles, deny-by-default, with per-route and per-channel scoping.
Localhost-bound APIThe API binds 127.0.0.1 by default and requires authentication.
TLS in transitThe API and MLLP run over TLS by default (including MLLP-over-TLS); for endpoints that can't do TLS, plaintext is supported within your secure network perimeter.
Tamper-evident audit logA hash-chained, user-attributed record of every PHI access (raw view, summary, replay), with a verification command.
Off-box log & audit forwardingOperational and audit logs forward to your syslog or SIEM collector.
Encryption at restMessage bodies are encrypted with AES-256-GCM in the store.
Retention & purgeKeep messages as long as policy requires, then purge on a configurable schedule.
Tooling — console, editor & CLI
Admin consoleDashboards, message search and browse, an HL7 parse-tree viewer, delivery and audit trail, a dead-letter page, an alert-rules view, and one-click replay — a separate app reaching the engine only over the localhost API.
VS Code extensionCompletion, live HL7-aware validate-on-save, a graph view of your integration (a boxes-and-arrows diagram), a Translation Tables grid editor, source-control integration, and Stage → Promote to a running engine.
CLI & localhost APImessagefoundry serve exposes connection control, message search/detail, replay, stats, and a live WebSocket feed; check gates commits and generate produces synthetic HL7.
AlertingWebhook and email alerts when a connection stalls or a message dead-letters.
Metrics exportA Prometheus / OpenTelemetry-compatible /metrics endpoint (access-controlled) for scraping engine and connection metrics into your monitoring stack.
Hot-reload & environment promotionConfiguration hot-reload, with DEV/PROD values layering over the same modules.
ACK modes & guardsConfigurable ACK modes plus message-size and segment guards.
Authoring & AI assist
Setup wizardsGuided New Connection and New Route flows that generate the Python for you — guided authoring whose output is plain code you own and review.
PHI-safe AI assistanceAn in-editor assistant governed by a central, environment-aware policy that sends only code, never message bodies, gated by RBAC.
AI-assisted migrationPaste existing Mirth / Cloverleaf / Rhapsody logic and the assistant helps you express it as Python — code-only and governed.
Test & verify
Interactive test benchSend / receive / file / compose / monitor tools for driving inbound and outbound endpoints by hand.
Headless scenario runnerAssert routing and transform behavior on every commit, in CI.
Test Bench dry-runs in VS CodeRun .hl7 files through a route with before/after diffs.
Synthetic HL7 generatorRealistic, PHI-free messages for load and edge-case testing.
check commit gateValidate configuration before it ships.
CI/CD
Pull-request reviewEvery interface change is a readable diff your team approves, with full history and instant rollback.
Build gatemessagefoundry check validates config and dry-runs messages, failing the build on a broken route before it merges.
Automated tests in CIA headless scenario runner asserts the engine's outcome on synthetic data in GitHub Actions, GitLab CI, Jenkins, or Azure DevOps.
Reproducible promotionOnly a reviewed, green change is promoted to each environment, so production matches git — no config drift.
Auditable by defaultReviewed, tested, timestamped change control, the way compliance already expects it.
Message store — three backends, one contract
SQLiteThe zero-config, single-node default — WAL, one file, no server to run. The baseline every other backend matches byte-for-byte.
PostgreSQLThe production server DB for high availability — a standby shares the store and takes over on primary failure via leader election, preserving strict per-destination FIFO ordering.
SQL ServerA first-class production backend at parity with PostgreSQL — the same staged pipeline, concurrency-safe claiming, row leases, and high-availability failover.
One Store contractThe same delivery model — dispositions, retries, replay, audit, encryption at rest, and retention/purge — runs across all three backends.
High availability
Active-passive failoverA standby promotes on primary failure; in-flight work resumes from the durable store.
No message lossFailover picks up from committed state, so nothing accepted is dropped.
Database-tier HAPostgreSQL streaming replication or SQL Server Always On availability groups back the store.
Runs in your environmentOn-premises, on your infrastructure, on your DR terms.
Deploy & operate
Windows service via NSSMInstall / uninstall scripts included.
Headless engineNo GUI imports; testable and runnable as a service.
One config, many environmentsDEV/PROD values layer over the same Python modules.
Operating systems & runtime
Windows Server 2022 / 2025The primary supported and serviced platform — Windows-service deployment via NSSM.
Windows Server 2019Supported.
Windows 10 / 11Supported for development, pilots, and as a console host.
Linux (modern x86-64)Engine supported (cross-platform Python); run it under systemd yourself — no bundled service installer.
macOSDevelopment and console use only.
Python 3.14+64-bit CPython 3.14; no C compiler needed for the default install.

Everything in this table ships in Early Access and is described in present tense as what the engine does. MessageFoundry started in May 2026 and is beta-level software under fast development; Early Access has not yet had an external code review or penetration test. For the full narrative behind each item, see the features page. Where the project stands →

Roadmap

Possible future additions

Not in Early Access. Listed here so the table above stays honest about today versus tomorrow.

Planned What it adds
Connectivity & standards
Inbound REST, SOAP & FHIR listenersAccept inbound web-service calls (including a FHIR server facade), complementing today's outbound REST / SOAP / FHIR destinations.
OAuth 2.0, SMART on FHIR & single sign-onOIDC/SAML and AD FS/Entra ID federation, plus passwordless Windows (Kerberos / SPNEGO) sign-on.
More databasesMySQL/MariaDB and Oracle as additional store backends.
Security & operations
Multi-engine console viewManage several engines from one console (CLI/API equivalents exist today).
Independent external reviewAn independent external code review and penetration test.

See it run for yourself