Metadata-Version: 2.4
Name: mkfix
Version: 0.1.0
Summary: FIX protocol testing engine built on mkio and mkui
Project-URL: Homepage, https://github.com/markuskimius/mkfix
Project-URL: Repository, https://github.com/markuskimius/mkfix
Project-URL: Issues, https://github.com/markuskimius/mkfix/issues
Author: Mark Kim
License-Expression: GPL-2.0-only
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Office/Business :: Financial
Requires-Python: >=3.11
Requires-Dist: mkio>=0.1.36
Requires-Dist: mkui>=0.1.10
Provides-Extra: test
Requires-Dist: pytest; extra == 'test'
Requires-Dist: pytest-aiohttp; extra == 'test'
Requires-Dist: pytest-asyncio; extra == 'test'
Description-Content-Type: text/markdown

# mkfix

A FIX protocol testing engine for capital markets connectivity, built on
[mkio](https://github.com/markuskimius/mkio) and
[mkui](https://github.com/markuskimius/mkui).

## Features

- **Session Management** -- Configure and run FIX sessions as initiator or
  acceptor. Multiple sessions on the same port with different CompIDs.
- **Raw Message Viewer** -- Real-time stream of FIX messages in tag=value format
  with filtering by session, direction, and category.
- **Translated Message Viewer** -- Human-readable view with field names, enum
  translations, and expandable detail rows.
- **Order Pad** -- Send NewOrderSingle, Cancel, and Cancel/Replace requests.
- **Order & Trade Blotters** -- Live order state machine driven by
  ExecutionReports; fill and partial fill records.
- **Message Replay** -- Load production FIX logs and replay them into a test
  session with speed control, message filtering, and pause/resume.
- **IOI & Allocation Viewers** -- Indications of Interest and Allocation message
  tracking.
- **Session Protocol** -- Logon, Logout, Heartbeat, TestRequest, ResendRequest,
  SequenceReset, GapFill, PossDupFlag handling, and heartbeat timeout detection.

## Installation

```bash
pip install mkfix
```

Or from source:

```bash
git clone https://github.com/markuskimius/mkfix.git
cd mkfix
pip install -e .
```

## Usage

```bash
mkfix                        # start with defaults (port 8080, mkfix.db)
mkfix -p 9090                # override port
mkfix -d mytest              # use mytest.db
mkfix -d :memory:            # in-memory database
mkfix myconfig.toml          # custom config file
```

Then open http://localhost:8080 in your browser.

## Quick Start

1. **Create two sessions** in the Session Manager -- one initiator pointing at
   the other as acceptor on the same port.
2. **Start both sessions** -- Logon and Heartbeat messages will stream in the Raw
   Messages pane.
3. **Send an order** from the Order Pad -- see it in Raw Messages, Translated
   Messages, and the Order Blotter.
4. **Replay a log** from Tools > Replay Control -- load a production FIX log and
   replay it into a test session.

## Configuration

mkfix uses a TOML config file (`mkfix.toml`). The built-in default is used when
no config is specified. Key settings:

```toml
port = 8080
host = "0.0.0.0"
db_path = "mkfix.db"
```

Tables, services, and static routes are also configured in the TOML file. See
the built-in `mkfix.toml` for the full schema.

## Dependencies

- [mkio](https://github.com/markuskimius/mkio) >= 0.1.36 -- async microservice
  framework (aiohttp + aiosqlite)
- [mkui](https://github.com/markuskimius/mkui) >= 0.1.10 -- Web Components UI
  framework

## License

GPL-2.0
