A high-performance FIX (Financial Information eXchange) workstation suite for developers, testers, and quants.
One scripting engine, one protocol engine, two user interfaces. Both MXGUI and MXShell are thin front-ends over the same deterministic core, ensuring identical behavior whether you are debugging interactively or running automated CI tests.
mxgui-demo.mp4
| Live Session Monitor | Message Inspector |
![]() |
![]() |
| Dictionary Browser | Script Runner |
![]() |
![]() |
| Message Diff | Offline Toolbox |
![]() |
![]() |
MicroFIX includes first-class Light and Dark themes.
| Dark | Light |
|---|---|
![]() |
![]() |
Developing FIX applications often means switching between packet captures, text logs, XML dictionaries, and ad-hoc test scripts. MicroFIX brings everything together in a single native application, combining live monitoring, message inspection, scripting, and protocol tooling into one consistent workflow.
- Test FIX Venues: Simulate counterparties and validate raw FIX logs.
- Inspect Deeply: Visual tree views for repeating groups and side-by-side message diffs.
- Automate Reliably: Deterministic scripting with
wait,expect, assertions, and variable injection. - Continuous Logging: Live log streaming that remains uninterrupted even during session reconnects and resets.
- Explore Dictionaries: Browse message and field definitions with one-click message sampling.
- Offline Utilities: Offline toolbox for decoding, validation, comparison and message generation.
- Native desktop application (no Java, no Electron)
- Interactive CLI with scripting support
- Deterministic scripting
- Offline FIX toolbox
- Interactive FIX dictionary browser
- Custom FIX XML support
- Shared engine between GUI and CLI
- First-class Light and Dark theme support
Download the latest pre-compiled binaries from the Releases page, or install directly via Go:
go install github.com/Infinage/microfix/cmd/mxshell@latest
go install github.com/Infinage/microfix/cmd/mxgui@latest
Desktop GUI (mxgui) (Requires CGO & WebKitGTK on Linux / macOS support via Wails v3):
go build -tags desktop,production -ldflags="-s -w" -o mxgui ./cmd/mxgui
CLI (mxshell):
CGO_ENABLED=0 go build -ldflags="-s -w" -o mxshell ./cmd/mxshell
Get connected and send your first message in 2 minutes.
Both mxshell and mxgui automatically load configuration from:
~/.mxrc
./.mxrc
If neither file exists, MicroFIX starts with sensible defaults.
By default, MicroFIX uses:
| Setting | Default |
|---|---|
| SenderCompID | SENDER |
| TargetCompID | TARGET |
| FIX Version | FIX44 |
| Heartbeat Interval | 30s |
| Listen Address | 0.0.0.0:1234 |
| Script Timeout | 5s |
| Validation Mode | Strict |
You can modify the configuration:
- MXGUI: Session Settings page
- MXShell:
configcommand - Manually: Edit
~/.mxrc
$ mxshell
# Connect to the target defined in config
mxshell> connect
# Send a raw message
mxshell> send 35=A|98=0|108=30|
# Print the logs
mxshell> logs- Manual Light & Dark Themes: Choose the appearance that suits your preference.
- Live Session Monitor: Zero-lag log streaming via Server-Sent Events capable of handling thousands of messages.
- Interactive Message Diff: Compare FIX messages side-by-side to instantly spot protocol differences.
Expand repeating groups, inspect components, and compare FIX messages side-by-side with decoded tag names and metadata.
Search by tag, field name, message type, or component directly from the official FIX XML specs.
mxshell-demo.mp4
- Smart REPL: Command history, arrow-key navigation, and smart auto-completion.
- Headless Automation: Execute batch
.mxsscripts for CI/CD pipelines. - Log Management: Live log streaming, regex searches, and file export.
- Alias support: Reusable FIX templates with macro support
Messages sent from both MXGUI and MXShell support the same expression and macro substitution engine.
Scripts can be executed directly from MXGUI or MXShell using the exact same deterministic engine. Wait for and assert on specific message criteria using boolean logic:
connect
waitstatus Active
set VARS.counter 0
set VARS.max_orders 5
# Execute a batch of orders and verify acknowledgments
while assert $VARS.counter < $VARS.max_orders
# Route order with a dynamically generated ClOrdID
send 35=D|11=$UNIQUE|55=AAPL|54=1|38=100|40=2|
# Wait for the Execution Report (Order ACK)
if wait "35=8 & 39=0"
print Order $VARS.counter acknowledged with ExecID: $BUF.17
incr VARS.counter
sleep 500
else
print ✗ Order acknowledgment timed out!
disconnect
exit
endif
endwhile
print ✓ Successfully routed $VARS.counter orders.
disconnect
mxgui-script-runner-demo.mp4
Additional sample scripts (acceptor/client test harnesses, order routing examples, etc.) are available in the scripts/ folder.
Inject dynamic values into scripts, CLI commands, or GUI inputs using the $ prefix.
| System & State | Context & Store |
|---|---|
$UNIQUE (Random UUID) |
$CFG.<key> (Config values) |
$TIMESTAMP (UTC YYYYMMDD-HH:MM:SS) |
$VARS.<key> (Script-defined values) |
$DATE[+N] (Date offset by N days) |
$ALIAS.<name> (Saved aliases) |
$STATUS (Session State) |
$ENV.<name> (Environment variables) |
$SEQ_IN / $SEQ_OUT |
$LASTIN[T,t,n] / $LASTOUT[T,t,n] (Instance n of Tag t from last MsgType T) |
Aliases allow frequently used FIX messages to be reused with parameter substitution.
# Define the alias
set $ALIAS.AAPL 35=D|55=AAPL|54=1|38=500|40=2|
# Invoke it in MXShell
send -a AAPL
# Invoke in scripts
send $ALIAS.AAPL- Dictionary based validation: MicroFIX supports multiple validation levels (None, Basic, Strict) backed by custom XML dictionaries.
- Automatic Admin Handling: Automatically manages Logon, Logout, Heartbeats, Test Requests, and Sequence Resets.
- Flexible Input: Paste raw
35=D|55=AAPL|...and MicroFIX converts delimiters, computesBodyLength, and calculatesCheckSumon the fly. - Consistency: Both MXGUI and MXShell use the exact same parser, validator, scripting engine, and session implementation.
MicroFIX is fully dictionary-driven. It supports standard FIX versions natively and can load custom XML dictionaries for venue-specific extensions or proprietary dialects.
Use the following exact values to load the internal dictionaries:
| Protocol | Spec Config Value |
|---|---|
| FIX 4.0 | FIX40 |
| FIX 4.1 | FIX41 |
| FIX 4.2 | FIX42 |
| FIX 4.3 | FIX43 |
| FIX 4.4 | FIX44 |
| FIXT 1.1 | FIXT11 |
| FIX 5.0 | FIX50 |
| FIX 5.0 SP1 | FIX50SP1 |
| FIX 5.0 SP2 | FIX50SP2 |
Custom Dictionaries: You may also provide an absolute or relative path to a custom XML file if your venue requires a modified dialect.
MicroFIX scripts are deterministic and designed to run headless inside CI pipelines. If a wait, expect, or assert command fails, mxshell immediately exits with a non-zero status code, failing your pipeline build.
Example GitHub Actions Workflow:
name: FIX Protocol Regression
on: [push]
jobs:
test-fix-flows:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install MicroFIX
run: go install github.com/Infinage/microfix/cmd/mxshell@latest
- name: Run Order Flow Test
run: mxshell -f tests/new_order_single.mxscmd/mxgui Desktop GUI application and script runner
cmd/mxshell Interactive CLI REPL and headless automation
pkg/session Core engine utilizing an actor model to power FIX sessions
pkg/executor Script parsing and evaluation API invoked by both frontends
pkg/ast Abstract Syntax Tree powering flexible `wait`/`expect` expressions
pkg/macros Dynamic variable substitution engine
pkg/message FIX message structures powering the entire suite
pkg/spec XML dictionary parser providing schema data structures
pkg/store In-memory state management (configs, variables)
pkg/broker Pub/sub event broker handling smooth log streaming and reconnects
pkg/ringbuf Efficient circular buffer for CLI log history
pkg/transport Low-level TCP/network API utilized by the session engine
pkg/pretty Console formatting utilities
- Script debugger with LSP-like support
- Replay recorded FIX sessions
- Multiple simultaneous sessions
- Performance improvements
Contributions, bug reports, and feature requests are welcome!
If you work with FIX every day and want a faster alternative to heavyweight legacy tooling, give MicroFIX a try. If you are interested in FIX tooling or high-performance Go development, feel free to open an issue or submit a pull request.
MicroFIX is built using Go, Wails, HTMX, and Tailwind CSS.
MIT License








