Feature list
Every feature, in one table
Find Early Access capabilities by area. The features page explains how they work. Future additions are listed separately below.
| Feature | What it does |
|---|---|
| Open source & no lock-in | |
| AGPL-3.0-or-later | Read, run, and modify under AGPL-3.0-or-later. A commercial license offers different terms. |
| Configuration as code | Keep wizard-generated or handwritten Connections, Routers, and Handlers in version control. The database holds runtime state and messages. |
| Standard databases | Choose SQLite, PostgreSQL, or SQL Server. |
| No runtime or contract lock-in | Run on your own servers or in your private cloud. |
| Reliability | |
| Durable before acknowledged | Acknowledge inbound messages after committing them to the store, so accepted messages survive a crash before processing. |
| Reliable delivery | Store accepted messages and track delivery or a recorded outcome. |
| 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 | Parse non-conformant HL7 messages. Enable strict, version-aware validation for selected feeds. |
| 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 | Parse JSON into a dictionary, then transform it in 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 | Preserve raw bytes and use Python libraries to route, transform, and deliver other formats. |
| 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. |
| Optional AI assistance | Sends code and configuration names to your provider, under central policy and role-based access. Keep patient data and secrets out of that context. |
| AI-assisted migration | Draft Python from existing Mirth, Cloverleaf, or Rhapsody logic. Review and test the result before cutover. |
| 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. |
MessageFoundry started in May 2026 and is beta-level software under fast development. Independent code review and penetration testing are planned. Read the project status →
Roadmap
Possible future additions
These additions are outside the Early Access feature set.
| 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. |