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-later | Open license — read it, run it, fork it. A low-cost commercial edition is available when the AGPL doesn't fit. |
| Configuration as code | Connections, Routers, and Handlers are diffable, reviewable modules — wizard-generated or hand-written. The database holds runtime state and messages only, never configuration. |
| Standard databases | Runs on SQLite, PostgreSQL, or SQL Server — no proprietary data platform required, and no proprietary scripting language to staff for. |
| No runtime or contract lock-in | Self-hosted, on your infrastructure, on your terms. |
| Reliability | |
| Durable before acknowledged | The 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 delivery | Every accepted message is persisted and delivered; nothing is silently dropped. |
| Ordered (FIFO) delivery | Messages to a given destination are delivered first-in, first-out, preserving per-connection sequence. |
| Per-outbound workers | Each destination drains independently; one slow or failing peer never blocks the others. |
| Automatic retries & failure policy | Back off and retry on a configurable policy, then dead-letter, with a bulk-replay view for recovery. |
| Replay | Re-drive a stored message through delivery from the console or API. |
| Automatic crash recovery | After a restart or crash, in-flight messages resume from the durable store with no manual cleanup. |
| Nothing silently dropped | Every message is persisted on ingest, then processed to a recorded disposition — routed, filtered, or unrouted. |
| Message formats | |
| HL7 v2, deeply parsed | Full 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. |
| FHIR | A FHIR codec with FHIRPath; create / update / transaction against a FHIR server (R4B default; R5 / STU3). |
| X12 / EDI | An on-demand X12 codec — tolerant routing peek, interchange splitting, and structured access. |
| JSON | One-call parsing to a dict, then transform with the full power of Python. |
| XML / SOAP | Read 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 payload | Carried byte-faithfully and routed, transformed, and delivered with the full power of Python — bring your own library. |
| Encoding read from the message | For HL7 v2, the field, component, repetition, escape, and subcomponent separators come from MSH, never hardcoded. |
| Raw message preserved | Kept alongside the transformed form, so an operator always sees exactly what arrived. |
| Parse failures isolated | Routed to the error / dead-letter path and logged, so a bad message never takes down the connection. |
| Connections | |
| MLLP | Correct 0x0B … 0x1C 0x0D framing, inbound and outbound, with ACK/NAK generation (AA / AE / AR) and a per-connection ack mode. |
| TCP | Raw stream endpoints. |
| X12 / EDI | ISA/IEA-framed X12 interchanges over TCP, inbound and outbound — paired with an on-demand X12 codec for structured access. |
| HTTP / REST | Deliver to modern REST APIs over HTTP(S). (An inbound REST listener is on the roadmap.) |
| SOAP | Deliver to legacy SOAP / WS web services. (An inbound SOAP listener is on the roadmap.) |
| FHIR REST destination | Create / 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 — local | Read from and write to local directories, with templated output names (e.g. {MSH-10}.hl7). |
| SFTP / FTP / FTPS | Remote file transfer, inbound and outbound. |
| Database | Poll records in and write results out. |
| DICOM imaging | C-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 invariant | Every 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 filtering | Fan a message out to multiple destinations, or filter it out entirely; every decision is a recorded outcome. |
| Transform, enrich, validate | Reshape 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 lookups | Query a live database during processing to enrich or validate a message. |
| Guided wizards or pure functions | New 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 diff | Preview a route's effect on a real message before it ships. |
| Security & PHI | |
| Authentication | Local accounts and Active Directory (LDAP) sign-in, with opaque, revocable sessions. |
| Multi-factor authentication | Built-in, required TOTP multi-factor authentication for local accounts. |
| RBAC | Fixed built-in roles, deny-by-default, with per-route and per-channel scoping. |
| Localhost-bound API | The API binds 127.0.0.1 by default and requires authentication. |
| TLS in transit | The 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 log | A hash-chained, user-attributed record of every PHI access (raw view, summary, replay), with a verification command. |
| Off-box log & audit forwarding | Operational and audit logs forward to your syslog or SIEM collector. |
| Encryption at rest | Message bodies are encrypted with AES-256-GCM in the store. |
| Retention & purge | Keep messages as long as policy requires, then purge on a configurable schedule. |
| Tooling — console, editor & CLI | |
| Admin console | Dashboards, 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 extension | Completion, 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 API | messagefoundry serve exposes connection control, message search/detail, replay, stats, and a live WebSocket feed; check gates commits and generate produces synthetic HL7. |
| Alerting | Webhook and email alerts when a connection stalls or a message dead-letters. |
| Metrics export | A Prometheus / OpenTelemetry-compatible /metrics endpoint (access-controlled) for scraping engine and connection metrics into your monitoring stack. |
| Hot-reload & environment promotion | Configuration hot-reload, with DEV/PROD values layering over the same modules. |
| ACK modes & guards | Configurable ACK modes plus message-size and segment guards. |
| Authoring & AI assist | |
| Setup wizards | Guided 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 assistance | An in-editor assistant governed by a central, environment-aware policy that sends only code, never message bodies, gated by RBAC. |
| AI-assisted migration | Paste existing Mirth / Cloverleaf / Rhapsody logic and the assistant helps you express it as Python — code-only and governed. |
| Test & verify | |
| Interactive test bench | Send / receive / file / compose / monitor tools for driving inbound and outbound endpoints by hand. |
| Headless scenario runner | Assert routing and transform behavior on every commit, in CI. |
| Test Bench dry-runs in VS Code | Run .hl7 files through a route with before/after diffs. |
| Synthetic HL7 generator | Realistic, PHI-free messages for load and edge-case testing. |
check commit gate | Validate configuration before it ships. |
| CI/CD | |
| Pull-request review | Every interface change is a readable diff your team approves, with full history and instant rollback. |
| Build gate | messagefoundry check validates config and dry-runs messages, failing the build on a broken route before it merges. |
| Automated tests in CI | A headless scenario runner asserts the engine's outcome on synthetic data in GitHub Actions, GitLab CI, Jenkins, or Azure DevOps. |
| Reproducible promotion | Only a reviewed, green change is promoted to each environment, so production matches git — no config drift. |
| Auditable by default | Reviewed, tested, timestamped change control, the way compliance already expects it. |
| Message store — three backends, one contract | |
| SQLite | The zero-config, single-node default — WAL, one file, no server to run. The baseline every other backend matches byte-for-byte. |
| PostgreSQL | The 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 Server | A first-class production backend at parity with PostgreSQL — the same staged pipeline, concurrency-safe claiming, row leases, and high-availability failover. |
| One Store contract | The same delivery model — dispositions, retries, replay, audit, encryption at rest, and retention/purge — runs across all three backends. |
| High availability | |
| Active-passive failover | A standby promotes on primary failure; in-flight work resumes from the durable store. |
| No message loss | Failover picks up from committed state, so nothing accepted is dropped. |
| Database-tier HA | PostgreSQL streaming replication or SQL Server Always On availability groups back the store. |
| Runs in your environment | On-premises, on your infrastructure, on your DR terms. |
| Deploy & operate | |
| Windows service via NSSM | Install / uninstall scripts included. |
| Headless engine | No GUI imports; testable and runnable as a service. |
| One config, many environments | DEV/PROD values layer over the same Python modules. |
| Operating systems & runtime | |
| Windows Server 2022 / 2025 | The primary supported and serviced platform — Windows-service deployment via NSSM. |
| Windows Server 2019 | Supported. |
| Windows 10 / 11 | Supported 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. |
| macOS | Development 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 →
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 listeners | Accept 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-on | OIDC/SAML and AD FS/Entra ID federation, plus passwordless Windows (Kerberos / SPNEGO) sign-on. |
| More databases | MySQL/MariaDB and Oracle as additional store backends. |
| Security & operations | |
| Multi-engine console view | Manage several engines from one console (CLI/API equivalents exist today). |
| Independent external review | An independent external code review and penetration test. |